------------------------Oracle 的SQL 语法--------------------------=======================第(1,2)章 结 合 语 句==========================》1:创建表空间create tablespace 表空间名datafile'存放文件的路径_空间名_.dbf' size 30m;》2: 分配权限grant 权限| 角色 to 用户名》3: 创建用户create user 登陆名 identified by 密码grant connect , resource to 登陆名》4:创建唯一索引create unique index index_列_empon on 表名 (列);》5:创建序列create sequence 自定义表名 start with 1 increment by 1;》6: 查看当前序列的值select seql.currval from 表名》7:创建私有同义词create synonym e(自己定义的一个) for 表名;》8: 创建共有同义词create public synonym e for 表名;》9: 给某个用户访问的权限,可以访问该同义词grant select on e to 用户名;》10: 创建大写函数索引Create index index_ename on 表名 (upper(列));》间隔分区create table 表名partition by range (列)interval (numtoyminterval(3,'month'))(partition p1 values less than (to_date ('2013-04-01','yyyy-mm-dd')))asselect * from 表名=====================第(3)章 的 SQL 语 句=======================================PL/SQL 块可执行部分 其中变量语法如下:》1:声明变量declarev_name varchar2(20);》2: 声明和赋值declarev_Names varchar2(20):='战三';》3:循环控制---------------(1)Loop循环语法:LoopEXIT Where ---条件满足,退出END Loop;-------------(2)WHILE 循环语法:WHILK Loop要执行的语法END Loop;》4:输出语句dbms_ output.put_line ('您要输出的内容 , ZZZ.....想睡觉了.....');》5: 游标声明,打开,提取,关闭 (例子)declarecursor em_cursor isselect 列 from 表名 where (条件);--声明两个变量v_name employee name%type;v_sal employee%type;beginopen em_cursor ;--打开游标loopfetch em_cursor into v_name,v_sal --提取游标(提取行)exit when em_cursor%notfound; --判断游标是否为空,就退出dbms_output.put_line(v_name||v_sal); --输出两个变量endloop; --循环提取close em_cursor; --关闭游标end;》6: 循环游标取数据for i in 游标名 loopdbms_output.put_line('用户信息:'||i.userid||'-------'||i.username);(直接 i 不可取 i为对象)end loop;=========================第(4)章 的 SQL 语 句=======================================》1: 通过游标修改数据declarecursor userinfo is select * from t_user for update;v_name varchar2(50);beginfor i in userinfo loopv_name :=i.username;update t_user set username='王五' where current of userinfo;dbms_output.put_line('用户信息:'||i.userid||'-------'||i.username);end loop;commit;end;》2: 创建存储过程create or replace procedure usertestiscursor userinfo is select * from t_user;beginfor i in userinfo loopdbms_output.put_line('用户信息:'||i.userid||'-------'||i.username);end loop;end;》3: 调用存储过程exec usertest;call usertest();beginusertest;end;》4: 存储过程修改数据create or replace procedure usertest(v_name varchar2)isbeginupdate t_user set username=v_name where userid=1;if v_name is null then raisecommit;exceptionwhen others then rollback;end;exec usertest('zhangsan');》5: 过程中的参数--在过程中,in修饰的参数,不允许在过程中给它赋值create or replace procedure usertest(v_name in varchar2,v_pwd out varchar2,v_show in out varchar2)isv_hello varchar2(50);begin-- v_name := 'name';v_pwd := 'pwd';v_show := 'show';v_hello := 'hello';dbms_output.put_line('信息:'||v_name||'-------'||v_pwd||'-------'||v_show||'-------'||v_hello);end;declarevp varchar2(50);vs varchar2(50);beginvs := 'cccccc';usertest('aaaaaaa',vp,vs);end;》5: 存储过程的语法create or replace procedure 过程的名字(参数1 in/out 没有长度的类型,参数2 in/out 没有长度的类型) is过程中需要用的参数名 可以指定长度的类型;begin过程的内容end;》6: 变量的类型的另外一种写法--in传递的参数,长度由外部控制--out传递的参数,长度由内部控制create or replace procedure usertest(v_name in t_user.username%type,v_num in t_user.userid%type)isv_hello t_user.username%type;beginv_hello := 'hello';dbms_output.put_line('信息:'||v_name||'-------'||v_num||'-------'||v_hello);end;declarevp varchar2(50);vs number;beginvs :=11111111111111111111;usertest('aaaaaaa',vs);end;》7: 定义外部变量var vnum number;var vid number;var vname varchar2(50);exec :vnum:=23;exec :vid:=4;exec :vname:='wangwu';exec userinfo(:vid,:vname,:vnum);create or replace procedure userinfo(vid t_user.userid%type,vname t_user.username%type,vnum out t_user.userid%type)isbeginvnum :=vid;dbms_output.put_line('信息:'||vid||'-------'||vname||'--------'||vnum);end;》 8: 创建函数create or replace function funuserreturn varchar2 isv_id number(8);uname t_user.username%type;beginv_id := 3;select username into uname from t_user where userid=v_id;return uname;end;declarevname varchar2(50);beginvname :=funuser;dbms_output.put_line('vname:'||vname);end;call funuser() into :vname;print vname;》 9: 创建包的规范create or replace package user_pkgisprocedure userselect(v_id t_user.userid%type,v_name t_user.username%type);function getname return varchar2;end;》10: 创建包的内容create or replace package body user_pkgisprocedure userselect(v_id t_user.userid%type,v_name t_user.username%type)isvn varchar2(50);beginupdate t_user set username=v_name where userid=v_id;commit;dbms_output.put_line('v_name:'||v_name);end;function getname return varchar2isvname varchar2(50);beginselect username into vname from t_user where userid=3;return vname;end;end;----exec 为调用存储过程exec user_pkg.userselect(3,'lisi');call user_pkg.getname() into :vname;print vname;※ 11: 创建视图create or replace view empdeptasselect e.empno,e.ename,e.job,e.mgr,e.sal,e.hiredate,e.comm,d.dname,d.locfrom emp e,dept dwhere e.deptno=d.deptnowith read only (这为把值设为只读);update empdept set ename='world' where empno=7369;create or replace view deptviewasselect * from emp where deptno=20with check option;update deptview set ename='world' where empno=7369;update emp set deptno=10 where empno=7369;》 12 : 创建数据库链create database link mylinkconnect to tt identified by ttusing '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = jiahua)))';select * fromcompany@mylink;》13: 创建触发器--当dept表(deptno=10)的loc的deptno改为BJ的时候,修改相关的emp表的ename=BJcreate or replace trigger updateempafter update of loc on dept for each rowbeginupdate emp set ename='BJ' where deptno=10;end;
oracle sql语句 只读,Oracle_SQL语句
最新推荐文章于 2021-04-07 23:49:46 发布