DCL 数据控制语言 Data control language
之前说过的授权和收权利语句
grant, revoke
DDL 数据定义语言 Data define language
create alter,drop语句,创表,修改表,删除
创建表
create table $tablename$(
id int,
name,varchar(5) --需要声明最大长度
money,number(6,2) --9999.00
)
-- 把其他的表的内容与结构复制生成一个新表,新表没有约束
-- 将其它表的数据二复制到新表中(新表事先 不存在)
-- 新表具有与查询的表格基本相同的结构,但不会有约束(主键、外键、默认约束..)。
create table $tablename$ as $othertablename$
-- 把查询的结果的内容和结构生成一个新表
create table $tablename$ as select * from student
查看表结构
desc $tablename$
修改表
添加约束
约束用于限制加入表中的数据的合法性:
- 1) NOT NULL:非空约束
- 2) UNIQUE :唯一约束 UN_表名_列名 规范格式
- 3) PRIMARY KEY :主键约束 PK_表名_列名
- 4) FOREIGN KEY :外键约束 FK_表名_列名
- 5) CHECK :检查约束 CHK_表名_列名
- 6) DEFAULT :默认约束 DF_表名_列名
- 默认约束
alter table $tablename$ modify (列名 default 默认值);
--例
alter table student modify (age default 18);
- 唯一约束
alter table $tablename$ add constraint UN_$tablename_$columnname$ unique(列名)
--例
alter table student add constarint UN_student_num unique(num);
- 主键约束
alter table $tablenamae$ add constraint PK_$tablename_$columnname$ primary key(列名);
--例
alter table student add constraint PK_student_num primary key(num);
--复合主键(联合主键)
alter table student add constraint PK_student_numandage primary key(num,age);
- 检查约束
alter table $tablename$ add constraint CHK_$tablename_$columnname$ check(条件);--条件 且and 或or
--例
alter table student add constraint CHK_student_age check(age>=18 and age<=22);
删除约束
alter table $tablename$ drop constraint 约束名
--例
alter table student drop CHK_student_age;
禁用约束
alter table $tablename$ disable constraint 约束名
--例
alter table student disable constraint CHK_student_age;
修改表名
--修改表名
alter table $oldtablename$ rename to $newtablename$;
添加列
alter table $tablename$ add $列名$ $数据类型$;
删除列
alter table $tablename$ drop column $列名$;
修改列(列数据类型或数据最大长度)
alter table $tablename$ modify $列名$ $数据类型$
创建表同时加入约束条件
create table $tablename$(
id int,
name,varchar(5),
money,number(6,2),
constraint pk_CK check...
)
--这一种不能指定约束名,而是系统自动生成的约束名,删除的时候比较麻烦
create table $tablename(
id int not null primary key,
name varchar(5),
)
删除表
drop table $tablename$ --删除的表放入回收站中
drop table $tablename$ purge --彻底删除表
show recyclebin; --在PLSQL Developer中看不见,需要在sqlplus窗口执行
purge recyclebin; --清空回收站
恢复表
flashback table $tablename$ to before drop;