oracle笔记
//创建用户 1.用系统管理员登陆 2.create user 用户名 identified by 密码 3.授权 grant connect to 用户名 //授予连接权限 grant resource to 用户名 //授予基本权限 show user; //查看当前用户 clear screen; //清屏 conn system/密码 as sysdba; //更换用户 conn orcle用户/用户密码; //断开连接,然后再为指定的用户建立连接 alter user 用户名 account unlock; //解锁 alter user 用户名 identified by 新密码; //设置新密码 drop user 用户名 //删除用户(必须SYSTEM用户下) grant 权限 on 表名 to 用户名; //设置权限 //如果使用了“with grant option”来授予用户权限,则接受该权限的用户可以将此权限继续授予其他用户 revoke 权限 on 表名 from 用户名; //撤销权限 //可以使用ALL关键字来授予所有对象权限 select table_name from user_tables; //查看当前用户所有表名 desc 表名; //显示表结构 constraint 约束名 check(列名约束) //check约束 constraint 约束名 foreign key(本表列名) references 外表名(外表列名) //外键约束 alter table 表名 add 列名 列名类型; //向表中增加一个新列 alter table 表名 modify 列名 列名类型; //修改表中指定列的数据类型与类型长度 alter table 表名 drop column 列名; //删除表中指定的列 column 列名 format a(大小) //屏幕显示列的范围大小 truncate table 表名; //删除表中所有内容,不更改结构 drop table 表名; //删除表及全部数据 insert into 表名[(字段1 ,字段2...)]values(值1,值2..) //插入语句,[]内为可选 //日期默认插入格式是“DD-MM-YY”分别代表日,月,年 commit; //提交事务 rollback; //回滚事务 savepoint name; //设置保存点 用"rollback to name"回滚 create [or replace] synonym 同义词名称 for 表名 //创建同义词,必须有"CREATE ANY SYNONYM"权限 create [or replace] public synonym 同义词名称 for 表名 //创建公共同义词 drop synonym 同义词名称 //删除同义词 drop public synonym 同义词名称 //删公共同义词 select * from 用户名.表名 //其他用户使用另一个用户创建的方案同义词 /*创建序列,一般只需指定起始值增量*/ create sequence 序列名 start with 起始值 increment by 增量 默认值为1 [maxvalue] 最大值 [minvalue] 最小值 [order] 排序方式 [cache] 缓存生成个数 默认值为20 cycle 循环 序列名.nextval //返回序列生成的下一个值 序列名.currval //返回序列生成的当前值 alter sequence 序列名 //修改序列 不能修改初始值 drop sequence 序列名 //删除序列 //创建视图 create [or replace] [force] view 视图名 //force:强制创视图 [列名] as select语句 [with check option [CONSTRAINT constraint]] //视图DML操作时,满足select语句中的where条件 [with read only]; //只能查询 //查询视图的可更新列 select a.column_name,a.updatable,a.insertable,a.deletable from user_updatable_columns a where a.table_name=upper(‘视图名‘); //查询视图的定义信息 select c.view_name,c.text from user_views c where c.view_name=upper(‘视图名‘); drop view 视图名 //删除视图 //创建索引 create index 索引名 on 表名(列名) [tablespace 表空间] set autotrace on explain //使用索引前 create unique index 索引名 on 表名(列名) //唯一索引 create index 索引名 on 表名(列名1,列名2...) //复合索引 create bitmap index 索引名 on 表名(列名) //位图索引 create index 索引名 on where后的条件 //函数索引 alter index 索引名 coalesce; //合并索引 alter index 索引名 rebuild; //重建索引 //查看被监视的索引 select a.index_name, a.monitoring, //YES表示已出于监视状态 a.used, //NO表示从开始监视以来还未被使用过 a.start_monitoring, a.end_monitoring from v$object_usage a; alter index 索引名 monitoring usage; //使索引处于被监视状态 //查看索引信息 select index_name, //索引名 index_type, //function-based normal:基于函数的B树索引;bitmap:位图索引;normal:普通的B树索引 uniqueness //是否唯一索引 from user_indexes where table_name in (‘表名‘); PL/SQL基本结构: DECLARE 定义部分 BEGIN 执行部分 EXCEPTION 异常处理部分 END; 变量 列名.表名%TYPE //定义%TYPE变量 变量 表名%ROWTYPE //定义一个表中一行记录的变量(数据类型一致) TYPE 记录类型名字 IS RECORD //定义记录类型 ( 变量名 数据类型(一般定义%TYPE) ... ); 记录类型变量名 记录类型名字; //定义记录类型变量 TYPE 表名 IS TABLE OF 数据类型 [NOT NULL] //定义索引表(类似一维数组的方式使用) INDEX BY [BINARY_INTEGER|PLS_INTEGER|VARCHAR2] 类型变量名 表名; //定义变量 TYPE 数组名 IS VARRAY(成员个数) OF 数据类型 [NOT NULL]; //定义VARRAY数据类型(下标从1开始) 变量名 数组名:=数组名(值1,值2,...); //声明变量并用构造函数赋值 IF 条件表达式 THEN //二重条件分支结构 语句段1 ELSE 语句段2 END IF; IF 条件表达式1 THEN //多重条件分支结构 语句段1 ELSIF 条件表达式2 THEN 语句段2 ELSIF 条件表达式3 THEN 语句段3 ...... ELSIF 条件表达式n 语句段n END IF; CASE 表达式 //CASE结构 WHEN 条件表达式1 THEN 语句段1; WHEN 条件表达式2 THEN 语句段2; ...... ELSE 语句段n; END CASE; CASE //CASE搜索结构 WHEN 条件表达式结果1 THEN 语句段1; WHEN 条件表达式结果2 THEN 语句段2; ...... ELSE 语句段n; END CASE; LOOP //基本循环 语句段; EXIT[WHEN 条件表达式] END LOOP; WHILE 条件表达式 LOOP //WHILE循环 语句段; END LOOP; FOR 循环变量 in [REVERSE] 初值表达式..总值表达式 LOOP //FOR循环 语句段; END LOOP; set serveroutput on //输出 CREATE [OR REPLACE] PROCEDURE 过程名称 //创建过程 ( 参数 ) IS [AS] 声明部分 BEGIN 执行部分 EXCEPTION 异常处理部分 END; EXEC [CALL] 过程名称 //运行过程 begin //运行过程 过程名称 end; / DROP PROCEDURE 过程名称; //删除过程 CREATE [OR REPLACE] FUNCTION 函数名称 //创建函数 ( 参数 ) RETURN 返回值的数据类型 IS|AS 声明部分 BEGIN 执行部分 EXCEPTION 异常处理部分 END; 调用函数 1.使用变量接收函数返回值 2.在SQL语句中直接调用函数 DROP FUNCTION 函数名称; //删除函数 SELECT text FROM User_Source WHERE //显示子程序的源码 name=upper(‘子程序名称‘); SELECT object_name,created,status FROM user_objects //列出当前用户所包含的过程和函数 WHERE object_type IN(‘PROCEDURE‘,‘FUNCTION‘); SHOW ERRORS PROCEDURE 子程序名称; //确定错误原因和位置 SELECT NAME,TYPE FROM User_Dependencies a //列出对象依赖关系 WHERE a.referenced_name=‘表名‘; ALTER PROCEDURE 子程序名称 COMPILE; //重新编译子程序 CURSOR 游标名称 IS SELECT语句; //定义游标 OPEN 游标名称; //打开游标 FETCH 游标名称 INTO 接收游标数据的变量; //提取数据 CLOSE 游标名称; //关闭游标 游标名%ISOPEN //确定游标是否打开 游标名%FOUND //检查是否从结果集中 游标名%NOTFOUNT //与%FOUNT属性相反 游标名%ROWCOUNT //返回到当前行为止已经提取到的实际行数 FETCH 游标名称 BULK COLLECT INTO 接收游标数据的变量; //提取所有数据 游标记录类型名 游标名%ROWTYPE; //定义游标记录类型 CURSOR 游标名(参数名 参数类型) IS SELECT语句; //参数游标 OPEN 游标名(参数值); CURSOR 游标名(参数名 参数类型) IS SELECT语句 FOR UPDATE;//修改或删除数据 必须在UPDATE或DELETE语句中引用"WHERE CURRENT OF 游标名" FOR 变量名 IS 游标名 LOOP //游标FOR循环,会隐含地打开和关闭游标 ...... END LOOP; CREATE [OR REPLACE] TRIGGER 触发器名 //创建DML触发器 触发时机(BEFORE或AFTER) INSERT OR UPDATE OR DELETE ON 所操作的表名 BEGIN ...... END; CREATE [OR REPLACE] TRIGGER 触发器名 //创建行触发器,":NEW"代表新行,可更新;":OLD"代表旧行,只读 触发时机(BEFORE或AFTER) INSERT OR UPDATE OR DELETE ON 所操作的表名 FOR EACH ROW BEGIN ...... END; --导出SCOTT方案中emp,dept表 在d:\dump目录创建par_emp_dept.txt 内容: DIRECTORY=dirdp1 DUMPFILE=tab_emp_dept.dmp LOGFILE=dirdp1:tab_emp_dept.log TABLES=emp,dept 登录系统权限 create directory dirdp1 as ‘d:\dump‘; grant read,write on directory dirdp1 to scott; select * from dba_directories where directory_name like ‘DIR%‘; 进入CMD expdp scott/tiger parfile=d:\dump\par_emp_dept.txt --删除emp,dept表并恢复 在d:\dump目录创建imp_par_table.txt 内容: DIRECTORY=dirdp1 DUMPFILE=tab_emp_dept.dmp LOGFILE=imp_table_emp_dept.log TABLE_EXISTS_ACTION=TRUNCATE TABLES=emp,dept 进入CMD impdp scott/tiger parfile=d:\dump\imp_par_table.txt id自增 create sequence seq_id start with 1 increment by 1; create or replace trigger tr_id before insert on 表名 for each row begin select seq_stu.nextval into :new.id from dual; end; / 一般sql查询命令顺序 from -->where --> group by --> having --> order by
本文出自 “丿依然灬淡漠” 博客,请务必保留此出处http://startrun.blog.51cto.com/10157079/1637753
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。