1.NOT NULL 非空约束
(1)使用DDL(Database Difinion Language)语言将非空约束建立
在表结构上
create table temp(
id int not null,
name varchar(255) not null default 'ABC',
gender char(2) null); --数据库定义语言
--测试
mysql> insert into temp(id,gender) values(id,'男');
(2)使用sql语句添加非空约束
mysql> alter table temp modify gender char(2) not null
default '男';
(3)取消非空约束
mysql> alter table temp modify gender char(2) null;
2.唯一约束 :Mysql给唯一约束列名默认创建了唯一索引
(1)通过表结构创建
mysql> create table temp2(
-> id int not null,
-> name varchar(25),
-> password varchar(10),
-> constraint uq_name_password unique(name,password)
-> );
(2)通过sql语句建立唯一约束
添加唯一约束
alter table temp add unique(name, password);
添加唯一性约束
alter table temp modify name varchar(25) unique;
(3)删除约束
alter table temp drop index(关键字) name(约束名称);
3.主键约束:是相当于唯一约束和非空约束的组合
(1)创建唯一主键的方式
第一种: create table temp(
id int not null primary key,
name varchar(25)
);
第二种:create table temp(
id int not null,
name varchar(25),
primary key(id)
)
(2)组合主键
mysql> create table temp3_2(
-> id int not null,
-> name varchar(12),
-> pwd varchar(25),
-> constraint pk_name_pwd primary key(name,pwd)
-> );
第二种:通过sql建立组合主键
alter table temp add primary key(name, pwd);
(3)删除主键
ysql> alter table temp3_2 drop primary key;
4.通过表结构设置自增
5.mysql的外键约束
(1)创建外键列
主表
create table classes(
classes_id int auto_increment primary
key,
name varchar(20)
);
create table student(
id int auto_increment,
name varchar(22),
constraint pk_id primary key(id),
classes_id int references classes(id)
);
(2)创建外键约束
create table student(
id int auto_increment primary key,
name varchar(25),
classes_id int,
foreign key(classes_id) references classes(id)
);
6.外键约束
第一种:采用默认约束名称建立外键约束
(1)主表中的id必须是主键约束或者是唯一约束
(2)从表中的外键值必须在主表中能找到或者为空即外键值可
以为空
(3)在表结构中创建外键约束的语句是
foreign key(外键字段) references 主表名称(主表中的
主键字段)
create table student(
id int auto_increment primary key,
name varchar(25),
classes_id int,
foreign key(classes_id) references classes(id)
);
第二种:通过指定约束名建立外键约束名
mysql> create table student(
-> sid int not null primary key,
-> class_id int,
-> constraint FK_CLASS_ID foreign key(class_id)
references classess(cid)
-> );
7.外键约束的建立:多列外键组合,必须使用表级别用法
--建立主表
mysql> create table classes2(
-> id int,
-> name varchar(12),
-> number int,
-> primary key(name,number)
-> );
--建立从表
mysql> create table student2(
-> sid int not null primary key,
-> sname varchar(10),
-> cname varchar(10),
-> cnumber int,
-> foreign key(cname,cnumber) references
classes2(name,number)
-> );
8.SQL语句中增加外键约束
(1)建立默认约束名称的外键
> alter table student2 add foreign key(cname,cnumber)
references classes2(name,number);
(2)建立指定约束名称的外键
mysql> alter table student2 add constraint
Fk_cname_cnumber foreign key(cname,cnumber) references
classes2(name,number);
9.在同一张表结构中建立外键
mysql> create table tree(
-> tid int not null primary key,
-> tname varchar(20),
-> parent_id int,
-> foreign key(parent_id) references tree(tid)
-> );
10.级联删除
建立表结构的时候添加 on delete cascade;如果在建立外键约束的时候,没有添加on delete cascade,这时
非要删除数据,则先删除从表,在删除主表数据就可以。