设为首页 收藏本站
查看: 630|回复: 0

[经验分享] oracle 語法命令備忘

[复制链接]

尚未签到

发表于 2016-7-31 12:04:01 | 显示全部楼层 |阅读模式
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中只有符合联结条件的记录,而右联结相反

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-251486-1-1.html 上篇帖子: oracle检查点系列:checkpoint小议 下篇帖子: Oracle中的INTERVAL数据类型详解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表