一、primary key 约束
1、实践
例如:创建一个newuser,uid,varchar(20),uname,varchar(20)
插入数据
10,王一
10,王一
第一步创建数据表
create table newuser (uid varchar(20),uname varchar(20));
第二步
insert into newuser values(10,'王一');
insert into newuser values(10,'王一');
第三步
select * from newuser;
2、功能
一不能输入空值
二不能输入重复值
3、格式(格式不同,效果相同)
(1)列一级约束定义
字段名 数据类型 PRIMARY KEY
(2)表一级约束定义
create table table_name
(column...
constraint primary key(column_name)
4、实践
例如:创建一个newuser,uid varchar(20),uname varchar(20),uid列标题不能插入空值以及重复值。
10,王一
10,王一
null 王一
第一步 创建数据表,使用列一级约束完成约束
use onlinedb;
create table newuser (uid varchar(20) primary key,uname varchar(20));
第二步插入数据
insert into newuser values(10,'王一');
insert into newuser values(10,'王一');
insert into newuser(uname) values('王一');
第三步查看表中数据
select * from newuser;
例如:创建购物车信息表SCarInfo(表一级约束)
第一步定义购物车
create table SCarInfo
(gdID int,
uID int,
scNum int,
primary key(gdId,uID));
desc SCarInfo;
二、非空约束(not null)
1、功能
数据值不能为空
2、格式
字段名 数据类型 not null;
例如:定义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));
第二步 尝试向newuser中填充数据,并让uname为空值。
(10,'王一')
(20)
insert into newuser values(10,'王一');
insert into newuser(uid) values(20);
第三步查看
select * from newuser;
第二组定义uname非空
第一步
drop table newuser;
create table newuser (uid varchar(20) primary key,uname varchar(20) not null);
第二步 尝试向newuser中填充数据,并让uname为空值。
(10,'王一')
(20)
insert into newuser values(10,'王一');
insert into newuser(uid) values(20);
第三步查看
select * from newuser;
三、实现数据的完整性 DEFUALT约束
1、功能
用于指定字段的默认值
2、格式
字段名 数据类型 DEFAULT 默认值
3、实践
例如:定义newuser数据表(uid varchar(20) primary key,uname varchar(20) not null),添加nation列,默认为汉族
第一步不加默认值
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、格式
字段名 数据类型 QNIQUE;
3、实践
例如:创建一个部门信息表(deptno 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;
第二步加唯一约束
drop table 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、功能
(1)foreign key 约束又称外键约束,它与其他约束不同的之处在于,约束的实现不只在表中进行,而是相关联两个表之间的联系(基于多表的约束)
(2)、表间关系
外间约束强制实施表与表之间的引用完整性,外键是表中的特殊字符,表示相关联两个表的联系
3、格式
constraint 外键名 foreign key (外键字段名)放到从表
references 主表名(主表字段名)放到主表
注意:
(1)定义外键约束需要放到子表中
(2)如何判断主子表?通过建立桥梁的字段名称,如果是其中一张表的主键约束那么这张表就是主表。另一张就是从表。
(3)外键约束定义步骤首先要完成主键约束的定义其次在完成外键约束的定义。
(4)外键约束的删除步骤首先完成外键约束的删除,其次在完成主键约束的删除。
(5)有外键约束的相关数据填充数据表的时候要先添加主表数据,在添加子表的数据
(6)有外键约束的相关数据表删除数据的时候要先删除子表中的数据,在删除主表中的数据
4、实践
例如:创建一个GoodsType表和Goods表,主表为GoodType,从表为Goods。
GoodsType表:类型ID(TID)主键约束和类型名称(TNAM)
Goods(从表):
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表的定义,增加外键约束的级联更新和级联删除
constraint 外键名 foreign key (外键字段名)放到从表
references 主表名(主表字段名)放到主表
[on updata {cascade | set null | no action | restrict }]
[on updata {cascade | set null | no action | restrict }]
第一步尝试向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);
updata goods
set tid=20
where tname='数据库';
select * from goodstype;
select * from goods;
第二步 从goodstype数据表删除
delete from goodstype
where tid=0;
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;
六、删除约束
1、格式
alter table table_name drop 约束类型[约束名]
2、实践
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);
show create table goods;
alter table goods drop FOREIGN KEY FK_TID;
show create table goods;