第4步---MySQL的约束
保证表中的数据的完整性和有效性的
不能为空
不能重复
主键
自增
非空
默认约束
0填充约束
外键约束
1.约束
1.1主键约束
-  主键 primary key 
-  自增 auto_increment 
-  非空 not null 
-  默认约束 default 
-  唯一性unique 
-  0填充约束 zerefill 
-  外键约束 foreign key 
1.简介:最重要的约束。约束一个列或者是多个列。可以更快的找个对应的行。唯一+非空约束。只能有一个主键。
2.关键字:primary key
3.默认唯一索引
1.2单列索引
-- =================================单列主键=================================
-- 创建新的表
DROP TABLE IF EXISTS student;
CREATE TABLE IF NOT EXISTS student(
id int  PRIMARY key,
name VARCHAR(20),
deptId int
)
-- 后面定义主键
DROP TABLE IF EXISTS student2;
CREATE TABLE IF NOT EXISTS student2(
id int  ,
name VARCHAR(20),
deptId int,
CONSTRAINT pk1 PRIMARY KEY(id)
)
主键作用
-  重复主键 

会出现下面的错误。

不能为空值
 
1.3联合主键
-- =================================联合主键=================================
-- 创建新的表 不指定外键的名称
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20),
PRIMARY KEY (id,deptId)
)
-- 创建新的表 指定外键的名称
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20),
CONSTRAINT  pk1  PRIMARY KEY (id,deptId)
)
作用:
-  可以单个为空 
-  不能全部是重复。可以部分是重复的。 
1.4修改表结构添加主键
-- =================================修改表=================================
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ,
deptId int,
name VARCHAR(20)
)
-- 修改语句
-- 添加单个主键
ALTER TABLE student3 ADD PRIMARY KEY (id);
-- 添加多个主键
ALTER TABLE student3 ADD PRIMARY KEY (id,deptId);
1.5删除主键约束
-- =================================删除主键=================================
-- 单列和组合主键都是这个删除的方法
ALTER TABLE student3 DROP PRIMARY KEY;
虽然删除了主键但是不为空的约束还是存在的。
1.6自增长约束
1.设置自增
-- =================================自增长约束=================================
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment,
deptId int,
name VARCHAR(20)
)

-  增长的话增长到这个类型的最大的值 
-  必须是整型 
-  可以执行开始的值和步长 
2.设置初始的值
-- 初始值
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int,
name VARCHAR(20)
) auto_increment =100;
-- 采用修改表的形式
-- 采用修改表的形式修改自增的初始值
ALTER TABLE student3 auto_increment =200;
delete删除数据的时候还是从原先的基础上继续进行自增
但是truncate不是从1考试进行自增的。
2.非空约束
设置表的字段不能为空
-- =================================非空约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int  ,
name VARCHAR(20)  NOT NULL
)
-- 修改表的时候添加
ALTER TABLE student3  MODIFY deptId VARCHAR(20)  NOT NULL;
-- 删除的时候就去掉就行
ALTER TABLE student3  MODIFY name VARCHAR(20)  ;
	

3.默认值约束
-- =================================默认值约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int PRIMARY KEY auto_increment ,
deptId int  UNIQUE,
name VARCHAR(20)  NOT NULL DEFAULT '用户名'
)
-- 修改表的时候添加(默认删除重新加)
ALTER TABLE student3  MODIFY name  VARCHAR(20)  NOT NULL   DEFAULT '用户名修改';
-- 删除默认值约束
ALTER TABLE student3  MODIFY name  VARCHAR(20)  NOT NULL ;
4.零填充约束
插入数据的时候当前字段的值的长度小于定义的长度的时候,就会在值得前面补上对应得0
zerefill默认为int(10)
默认加了无符号得限制。数值范围是原先得两倍
-- =================================默0填充约束=================================
-- 创建表的时候设置
DROP TABLE IF EXISTS student3;
CREATE TABLE IF NOT EXISTS student3(
id int ZEROFILL  auto_increment,
deptId int  UNIQUE,
name VARCHAR(20)  NOT NULL DEFAULT '用户名',
PRIMARY KEY  (id)
)
-- 删除
ALTER TABLE student3 MODIFY id INT;
 
下面是添加得数据

以上所有的操作都是可以在navicat可视化界面中进行找到并进行设置的。


















