一、非空约束(not null)
1.功能
数据值不能为空
2.格式
字段名 数据类型 not null
3.实践
例如:定义newuser数据表 newuser,uid varchar(20)primary key , uname varchar(20)not null
第一组不定义uname非空
第一步
drop table newuser;
create table newuser(uid varchar(20)primary key,uname varchar(20) not null);
第二步尝试向newuser中填充数据,并让uname为空值
insert into newuser values(10,'王一');
insert into newuser (uid) values(20);
第三步查看数据表中数据
select * from newuser;
三、DEFUALT约束
1.功能
用于指定字段的默认值
2.格式
字段名 数据类型 defualt
3.实践
例如定义newuser数据表
第一步不加默认值
drop table newuser;
create table newuser(uid varchar(20) primary key,uname varchar(20) not null,nation varchar(10));
insert into newuser(uid,uname) values(10,'王一');
insert into newuser(uid,uname) values(20,'张三');
insert into newuser values(30,'王五','汉族');
select * from newuser;
第二步加默认值
drop table newuser;
create table newuser(uid varchar(20) primary key,uname varchar(20) not null,nation varchar(10) default '汉族');
insert into newuser(uid,uname) values(10,'王一');
insert into newuser(uid,uname) values(20,'张三');
insert into newuser values(30,'王五','汉族');
select * from newuser;
四、UNIQUE约束
1.功能:指数据表中一列或一组列中只包括唯一值。
2.格式
字段名 数据类型 UNIQUE
3。实践
例如:创建一个部门信息表(depton int (10),dname varchar(20)UNIQUE)
第一步不加唯一约束
create table dept(deptno int(10),dname varchar(20));
insert into dept values(10,'云计算技术与应用产业学院');
insert into dept values(20,'云计算技术与应用产业学院');
select * from dept;
第二步加唯一约束
create table dept(deptno int(10),dname varchar(20) unique);
insert into dept values(10,'云计算技术与应用产业学院');
insert into dept values(20,'云计算技术与应用产业学院');
select * from dept;
五、FOREIGN KEY约束
(1)功能 外键约束 不止在一表中进行而是在表中的数据与另一个表中进行
(2)表间关系
外键约束强制实施表与表之间的完整性。外键是表中的特殊字段,表示了相关联两个表的联系
2、格式
CONSTRAINT 外键名 FOREIGN KEY (外键字段名)
REFERENCES 主表名(主键字段名)
注意(1) 定义外键约束需要放到子表中
(2)如何判断主子表? 通过建立桥梁的字段名称,如果是其中一张表的
主键约束那么这张表就是主表。另一张表就是从表。
(3)外键约束定义步骤首先需要完成主键约束的定义其次再完成外键约束的定义
(4)外键约束的删除步骤首先完成外键约束的删除其次再完成主键约束的删除。
(5)有外键约束的相关数据表填充数据的时候要先添加主表数据,再添加子表中的数据
(6)有外键约束的相关数据表删除数据的时候要先删除子表中的数据,再删除主表中的数据
3.实践
例如:创建GoodsType表和Goods表,GoodsType表结构,Goods表结构其中主表为GoodsType,从表Goods。
GoodsType表(主表):类别ID(TID)[主键约束]和类别名称(TNAME)
create database onlinebigdata;
use onlinebigdata;
第一步创建goodstype数据表
CREATE TABLE GoodsType
(tID INT PRIMARY KEY
tName VARCHAR(30) NOT NULL);
第二步创建goods数据表
CREATE TABLE Goods
(gdID INT PRIMARY KEY AUTO_INCREMENT,
tID INT NOT NULL,
gdCode VARCHAR(30) NOT NULL UNIQUE,
gdName VARCHAR(30) NOT NULL,
gdPrice DECIMAL(8,2),
CONSTRAINT FK_tID FOREIGN KEY (tID) REFERENCES GoodsType (tID));
例如:修改Goods表的定义,增加外键约束的
第一步尝试向goods和goodstype数据表中填充数据 注意:填充数据时先主后子
insert into goodstype values(10,'图书');
insert into goods values(1001,10,9001,'数据库库',22.5);
insert into goods values(1002,20,8001,'英语'.22.5);
update goods
ser tid=20
where tname='数据库库';
select * from goodstype;
select * from goods;
第二步尝试从goodstype数据表中删除记录
delete from goodstype
where tid=10;
select * from goodstype;
select * from goods;
第三步我们确实需要实现级联更新和级联删除的功能
drop table Goods;
CREATE TABLE Goods
(gdID INT PRIMARY KEY AUTO_INCREMENT,
tID INT NOT NULL,
gdCode VARCHAR(30) NOT NULL UNIQUE,
gdName VARCHAR(30) NOT NULL,
gdPrice DECIMAL(8,2),
CONSTRAINT FK_tID FOREIGN KEY (tID) REFERENCES GoodsType(tID)
ON UPDATE CASCADE
ON DELETE CASCADE);
测试级联更新和级联删除
(1)级联更新
insert into goods values(1001,10,9001,'数据库库',22.5);
select * from goodstype;
select * from goods;
update goodstype
set tid=20;
select * from goodstype;
select * from goods;
(2)级联删除
delete from goodstype
where tid=20;
select * from goodstype;
select * from goods;