注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

韬光养晦

路漫漫其修远兮,吾将上下而求索

 
 
 

日志

 
 

Oracle 点滴  

2008-07-29 16:24:58|  分类: MSE learning |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在学习Oracle之前,我已经对mysql和sql有了比较熟悉的理解。

1 oracle sqlplus输入scott/tiger报错:the account is locked的解决办法:请输入用户名: SYSTEM,输入口令:pwd(注意,这个密码是你在安装oracle时第一步设置的,也可以sqlplus sys/password as sysdba).登录成功之后再输入alter user scott account unlock;
2 登录oracle的sqlplus有三种方式:sqlplus命令,图形sqlplus,服务http://127.0.0.1:5560/isqlplus.
3 select 2*3 from emp;则会返回emp行数个6,若只想返回一个6,可用select 2*3 from dual,还有select sysdate from dual等等。dual表是一个特殊的表,其中只有一个数据DUMMY为varchar2(1)型。
4 varchar2()比varchar()好的地方在于能够自动识别各种字符集的字符。char()为定长字符串。
5 select ename,sal*12 abc from emp自动将sal*12重命名为大写的ABC,若想保持小写或者重命名字符串中有空格,可用双引号:select ename,sal*12 "a b c" from emp;
6 select ename||sal from emp将ename和sal以字符串的形式连接并输出。select ename||'abcdefg' from emp同样。若字符串‘abcdefg‘之间有引号,则用语句中两个单引号代替内部的一个单音号:select ename||'abcd''efg' from emp.
7 任何和空值进行的运算都是空值。可用nvl(comm,0)将是null值的comm替换为0。
8 消去重复的查询结果,用distinct关键字。select distinct depno from emp; distinct 修饰多个属性的时候,表示消去重复的这些属性的组合。
9 日期比较的一种方法:select ename from emp where hiredate >'29-7月-08',其中的日期格式按照sysdate的格式书写。注意其中的年份也可以写成四位,月份前面不能加0(例如7月写成07月).
9 表示不等于用<>:select ename,sal from emp where deptno <> 10;
10 模糊搜索时候的通配符:_表示一个字符,%表示任意多个字符,默认用\作为转义字符。指定转义字符用escape来指定:select ename from emp where ename like '%$%' escape '$'; 其中就用escape指定了$为转义字符。
11 SQL单行函数:lower(ename),将ename转为小写。upper(ename),将ename转为大写。substr(ename,2,3),将ename的第二到第四个字符的子字符串给出。chr(65),将65转化为ASCII编码对应的字符,这里为A。ascii('A'),于chr(65)相逆,这里输出65。round(12.5),返回13。round(12.561),返回12.6。round(12.561,-1),返回10。to_char(sal,'$99,999,9999'),将货币转换为类似$1,250.0000形式,第二个参数为正则表达式,9表示一个字符,没有则不显示,0表示一个字符,没有则用0替代,若用L替代$,则返回本地货币符号¥。to_char(sysdate,'YYYY-MM-DD HH:MI:SS'),转换系统时间显示格式为2008-07-31 09-22-45的格式,若用HH24替代HH,则为二十四制式时间。to_date('2008-07-31 09-22-45','YYYY-MM-DD HH:MI:SS'),将字符串给定的时间按照模式转换为date格式。to_number('$1,250.000','$9,999,999'),将字符串按照给定的模式转换为数字。
12 SQL集函数:max(sal),min(sal),avg(sal),sum(sal),count(*).总共只有这五个集函数。
13 当使用集函数或者groupby的时候,因为输出的结果要求是唯一值,因此如果select后的属性输出值可能不仅仅是一行的话,就会出现错误。where关键字限值单条记录的条件,而having关键字限值分组的条件。
14 闲置输出行数用rownum<5,rownum是一个隐藏的属性,自动被添加到选择出的结果。但是不能使用rownum大于或者等于某个数值来作为条件。若要实现从第m行到第n行的结果输出,可以先将rownum重命名,显示输入到一个表中,然后在从那个表中进行选择。
15 当在sqlplus下要用另外一个帐户登陆时,可以直接输入conn username/password,例如登陆为DBA可用conn sys/password as sysdba;
16 删除一个用户drop user username cascade;
17 将一个用户的表和权限等等所有的东西导出并且拷贝给另外一个用户(将scott的拷给lanvis帐户):
     (1)在命令行下执行exp命令,然后会要求输入scott的用户名和密码,即将scott的相关信息到处到当前目录下。
     (2)用dba身份在sqlplus中执行如下语句以创建新用户lanvis:create user lanvis identified by lanvis default tablespace users quota 10M to users;其中第二个lanvis为密码。执行一下语句为lanvis赋予权限:grant  create session,create table,create view to lanvis;
     (3)在命令行下执行imp命令,然后输入要导入到的帐户和密码,这里为lanvis帐户,指定输入文件为刚才exp到处的文件,半途会要求输入scott的用户名,最后导入就成功了。
18 创建和插入可以有如下的语句:create table dept2 as select * from dept, insert into dept2 select * from dept;
19 Transaction起始于一个DML语句,终止于rool back、commit、一条非DML语句(自动commit)、exit或者非正常退出。roll back  命令可以起到回滚的作用。
20 创建表时候的约束分为五种:not null,unique,primary key,foreign key,check.以下为一个建表语句create table stu(id number(6),name varchar2(40) constraint stu_name_nn not null,sex  number(1),age number(3),sdate date,grade number(2) default 1,class number(4) references tclass(id),email varchar2(50),constraint stu_name_email_uni unique(name,email));其中的stu_name_nn和stu_name_email_uni 是为约束起的名字。其中第一个constraint为字段级约束,第二个constrain为表级的约束。unique允许多个null的存在。其中的外键约束也可以写为表级的约束:constraint stu_class_fk foreigh key(class) references tclass(id).外键约束被参考的字段必须是主键。
21 修改表结构示例:alter table stu add(addr, varchar(500));  alter table stu modify (addr varchar(100));  alter table stu drop (addr);删除约束条件用:alter table stu drop constraint stu_class_fk;添加约束条件用:alter table stu add constraint stu_class_fk foreign key (class) references class(id);
22 数据字典以及数据字典表:当前用户下的表、视图、约束等信息都存放于数据数据字典表中,例如user_tables, user_views, user_constraints等等。例如查看当前用户的所有表名:select table_name from user_tables;类似有select view_name from user_views; select constraint_name from user_constraints;另外到底有多少张数据字典表的信息存放在表dictionary中。可以:select table_name from dictionary;
23 索引:索引能够使得读数据更快,修改数据变慢。创建索引create index idx_stu_email on stu(email); create index idx_stu_email_class on stu(email,class);后者为(email,class)组合创建索引。删除索引:drop index idx_stu_email;可以在user_indexes表中查看当前用户拥有的索引。
24 视图:视图能够简化查询,屏蔽敏感字段,增加维护开销。创建试图:create view v$_stu as select id,name,age from stu;其中v$_stu为视图名称。一般来说不常用用视图来更新数据。
25 序列:序列(sequence)是Oracle 中特有的概念,SQL Server和mysql中有另外的概念类似。sequence用来产生一个递增的数,这个数可以用于一些表的主键,并且在应用中是线程安全的。创建sequence: create sequence seq;另外可以指定起始值和递增值:create sequence seq start with 1 increment by 2;这样当每次使用seq.nextval时, seq.nextval就会自动增加。例如:select seq.nextval from dual;
  评论这张
 
阅读(506)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018