SQL語言包括四種主要程序設計語言類別的語句:數據定義語言(DDL),數據操作語言(DML),數據控制語言(DCL)和事務控制語言。
數據庫模式定義語言DDL(Data Definition Language),是用於描述數據庫中要存儲的現實世界實體的語言。一個數據庫模式包含該數據庫中所有實體的描述定義。數據庫模式定義語言並非程序設計語言,DDL數據庫模式定義語言是SQL語言(結構化程序設計語言)的組成部分。
下面給出一個完整的DDL語句練習過程,在MySQL6測試通過:
//創建數據庫 create database if not exists mydb; //刪除數據庫 drop database mydb; //使用數據庫 use mydb; //建表 create table tb1 ( id int, name varchar(255) default 'anonymity', info text ); //查看該數據庫的表 show tables; //查看表結構 desc tb1; //截斷表:刪除表內所有數據但是保留表結構。(DDL)相對於delete(DML)執行效率更高 truncate tb1; //添加主鍵約束 alter table tb1 modify id int primary key; //添加唯一約束,即不允許出現重復值,但是可以出現多個null,因為null不等於null alter table tb1 modify name varchar(255) unique; //建表並添加主鍵、外鍵約束 create table tb2 ( id int primary key auto_increment, fid int, name varchar(255) default 'anonymity' not null, info text, #建立外鍵約束,約束名為tb2_fk, constraint tb2_fk foreign key(fid) references tb1(id) ); //刪除外鍵約束 alter table tb2 drop foreign key tb2_fk; //添加外鍵約束 alter table tb2 add foreign key(fid) references tb1(id);
MySQL對check約束的支持並不太好,雖然可以定義此約束,單沒有任何作用
//添加check約束,會添加成功,但不會生效 alter table tb1 add check(id>5); //下面可以正常執行 insert into tb1 values(1,'a','one');
//oracle數據庫支持check約束 create table tb3 ( id number(8), name varchar(255), check(id>100) ); //不滿足check約束將會出錯 insert into tb3 values(600,'six'); insert into tb3 values(6,'six');
------------------------------------------------------------------------------------- SQL> create table tb3 2 ( 3 id number(8), 4 name varchar(255), 5 check(id>100) 6 ); Table created SQL> insert into tb3 values(6,'six'); insert into tb3 values(6,'six') ORA-02290: check constraint (SCOTT.SYS_C005457) violated SQL> insert into tb3 values(600,'six'); 1 row inserted -------------------------------------------------------------------------------------