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约束,下面是Oracle 10g 的运行效果:
//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 -------------------------------------------------------------------------------------
时间: 2024-10-11 14:38:36