首页 > 代码库 > Oracle数据库04
Oracle数据库04
一、用户user
1、创建用户
CREATE USER QIGX IDENTIFIED BY TIGER;
这里的QIGX是账号,TIGER是密码。
2、分配权限
GRANT CONNECT,RESOURCE,DBA TO QIGX;
CONNECT:临时用户;RESOURCE:更为可靠和正式的用户;DBA:数据库管理角色,拥有管理数据库的最高权限。
3、取消权限
REVOKE DBA FROM QIGX;
二、数据库表table
三、序列sequence
序列是Oracle专有的对象,它用来产生一个自动递增的数列
创建序列:
CREATE SEQUENCE SEQ_NAME
INCREMENT BY N
START WITH N
MAXVALUE N|NOMAXVAKUE 10^27 OR -1
MINVALUE N|NOMINVALUE
CYCLE|NOCYCLE
CACHE|NOCACHE
示例:
创建序列:
CREATESEQUENCE SEQ_EMPCOPY_ID START WITH 1 INCREMENT BY 1;
使用序列:
SELECT SEQ_EMPCOPY_ID.NEXTVAL FROM DUAL INSERT INTO EMPCOPY(EMPNO,ENMANE) VALUES(SEQ_EMPCOPY_ID.NEXT,‘TEST‘);
查看序列状态:
SELECT SEQ_EMPCOPY_ID.CURRVAL FROM DUAL;
删除序列:
DROP SEQUENCE SEQ_EMPCOPY_ID;
四、索引index
索引类似字典和书的目录,是为了加快对数据的搜索速度而设立的。索引有自己专门的存储空间,与表独立存放。
索引类型默认采用B树数据结构,数据全部集中在叶子节点。
在数据库中用来加速对表的查询,通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O。
索引创建后,在用户撤销它之前并不会用到该索引的名字,但是索引在用户查询时会自动起作用。
索引创建的两种情况:
自动:当在表上定义一个PRIMARY KEY或者UNIQUE约束条件时,Oracle数据库自动创建一个对应的唯一索引。
手动:用户可以创建索引以加速查询。
创建索引:
CREATE INDEX INDEX_STU_SANME ON T_STUDENT(SNAME);
删除索引:
DROP INDEX INDEX_STU_SNAME;
五、视图view
定义:
视图是从若干基本表和(或)其他视图构造出来的表。
在创建一个视图时,只是存放的视图的定义,也即是动态检索数据查询语句,而并不存放视图对应的数据。
在用户使用视图时才去求相对应的数据。(视图也被称为"虚表")
作用:
可以限制对数据的访问,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
可以使复杂的查询变得简单。在编写查询后,可以方便地重用它而不必知道它的基本查询细节。
提供了相同数据的不同显示。
创建视图
CREATE OR REPLACE VIEW VIEW_STU AS(SELECT SNO,SNAME,GENDER FROM T_STUDENT);
VIEW_STU是视图名
查询视图
SELECT * FROM VIEW_STU;
删除视图
DROP VIEW VIEW_STU;
六、其他
1、事务
事务(Transaction)是一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位。
事务是为了保证数据库的完整性。
在Oracle中,事务没有开始的语句。一个事务起始于一条DML(Insert、Update和Delete)语句,结束语以下的几种情况:
用户显示执行Commit语句提交操作或Rollback语句回退。
当执行DDL(Create、Alter和Drop)语句事务自动提交。
用户正常断开连接时,事务自动提交。
系统崩溃或断电时事务自动回退。
Commit表示事务成功地结束,此时告诉系统,数据库要进入一个新的正确状态,该事务对数据库的所有更新都以交付实施。每个Commit语句都可以看成是一个事务成功的结束,同时也是另一个事务的开始。
Rollback表示事务不成功的结束,此时告诉系统,已发生错误,数据库可能处在不正确的状态,该事务对数据库的更新必须被撤销,数据库应恢复该事务到初始状态。每个Rollback语句同时也是另一个事务的开始。
一旦执行了commit语句,将目前对数据库的操作提交给数据库,以后就不能用rollback进行撤销。
执行一个DDL、DCL语句或从SQL*Plus正常退出,都会自动执行commit命令。
提交或回滚前数据的状态:
以前的数据可恢复。
当前的用户可以看到DML操作的结果。
其他的用户不能看到DML操作的结果。
被操作的数据被锁住,其他用户不能修改这些数据。
提交后数据的状态:
数据的修改被永久写在数据库中。
数据以前的状态永久性丢失。
所有的用户都能看到操作后的结果。
记录锁被释放,其他用户可操作这些记录。
回滚后数据的状态:
语句将放弃所有的数据修改
修改的数据被退回
恢复数据到以前的状态
行级锁被释放
2、rowid和rownum
rowid在记录创建时生成,而且是不变的,直接指向硬件上的存储位置。
用rowid直接访问时最快的,但也是人力无法做到的。
只要记录没被搬动过,rowid是不变的。
rownum是个伪列,查询的时候除非特别指定,否则不会显示。
其主要的用用处是控制查询返回的行数
只能使用:<,<=
当rownum和order by一起使用时,会首先选出符合rownum条件的记录,然后在进行排序,这会给我们的查询带来难度。
示例:
SELECT ROWID,ROWNUM,EMP.*FROM EMP;
SELECT ROWID,ROWNUM,EMP.* FROM EMP ORDER BY SAL;
SELECT ROWID,ROWNUM,EMP.* FROM WHERE ROWNUM <= 5;
3、分页
显示EMP表中薪水最高的钱五个雇员信息
步骤1:显示按照工资排序的所有员工
SELECT * FROM EMP ORDER BY SAL DESC;
步骤2:把步骤1结果看做一张表,查询该表的前5条数据
SELECT ROWNUM,T.* FROM (SELECT * FROM EMP ORDER BY SAL DESC) T WHERE ROWNUM <= 5;
4、导入和导出
使用exp导入和导出数据
使用PL/SQL Developer 导入和导出数据
Oracle数据库04