数据库对表的操作(常用)

1.创建表

1) 直接建表:CREATE TABLE [schema.] 表名 (  id int PRIMARY KEY,..... );   schema 为方案,默认为用户名

2) 子查询建表:CREATE TABLE table [(col1,col2...)]   
                           AS SELECT * FROM emp;

新建表后面的字段列表,如果有的话字段的数目必须等于子查询所选的字段数目,如果没有则新建表的字段名使用子查询的字段名  通过子查询创建表完整性约束不会传递到新表 但是字段的数据类型会被引用

字段的约束:

1)约束分类:非空约束 默认值约束 主键约束 (不可以为空) 唯一约束 (可以为空) 外键约束  check 约束 等

2)添加约束:约束可以在创建表的时候定义 ,也可以是在创建表之后定义(ALTER) 

 语法:ALTER TABLE 表名  ADD[CONSTRAINT  约束名]  type(column)     ----------------建议命名约束

 例如添加check约束:

ALTER TABLE 表名 ADD CONSTRAINT emp_salary_min CHECK(salary >0);

3)外键约束实现:( 外键的值必须匹配一个在父表中存在的值,同时在父表中不能删除这样的行,该行的主键正在被子表所引用

一对多关系: 一个表存放另一个表的主键

一对一关系: 在外键表对存放的主键加一个唯一约束

多对多关系: 通过建立一个第三个表存放两个表的主键

4)删除约束

ALTER TABLE 表名 DROP PRIMARY KEY | UNIQUE(column) CONSTRAINT cname   [CASCADE]
           --CASCADE表示与其依赖的约束也被删除

5)启用禁用约束

启用:ALTER TABLE 表名 DISABLE CONSTRAINT cname[CASCADE]
           禁用:ALTER TABLE 表名 ENABLE CONSTRAINT cname
  

2.修改表

修改表名     RENAME old_name TO new _name

1)添加字段

ALTER TABEL tabel ADD (列名 类型 默认值)

--添加字段age 默认1
ALTER TABLE t_emp  ADD(age  NUMBER DEFAULT 1);

2)修改字段

修改字段名字  ALTER TABLE 表名 RENAME COLUMN 原名 TO 新名

修改字段类型  ALTER TABEL 表名 MODIFY(列名 varchar(20))

--修改字段名 age 改为 newAge
ALTER TABLE t_emp RENAME COLUMN age TO newage;

--修改字段 age类型 为varchar
ALTER TABLE t_emp  MODIFY(age varchar2(100));

3)删除字段

ALTER TABLE 表名 DROP(列名)

--删除age这一列
ALTER TABLE t_emp DROP (age);

3.删除表

删除表:DROP TABLE 表名

DELETE(不带WHERE)  DROP TRUNCATE 的区别:

相同点:  truncate和不带where子句的delete, 以及drop都会删除表内的数据

不同点:

  1. drop语句将删除表的结构被依赖的约束、触发器、索引;依赖于该表的存储过程/函数将保留,但是变为invalid状态.  
                truncate和delete只删除数据不删除表的结构(定义)  
  2. truncate,drop是ddl,操作立即生效不能回滚,delete是dml,可以回滚,因此小心使用drop 和 truncate
  3. delete可以返回被删除的记录数,可以和WHERE一起使用,而TRUNCATE TABLE返回的是0。
  4. 速度,一般来说:   drop>   truncate   >   delete      

4.恢复表

-----------从flash back里查询被删除的表

SELECT * FROM RECYCLEBIN;

-------执行表的恢复,同时恢复数据

FLASHBACK TABLE t_emp TO BEFORE DROP;

猜你喜欢

转载自blog.csdn.net/Bruce_Up/article/details/82757447