oracle常用sql语句
2014-04-15 23:18
381 查看
1. 解锁oracle用户下某个用户(以内置的scott用户为例):
解释:首先要切换到sysdba用户下,否则会提示(权限不足):
ERROR at line 1:ORA-01031: insufficientprivileges
第二句中的scott为oracle数据库中的用户名,tiger为scott用户的密码。
2.连同表结构复制一个表:
解释:上面这个操作是创建一个表名为test的表。test表中字段名称,字段类型和emp表一样,但emp表中某些字段中主键,外键,unique等属性不会复制到test表中。如emp表中empno字段为主键,那么test表中empno字段不会是主键。所以上面这条语句复制时,只是复制了表中的字段名和字段类型,以及表中的数据。
3.两个表结构一样的表,进行数据拷贝,如将emp表中数据复制到test中(emp和test表结构一样):
上面语句就是将emp表中的数据复制到test表中。其中test表一定要存在。如果test表中有约束,可能会导致插入失败。
4.给表添加主键,外键,unique等等:
上面命令式为test表添加主键,主键名称为pk_emp,这个名称名字按照开发规范统一维护,empno为test表中的某个字段,再添加主键时,一定要确保被设为主键的这个字段值没有重复。否则会导致添加主键失败。
上面这条命令添加了unique约束,约束字段为ename。在oracle数据库中unique字段内容可以为NULL,在DB2数据库中unique字段不能为NULL。
上面这条语句是为表my添加外键引用,被引用的那个表中的字段(如上面的empno字段)必须是主键或者unique。
5. 失能,失能,删除主键,外键,unique。
首先通过上面这条语句查询当前用户下某些表拥有的约束名称。
上图中constraint_name中很长的字符串组成的名字是系统默认情况下定义的约束名称,而在程序猿自己定义的约束中,一般会按照某种规范取名,如主键一般以PK开头。下面要失能test表中的主键约束,命令:
同理,失能外键,unique等等也是一样的语句,只是后面的约束名称不同而已,但如果要删除的约束(主键或unique)被子表当外键引用了(假如有外键的表称为子表,被引用的表称为主表)。此时不能通过上面的语句失能主键。可以通过删除或失能子表中的外键引用,然后才能失能主表中的约束。
将上面的disable换成enable,则是使能约束,将disable换成drop则是删除约束。
6. oracle分析查询语句是否使用索引。
首先打开追踪功能:
如上图所示,由于test表中的empno为主键,所以在使用查询时,使用了索引,若红色框框所示。通过这个方法可以在优化SQL时,如果拿不住SQL语句是否用到了你创建的索引,执行时间,cpu占用率,方便进行SQL调优。
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调优。
相关文章推荐
- oracle 启动错误
- 不用安装oracle客户端也可以用plsql连接远程oracle
- oracle中sql语句的优化[转载]
- 又见Oracle BUG:Rman备份的alert错误提示
- Oracle BUG:ORA-00600[kmgs_parameter_update_timeout_1][17510]
- oracle 降序索引
- oracle中对象表,ref及deref的一个实例。
- 在 Oracle 中根据经纬度计算两地之间的距离
- oracle 身份验证SQLNET.AUTHENTICATION_SERVICES
- oracle 关闭、启动
- Oracle中对XMLType的简单操作(extract、extractvalue
- oracle的xmltype例子
- ORACLE:ORA-12154 TNS无法解析指定的连接标识符(易忽略原因)
- oracle11g如何安装及注意事项
- Oracle数据库案例整理-登录Oracle数据库失败-归档日志大小超出最大值
- Oracle数据库案例整理-登录Oracle数据库失败-非oracle用户权限不足
- Oracle数据库案例整理-登录Oracle数据库失败-审计日志目录满或不存在
- 解决在Oracle数据库中使用hibernate生成表不能正确创建表的有关问题
- Oracle数据库案例整理-登录Oracle数据库失败-表空间可用空间不足
- Oracle数据库案例整理-登录Oracle数据库失败-系统内存小于Oracle参数配置的memory_target值