《数据定义和事务控制语言》由会员分享,可在线阅读,更多相关《数据定义和事务控制语言(54页珍藏版)》请在金锄头文库上搜索。
1、Oracle 数据库 数据定义和事务控制语言主讲教师:1wnt 2000(C) copyrightSQL Statements2wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 3wnt 2000(C) copyrightAlter Table : 作用 添加一个新列 修改一个现有的列 删除一个现有的列4wnt 2000(C) copyrightAlter Table : 语法5wnt 2000(C) copyrightAlter Table : 添加新列 DEPT80ALTER TABLE DEPT80 ADD
2、 (JOB_ID NUMBER); Table altered.DEPT80 新列使用 NULL 值填充新列添加到表的结尾处表可以为空也可以包含数据只有当表为空时,才可将列定义为 NOT NULL 6wnt 2000(C) copyrightAlter Table : 修改已有列 无法更改列名称随时都可以将列从 NOT NULL 更改为NULL 若要更改列的数据类型,则所有列值都必须是 NULL若要减小,则所有列值都必须是 NULLALTER TABLE dept80 MODIFY ( last_name VARCHAR2(30) )7wnt 2000(C) copyrightAlter Ta
3、ble : 删除已有列 示例 ALTER TABLE dept80 DROP COLUMN job_id8wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 9wnt 2000(C) copyrightRename 示例 RENAME emp TO myEmp 源表名目标表名10wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 11wnt 2000(C) copyrightDrop Table 示例 DROP TABLE employ
4、ee12wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 13wnt 2000(C) copyrightTruncate Table 示例 TRUNCATE TABLE employee是最有效率的去除表中所有记录的方法不能用 Rollback 撤销 Truncate Table 命令释放表中记录所占用的空间移除表中的所有行14wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 15wnt 2000(C) copyrightConst
5、raint 可以在表中放置下列约束以确保数据完整性 PRIMARY KEY FOREIGN KEY NOT NULL DEFAULT CHECK UNIQUE主键 外键 禁止为空 设置默认值 检查数据合法性设置唯一性 16wnt 2000(C) copyrightConstraint : 命名方式 CREATE TABLE emp ( emp_id NUMBER(6) ,first_name VARCHAR2(20) NOT NULL , ) CREATE TABLE emp ( emp_id NUMBER(6) ,first_name VARCHAR2(20) CONSTRAINT emp_
6、first_name_nn NOT NULL , )系统命名用户命名CREATE TABLE emp ( emp_id NUMBER(6) ,first_name VARCHAR2(20) , CONSTRAINT emp_first_name_nn NOT NULL (first_name) )用户命名17wnt 2000(C) copyrightConstraint : PRIMARY KEY(例)CREATE TABLE departments ( department_id NUMBER(4) ,department_name VARCHAR2(30) CONSTRAINT dept_
7、name_nn NOT NULL ,manager_id NUMBER(6) ,CONSTRAINT dept_id_pk PRIMARY KEY(department_id) ) /18wnt 2000(C) copyrightConstraint : PRIMARY KEY19wnt 2000(C) copyrightConstraint : FOREIGN KEY ( 例)CREATE TABLE employees ( employee_id NUMBER(6) , last_name VARCHAR2(25) NOT NULL , hire_date DATE NOT NULL ,
8、. department_id NUMBER(4) ,CONSTRAINT emp_dept_fk FOREIGN KEY(department_id) REFERENCES departments (department_id) ,CONSTRAINT emp_email_uk UNIQUE(email) ) /20wnt 2000(C) copyrightConstraint : FOREIGN KEY21wnt 2000(C) copyrightALTER TABLE books ADD CONSTRAINT books_name_unq UNIQUE(book_name)将约束添加到表
9、 可将约束添加到现有表 使用 ALTER TABLE 语句 示例 22wnt 2000(C) copyright禁用约束 可以临时禁用约束 使用 ALTER TABLE 语句 示例 ALTER TABLE books DISABLE CONSTRAINT books_name_unq23wnt 2000(C) copyright启用约束 禁用约束后可对其重新启用 使用 ALTER TABLE 语句 示例 ALTER TABLE books ENABLE CONSTRAINT books_name_unq24wnt 2000(C) copyright删除约束 可临时删除约束 使用 ALTER T
10、ABLE 语句 示例 可使用下列语句强制除去主键约束 ALTER TABLE books DROP CONSTRAINT books_name_unqALTER TABLE books DROP PRIMARY KEY CASCADE25wnt 2000(C) copyright本章目标 更改表结构 更改表名称 删除表 截断表 使用表约束 数据控制语言 事务控制命令 26wnt 2000(C) copyright数据控制语言 (DCL) 通过给已授权用户分配权限和特权来提供 对数据的保护 可撤消已授予给用户的特权 两个主要的命令 GRANT REVOKE27wnt 2000(C) copyri
11、ght数据控制语言 :GRANT 允许将数据库对象上的某些特权授予其 他用户 可以授予的特权是 Select、Insert、 Update 和 Delete WITH GRANT OPTION 允许用户将数 据库对象上的特权传递给其他用户 GRANT ALL 用于将所有特权授予用户 GRANT privilege , privilege. TO user , user.;28wnt 2000(C) copyright数据控制语言 :GRANT (续)SQL GRANT create table, create sequence, create view2 TO scott; Grant suc
12、ceeded.Grant succeeded.29wnt 2000(C) copyright数据控制语言 :REVOKE 允许收回已授予用户的特权 可以撤消的特权是 Select、Insert、Update 和 Delete REVOKE ALL 用于撤消用户的所有特权 30wnt 2000(C) copyright数据控制语言 :REVOKE (续 ) REVOKE SELECT, INSERT, UPDATE, DELETE ON EMP FROM TESTREVOKE ALL ON EMP FROM TEST31wnt 2000(C) copyright控制用户访问DatabaseDat
13、abase administratoradministratorUsersUsersUsername and password privileges32wnt 2000(C) copyright控制用户访问:权限 数据库安全: 系统安全 数据安全 系统权限: 控制对数据库的访问 对象权限: 操作数据库对象中的内容 Schema: Collection of objects, such as tables, views, and sequences33wnt 2000(C) copyright控制用户访问:系统权限 80个以上的权限可供选择. DBA 拥有高级别权限: Create new us
14、ers Remove users Remove tables Back up tables 34wnt 2000(C) copyright控制用户访问:创建用户SQL CREATE USER scott2 IDENTIFIED BY tiger; User created.User created.CREATE USER user IDENTIFIED BY password;35wnt 2000(C) copyright控制用户访问:什么是角色Allocating privilegesAllocating privileges without a rolewithout a roleAllo
15、cating privilegesAllocating privileges with a rolewith a rolePrivilegesPrivilegesUsersUsersManagerManager36wnt 2000(C) copyright控制用户访问:创建角色并授权SQL CREATE ROLE manager; Role created.Role created. SQL GRANT create table, create view 2 to manager; Grant succeeded.Grant succeeded. SQL GRANT manager to BLAKE, CLARK; Grant succeeded.Grant succeeded. 37wnt 2000(C) copyright控制用户访问:修改用户密码SQL ALTER USER scott 2 IDENTIFI