您的位置:首页 > 数据库 > Oracle

oracle常用sql语句

2014-04-15 23:18 381 查看
1. 解锁oracle用户下某个用户(以内置的scott用户为例):

SQL> conn   /as   sysdba
SQL> alter user scott account unlock identified by tiger;

解释:首先要切换到sysdba用户下,否则会提示(权限不足):

ERROR at line 1:ORA-01031: insufficientprivileges

第二句中的scott为oracle数据库中的用户名,tiger为scott用户的密码。

2.连同表结构复制一个表:

SQL> create table test as select * from emp;

解释:上面这个操作是创建一个表名为test的表。test表中字段名称,字段类型和emp表一样,但emp表中某些字段中主键,外键,unique等属性不会复制到test表中。如emp表中empno字段为主键,那么test表中empno字段不会是主键。所以上面这条语句复制时,只是复制了表中的字段名和字段类型,以及表中的数据。

SQL> select table_name ,constraint_name from user_constraints;


3.两个表结构一样的表,进行数据拷贝,如将emp表中数据复制到test中(emp和test表结构一样):

SQL> insert into test select * from emp;


上面语句就是将emp表中的数据复制到test表中。其中test表一定要存在。如果test表中有约束,可能会导致插入失败。

4.给表添加主键,外键,unique等等:

SQL> alter table test add constraint pk_emp primary key(empno);

上面命令式为test表添加主键,主键名称为pk_emp,这个名称名字按照开发规范统一维护,empno为test表中的某个字段,再添加主键时,一定要确保被设为主键的这个字段值没有重复。否则会导致添加主键失败。

SQL> alter table test add constraint u_ename unique (ename);

上面这条命令添加了unique约束,约束字段为ename。在oracle数据库中unique字段内容可以为NULL,在DB2数据库中unique字段不能为NULL。

SQL> alter table my add constraint r_em foreign key(empno) references test(empno);


上面这条语句是为表my添加外键引用,被引用的那个表中的字段(如上面的empno字段)必须是主键或者unique。

5. 失能,失能,删除主键,外键,unique。

SQL> select table_name ,constraint_name from user_constraints;


首先通过上面这条语句查询当前用户下某些表拥有的约束名称。



上图中constraint_name中很长的字符串组成的名字是系统默认情况下定义的约束名称,而在程序猿自己定义的约束中,一般会按照某种规范取名,如主键一般以PK开头。下面要失能test表中的主键约束,命令:

SQL> alter table test disable constraint pk_emp;


同理,失能外键,unique等等也是一样的语句,只是后面的约束名称不同而已,但如果要删除的约束(主键或unique)被子表当外键引用了(假如有外键的表称为子表,被引用的表称为主表)。此时不能通过上面的语句失能主键。可以通过删除或失能子表中的外键引用,然后才能失能主表中的约束。

将上面的disable换成enable,则是使能约束,将disable换成drop则是删除约束。

6. oracle分析查询语句是否使用索引。

首先打开追踪功能:

SQL> set autotrace traceonly explain;



如上图所示,由于test表中的empno为主键,所以在使用查询时,使用了索引,若红色框框所示。通过这个方法可以在优化SQL时,如果拿不住SQL语句是否用到了你创建的索引,执行时间,cpu占用率,方便进行SQL调优。







                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: