DCL 數據控制語言 Data control language 之前說過的授權和收權利語句 grant, revoke DDL 數據定義語言 Data define language create alter,drop語句,創表,修改表,刪除 創建表 查看表結構 修改表 添加約束 約束用於限制加入 ...
DCL 數據控制語言 Data control language
之前說過的授權和收權利語句
grant, revoke
DDL 數據定義語言 Data define language
create alter,drop語句,創表,修改表,刪除
創建表
create table $tablename$(
id int,
name varchar2(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_表名_列名
1.預設約束
alter table $tablename$ modify (列名 default 預設值);
--例
alter table student modify (age default 18);
2.唯一約束
alter table $tablename$ add constraint UN_$tablename_$columnname$ unique(列名)
--例
alter table student add constarint UN_student_num unique(num);
3.主鍵約束
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);
4.檢查約束
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);
5.外鍵約束
存在外鍵的表稱為外鍵表
被外鍵引用的表稱為主鍵表
- no action(預設)
刪除主鍵表的某一數據,會拒絕刪除,需要先刪除外鍵表中引用了主鍵表某個數據的那些數據,才能刪除主鍵表的該條數據
- cascade 級聯刪除
當刪除主鍵表的某條數據,外鍵表引用了主鍵表的該數據的所有數據都會一起刪除 - set null
當刪除主鍵表的某條數據,外鍵表引用了主鍵表的該數據的所有數據的該列都會設置為null
alter table tablename add constraint FK_ foreign key() references () [on delete cascade/set null]
cascade update 級聯更新類似
刪除約束
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; --清空回收站
刪除表數據但不刪除表結構
truncate table $tablename$;
恢復表
flashback table $tablename$ to before drop;