oracle 語法命令備忘

[/color][color=green]1.利用现有的表创建新表:
  create table <new_Table> as select {*|colunm} from 旧表name
  如果加入where 1=2 则不包含数据表中的数据。
2. 日期函数
  2.1〉ADD_MONTHS:返回给指定的日期加上指定月数后的日期值 格式:  add_months(d,n)其中 d 是日期,n 是月数 例:
select emp_date,add_months(emp_date,2) from emp;
  2.2> MONTHS_BETWEEN :返回两个日期之间的月数 格式:months_between(d1,d2)
  2.3> LAST_DAY: 返回指定日期当月的最后一天的日期值 格式:last_day(d)
  2.4> ROUND: 返回日期值,此日期四舍五入为格式模型指定的单位 格式: round(d, [fmt])  例: round('2009-05-05','day或year或month')
  2.5> NEXT_DAY: 返回指定的下一个星期几的日期 格式:next_day(d,day)
   例:next_day(sysdate,'星期一')
  2.6> TRUNC:将指定的日期截断为由格式模式指定的单位日期
    例:trunc('2005-08-27','year') 截断后为2005-01-01 按年截断
     trunc('2005-08-27','day') 截断后为2005-08-20 按周截断
   2.7> EXTRACT: 提取日期中特定部分 例:
   extract(year from sysdate) year可以替换成month,day,hour等
3.执行一个sql脚本命令:start file_name或 @file_Name
4.回滚:ROLLBACK 提交commit
5.是否显示用dbms_output.put_line包进行输出的信息:
  set serverout {on|off}
6.连接到指定的数据库:
connect user_name/password @数据库名
7.创建表空间语法:
create TABLESPACE 表空间名 DATAFILE '文件名称路径'
size 10M AutoEXTEND ON;
例:create tablespace testSpace
    datafile 'd\oracle\data\testSpace.dbf'
    size 10M
    Autoextend on;
autoextend on用来启用和禁用数据文件的自动扩展
8.创建新用户并授权
8.1> create user 用户名 IDENTIFIED BY 密码
       [default 表空间名][temporary 临时表空间]
8.2> GRANT CONNECT TO 用户名
       即授权给此用户连接权限并可以建立表
格式 : grant 关键字 to 用户
8.3>撤销用户权限:
      revoke {update|关键字} on 表名 from 用户名;
9. 修改用户口令:
alter user 用户名 identified by 新密码
10.删除拥有模式对象的用户:drop user 用户名 cascade;
11.oracle中的伪例:
  11.1>rowid :返回该行地址,可以使用rowid来定位表中的一行
  11.2>rownum:即第一行为1第二行为2,以此类推
  例:select rowid,列名 from 表 where ....
     select * from 表 where rownum<11
12.添加列或修改
12.1> alert table table_name add (column type);
12.2> alert table table_name drop column;
12.3> alert table table_name modify(column type)
13.删除表命令:
  13.1>truncate table table_name
即删除表中所有数据,但保持表结构,无法回滚,速度快于delete
  13.2>delete table table_name 可以回滚,其他同上,速度慢过truncate
13.3>drop table table_name 即删除表和所有数据
14.select 中的关键字
  distinct:只返回不同的列值
例:select distinct column from table_name;
15.创建序列命令:
create sequence 序列名
[start with integer]-- 第一个序列号
[increment by integer]-- 序列号的间隔
[maxvalue integer|nomaxvalue] --序列号最大值 nomaxvalue默认
[minvalue integer|nominvalue] --最小值
[cycle|nocycle] --cycle指定序列在到达最大或最小值后将继续从头开始生成
[cache integer|nocache] --预选分配一组序列,可不写,默认分配20个
  15.1>访问序列关键字:
   nextvalue:返回序列的下一个值
   currval:返回序列当前值
   例:select 序列名.currval from dual;
16.创建视图:create or replace view 视图名
as select ....
[with check option[constraint constraint]] --指定只能插入或更新视图可以访问的行
[with read only]--确保在此视图中不能进行任何操作
17.创建索引命令
create index index_name on table_name(column)
[tablespace tablespace_name] --指定表空间
18.>语法:if-then--else
  IF condition THEN
 Statements 1;
 Statements 2;
 ....
  END IF
/****************
IF..THEN...ELSE
语法:
IF condition THEN
 Statements 1;
 Statements 2;
 ....
ELSE
 Statements 1;
 Statements 2;
 ....
END IF 

  如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。

  IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。

if (a>b) and (a>c) then
  g:=a;
else
  g:=b;
  if c>g then
   g:=c;
  end if
end if

  IF..THEN..ELSIF

  语法:

IF condition1 THEN
 statement1;
ELSIF condition2 THEN
 statement2;
ELSIF condition3 THEN
 statement3;
ELSE
 statement4;
END IF;
 statement5;
如果条件condition1为TRUE则执行statement1,然后执行statement5,否则判断condition2是否为TRUE,若为TRUE则执行statement2,然后执行statement5,对于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么将执行statement4,然后执行statement5。

19.case语法:case '...' when.....then.....else...end case;
20.创建过程和函数create or repcace procedure 过程名[(parm1,parm2,...)]
{is|as}
[此处可以声明变量]
begin  ......... end 过程名
21.函数function
create or repcace function function_name[(parm1,...)]
return type---返回类型
{is|as}
[声明变量]
begin .....end function_name
22.声明显示游标:
cursor cursor_name[(parm1,parm2)]
[return 行类型] is select .....
控制游标使用:
open:打开游标
fetch:用于从游标中提取行数据
例:fetch 游标名 into 变量
close:关闭游标
逻辑运算符  and or 例:if(...and ...)....
23.查询多列合并为一列使用:
select colum1||colum2 from table_name
或者 select concat(colum1,colum2) from table_name
引用
1. 内联结:将两个表中存在联结关系的字段符合联结关系的那些记录形成记录集的联结。

2. 外联结:分为外左联结和外右联结,
        左联结A、B表的意思就是将表A中的全部记录和表B中联结的字段与表A的联结字段符合联结条件的那些记录形成的记录集的联结,这里注意的是最后出来的记录集会包括表A的全部记录。

右联结A、B表的结果和左联结B、A的结果是一样的,也就是说:

Select A.name B.name From A Left Join B On A.id=B.id

和Select A.name B.name From B Right Join A on B.id=A.id执行后的结果是一样的。

          3.全联结:将两个表中存在联结关系的字段的所有记录取出形成记录集的联结(这个不需要记忆,只要是查询中提到了的表的字段都会取出,无论是否符合联结条件,因此意义不大)。

        4.内外联结的区别是内联结将去除所有不符合条件的记录,而外联结则保留其中部分。外左联结与外右联结的区别在于如果用A左联结B则A中所有记录都会保留在结果中,此时B中只有符合联结条件的记录,而右联结相反

你可能感兴趣的:(数据结构,oracle,C++,c,C#)