alter table emp add sal number(7,2); 4.删除表列 alter table emp drop column sal; 5.重命名表列 alter table emp rename column comm to banus: 6.修改字段类型 alter table emp modify〈字段名>〈字段类型> 7.重命名表 alter table emp rename to emmp: 8.清空表中所有数据 truncate table emp: 9.删除表 通过使用drop table table_name命令可以删除一个表。但是在使用此 命令时,表不会立即被删除,Oracle只是筒单地重命名此表并将其存储在回 收站中(回收站实际上是一个简单的数据字典表)。这样,还可以恢复被意外 删除的表。 恢复被删除的表 flashback table tb_name to before drop: 恢复被删除的表的能力称为闪回删除特性。 特别注意:在默认的表空问创建的表将无法被闪回。 彻底删刪除数据表 drop table tb_name purge: 除具有关联性的表 在删除一个表时,该表上的所有索引也将被删除。如果要删除的表中包 含主键或由其他表的外键引用的唯一键,则必须在drop table命令中包括 cascade子句,以便将约束一并附除。 drop table emp cascade constraints; 10.创建表空问(tablespace) create tablespace ora2 datafile 'd:\oraloracle2.ora'size 100m
alter table emp add sal number(7,2); 4. 删除表列 alter table emp drop column sal; 5. 重命名表列 alter table emp rename column comm to banus; 6. 修改字段类型 alter table emp modify <字段名> <字段类型> 7. 重命名表 alter table emp rename to emmp; 8. 清空表中所有数据 truncate table emp; 9. 删除表 通过使用 drop table table_name 命令可以删除一个表。但是在使用此 命令时,表不会立即被删除,Oracle 只是简单地重命名此表并将其存储在回 收站中(回收站实际上是一个简单的数据字典表)。这样,还可以恢复被意外 删除的表。 恢复被删除的表 flashback table tb_name to before drop; 恢复被删除的表的能力称为闪回删除特性。 特别注意:在默认的表空间创建的表将无法被闪回。 彻底删除数据表 drop table tb_name purge; 删除具有关联性的表 在删除一个表时,该表上的所有索引也将被删除。如果要删除的表中包 含主键或由其他表的外键引用的唯一键,则必须在 drop table 命令中包括 cascade 子句,以便将约束一并删除。 drop table emp cascade constraints; 10. 创建表空间(tablespace) create tablespace ora2 datafile ‘d:\ora\oracle2.ora’size 100m;
在创建表空问时,相对应的目录必领存在。 11.将数据导出 (①)导出单表 exp system/manager@myoracle file=d:\daochu.dmp tables=(tablel): system是用户名,manager是密码,myoracle是数据库名。 (②)导出整个数据库 exp system/managerOmyoracle file=d:\daochu.dmp full=y: 12.利用脚本文件向表中插入数据 脚本文件(create.sql) create sequence seq_banji start with 10 increment by 10:一创建序 列 insert into banji values(seq_banji.nextval,'Ao1'):-粗体字代表获 取序列内容 insert into banji values(seg banji.nextval,'A02'); 执行脚本文件 SQL>e c:\create.sql 13.导入单表数据 ip用户名/密码tables=-(表名>ignore=-y file=文件名 14.导入整个数据库 ip用户名/密码tables=-(表名>ignore=y file=文件名 注意:数据备份时,要脱离当前Oracle的环境,退到DOS文件系统内。 15.相关语句 (1)查询表结构 desc banji; (②)查询已存在的序列 select from user_sequences:
在创建表空间时,相对应的目录必须存在。 11. 将数据导出 (1) 导出单表 exp system/manager@myoracle file=d:\daochu.dmp tables=(table1); system 是用户名,manager 是密码,myoracle 是数据库名。 (2) 导出整个数据库 exp system/manager@myoracle file=d:\daochu.dmp full=y; 12. 利用脚本文件向表中插入数据 脚本文件(create.sql) create sequence seq_banji start with 10 increment by 10;--创建序 列 insert into banji values(seq_banji.nextval,'A01');--粗体字代表获 取序列内容 insert into banji values(seq_banji.nextval,'A02'); 执行脚本文件 SQL>@ c:\create.sql 13. 导入单表数据 imp 用户名/密码 tables=<表名> ignore=y file=文件名 14. 导入整个数据库 imp 用户名/密码 tables=<表名> ignore=y file=文件名 注意:数据备份时,要脱离当前 Oracle 的环境,退到 DOS 文件系统内。 15. 相关语句 (1) 查询表结构 desc banji; (2) 查询已存在的序列 select * from user_sequences;
(3)删除序列 drop sequence seq_banji; (④)查询当前用户下的表 select from tab: 16.练习 按照以下表结构建表 部门表(dept) deptno dname loc 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 0 SALES CHICAGO 40 OPERATIONS BOSTON 员工表(emp) empno ename job mgr hiredate Sal comm deptn 0 7369 SMITH CLERK 79021980-12- 1000 20 17 7499 ALLEN SALESMA 7698 1981-02- 1800 300 30 20 7521 WARD SALESMA 7698 1981-02- 1450 500 30 22 7566 JONES MANAGER 7839 1981-04 3175 20 02 7654 MARTIN SALESMA 7698 1981-09 1350 1400 30 7698 BLAKE MANAGER 7839 1981-05 3050 30 01 7782 CLARK MANAGER 7839 1981-06-2650
(3) 删除序列 drop sequence seq_banji; (4) 查询当前用户下的表 select * from tab; 16. 练习 按照以下表结构建表 部门表(dept) deptno dname loc 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 员工表(emp) empno ename job mgr hiredate Sal comm deptn o 7369 SMITH CLERK 7902 1980-12- 17 1000 20 7499 ALLEN SALESMA N 7698 1981-02- 20 1800 300 30 7521 WARD SALESMA N 7698 1981-02- 22 1450 500 30 7566 JONES MANAGER 7839 1981-04- 02 3175 20 7654 MARTIN SALESMA N 7698 1981-09- 28 1350 1400 30 7698 BLAKE MANAGER 7839 1981-05- 01 3050 30 7782 CLARK MANAGER 7839 1981-06- 2650 10
09 7788 SCOTT ANASTLY75661981-12-3200 20 09 7839 KING PRESIDE 1981-11- 5200 10 nt 17 7844 TURNER SALESMA 7698 1981-09 1700 0 30 N 7876 ADAMS CLERK 7788 1983-01- 1300 20 12 7900 JAMES CLERK 7698 1981-12 1150 30 03 7902 FORD ANASTLY 7566 1981-12- 3200 20 03 7934 MILLER CLERK 7782 1982-01- 1500 10 23 三,数据库完整性约束 关系数据库中的完整性约束可以容易地且自动地在数据库表中实施重要的 业务规则。 1.主键约束 主键是表的非常重要的一类约束。如果一个列值要被唯一标识,可以为 该列值创建主键。定义为主键的列必须是唯一且非空的。 一个表只有一个主键,可以在创建表时创建主键。 create table dept(deptno number primary key); alter table dept add primary key(deptno): alter table dept drop primary key; alter table dept drop constraint pk_a 由于上例中的约束没有分配名字,因此0 racle将分配一个系统生成的约 束名。如果想要自定义一个约束名,可以使用以下方式: alter table dept add constraint dept pk primary key(deptno):
09 7788 SCOTT ANASTLY 7566 1981-12- 09 3200 20 7839 KING PRESIDE NT 1981-11- 17 5200 10 7844 TURNER SALESMA N 7698 1981-09- 08 1700 0 30 7876 ADAMS CLERK 7788 1983-01- 12 1300 20 7900 JAMES CLERK 7698 1981-12- 03 1150 30 7902 FORD ANASTLY 7566 1981-12- 03 3200 20 7934 MILLER CLERK 7782 1982-01- 23 1500 10 三. 数据库完整性约束 关系数据库中的完整性约束可以容易地且自动地在数据库表中实施重要的 业务规则。 1. 主键约束 主键是表的非常重要的一类约束。如果一个列值要被唯一标识,可以为 该列值创建主键。定义为主键的列必须是唯一且非空的。 一个表只有一个主键,可以在创建表时创建主键。 create table dept(deptno number primary key); alter table dept add primary key(deptno); alter table dept drop primary key; alter table dept drop constraint pk_a 由于上例中的约束没有分配名字,因此 Oracle 将分配一个系统生成的约 束名。如果想要自定义一个约束名,可以使用以下方式: alter table dept add constraint dept_pk primary key(deptno);
注意:如果主键中有多个列(即是一个组合键),则不能在表创建中对列 名指定主键名称。必须在create table命令的结尾并且在列出所有列之后, 作为一个单独项指定主键列。 2.非空约束 一个表通常有一个或多个列不允许为空,即没有值。可以在表的创建阶 段使用not null选项,强制用户必须为此列输入值。 create table dept(dname varchar2(30)not null) alter table dept modify dname not null; 3.检查约束 可以使用检查约束确保列中的数据在某个指定的参数范围内。 create table dept(comm varchar2(15)check(comm<2)): alter table abc modify ename check(ename in('Tom','Smith')); 4.唯一约束 唯一约束在关系数据库中很常见。此约束确保关系表中的行的唯一性。 一个表中可以有多个唯一约束。 create table dept(loc varchar2(20),constraint loc_ukey unique(loc)); alter table dept add constraint uk_dname unique(dname) 5。引用完整性约束 引用完整性约束确保某些重要列的值有意义。使用引用完整性约束,可 以确保合法对应字段值的存在。如果一个表中的字段是关联表的主健,则称 该字段为外键字段,因此称为外键。包含外键的表通过称为子表,而包含被 引用键的表称为父表。 create table emp( deptno number not null constraint dept_fkey references dept(deptno) ) alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno)on delete cascade;注意级联的作用
注意:如果主键中有多个列(即是一个组合键),则不能在表创建中对列 名指定主键名称。必须在 create table 命令的结尾并且在列出所有列之后, 作为一个单独项指定主键列。 2. 非空约束 一个表通常有一个或多个列不允许为空,即没有值。可以在表的创建阶 段使用 not null 选项,强制用户必须为此列输入值。 create table dept(dname varchar2(30) not null); alter table dept modify dname not null; 3. 检查约束 可以使用检查约束确保列中的数据在某个指定的参数范围内。 create table dept(comm varchar2(15) check(comm<2)); alter table abc modify ename check(ename in('Tom','Smith')); 4. 唯一约束 唯一约束在关系数据库中很常见。此约束确保关系表中的行的唯一性。 一个表中可以有多个唯一约束。 create table dept(loc varchar2(20),constraint loc_ukey unique(loc)); alter table dept add constraint uk_dname unique(dname); 5. 引用完整性约束 引用完整性约束确保某些重要列的值有意义。使用引用完整性约束,可 以确保合法对应字段值的存在。如果一个表中的字段是关联表的主键,则称 该字段为外键字段,因此称为外键。包含外键的表通过称为子表,而包含被 引用键的表称为父表。 create table emp( deptno number not null constraint dept_fkey references dept(deptno) ); alter table emp add constraint fk_deptno foreign key(deptno) references dept(deptno) on delete cascade;注意级联的作用