目录
DDL 即 Data Definition Language,数据定义语言,顾名思义在数据库中对表进行定义,通过指定某列的头是什么、是哪种数据类型、表之间有何链接。以及约束等初始化,工作上他们大多用于建立表或修改表。
一、创建
语法:
1.直接创建
create table xxx (
column_1 data_type_1 [constraint_1],
column_2 data_type_2 [constraint_2],
column_3 data_type_3 [constraint_3]
)
在创建表的时候要注意数据类型 ,需要在实际应用中尽量地好处理
2.从其他表复制
create table new_table as select xxx from old_table...
这种方法只能复制表的列和数据,不能复制表的约束(主键、检查、默认值等),如果你想要复制一个很多列的表头,可以使用这种方法加上 where 1=2 即可直接复制原表结构
二、删除
语法:
drop table table_name
注:在删除表时,该表的主键不能是其他某个表的外键,则报错"表中主键被引用",此时必须删除引用表或约束后才能删除该表。
三、修改
这里的修改主要指的是修改表的结构,区别于修改数据
修改对象:主要是column(列名、数据类型)、constraint(key、unique、check等)
语法:
alter table table_name ...
(一)列
1.增加列
add
alter table table_name add column_name col_type [constraint]
2. 删除列
drop column
alter table table_name drop column column_name
3.修改列
数据类型:modify
alter table table_name modify column_name col_new_type [constraint]
名称:rename column a to b
alter table table_name rename column old_column_name to new_col_name
(二)约束
可以使用 select * table user_constraints where table_name='表名' 查看表格有哪些约束,含义如下:
- C:not null / check
- P:primary key
- U:unique
- R:foregin key
1.主键/外键约束
主键:将column设置为主键,( ) 内的列名不可少
alter table table_name add constraint constraint_name primary key(column_name)
外键:设置外键列1、列2,参照列 A、列B(列A、列B为另一个表的主键)
外键的约束名不能重复,且数据类型与引用的主键一致
alter table table_name add constraint constraint_name foreign key
(column_1,column_2...) references referenced_table (column_A,column_B...)
2.唯一值、检查值、空值
唯一值:unique
alter table table_name add constraint constraint_name unique(column_name)
检查值:check
alter table table_name add constraint constraint_name check(judgment)
空值:(xxx is null/is not null)
默认值:default
3.删除约束
drop
alter table table_name drop constraint constraint_name
四、误删恢复
flash back 有可能可以恢复被误删掉的表
1.查看被删除的表
select * from recyclebin
2.进行恢复
flashback table table_name to before drop
五、补充
1.除上述操作,也可以对标添加注释,以便于自己或他人看得懂表格含义
comment on table table.column is 'description'
2.对表的数据进行操作后,需要执行提交操作 commit!!!