MySQL数据库上:DDL语句的基础巩固

               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
-------------------------------------------------------------------------------------



你可能感兴趣的:(数据库,sql,SQL基础,MySQL基础,mysql)