mysql常用的约束_MySQL常用的约束条件
约束条件
约束条件是在表和字段上强制执行的数据检验规则,
它是为了防止不规范的数据进入数据库,
在我们对数据执行插入、修改、删除等一系列操作的时候,
数据库管理系统会自动按照指定的约束条件对数据进行监测,
它主要是对空值和重复值的检测,来保证数据存储的完整性和准确性。
按照约束的不同功能,MySQL中常用的约束条件有以下六种。
1.主键约束
主键是表中非空不重复的字段,它可以唯一的标识表中的一条记录。
作为主键的字段取值不能为空,也不可以重复,并且一张表中只能有一个主键,
但是构成主键的字段可以是一个也可以有多个。
也就是说主键只能有一个,但是一个主键可以由多个字段构成,
当多个字段的取值完全一样的情况下才会违反主键约束。
①添加主键约束的方法1:
creat table (
primary key,
,
……
);
示例:
create table employee(
e_id int primary key,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int
);
②添加主键约束的方法2:
create table (
,
,
......
,
[constraint 主键约束名] primary key(字段名1[,字段名2,...字段名n])
);
示例:
create table employee(
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
primary key(e_name,e_sex)
);
③删除主键约束的方法:
alter table drop primary key;
示例:
alter table employee drop primary key;
2.唯一约束
唯一约束要求指定字段的数据取值不能重复,可以是空值,但是空值也只能出现一次。
①添加唯一约束的方法1:
creat table (
unique,
,
……
);
示例:
create table employee(
e_id int,
e_name varchar(5) unique,
e_sex varchar(5),
e_age int,
d_id int
);
②添加唯一约束的方法2:
creat table (
,
,
……
,
[constraint 唯一约束名] unique (字段名1[,字段名2...字段名n])
);
示例:
create table employee(
e_id int,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
unique (e_name,e_sex)
);
③删除唯一约束的方法:
alter table drop index ;
如果单个字段没有指定唯一约束名,则默认的唯一约束名为字段名。
如果是多个字段组合为唯一约束时候,默认的唯一约束名为第一个字段的名称。
如果指定了约束名,则删除的时候写约束名。
示例:
alter table employee drop index e_name;
3.自动增长约束
自动增长约束是要求指定字段的数据取值自动增长,默认是从1开始,
每增加一条记录,这个字段的取值就会加1,
所以它只适用数值型和日期时间型字段,并且要配合主键一起使用。
①添加字段增长约束的方法:
creat table (
primary key auto_increment,
,
……
);
示例:
create table employee(
e_id int primary key auto_increment,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int
);
②删除自动增长约束的方法:
alter table modify ;
示例:
alter table employee modify e_id int;
4.非空约束
非空约束是要求指定字段的取值不能为空值。
①非空约束的方法:
creat table (
not null,
,
……
);
示例:
create table employee(
e_id int,
e_name varchar(5) not null,
e_sex varchar(5),
e_age int,
d_id int
);
②删除非空约束的方法:
alter table modify [null];
示例:
alter table employee modify e_name int;
5.默认约束
默认约束是指在插入新记录的时候,如果没有为指定字段赋值,
数据库管理系统会自动为这个字段赋值为默认约束设定的值。
①添加默认约束的方法:
creat table (
default value,
,
……
);
示例:
create table employee(
e_id int,
e_name varchar(5),
e_sex varchar(5),
e_age int default 0,
d_id int
);
②删除默认约束的方法:
alter table modify ;
示例:
alter table employee modify e_age int;
6.外键约束
外键约束是指一个表中的字段取值依赖于另一个表中字段的值。
主键所在的表叫主表,外键所在的表叫从表。
每一个外键值必须与主表中的主键值相对应。
①添加外键约束的方法:
creat table (
,
,
……
,
[constraint 外键约束名] foreign key(字段名) references (主键字段)
);
示例:
-- 创建一个主表
create table department(
d_id int primary key,
d_name varchar(5),
d_num int);
-- 创建从表的同时添加外键
create table employee(
e_id int primary key,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
foreign key(d_id) references department(d_id)
);
②删除外键约束的方法:
alter table drop foreign key ;
先删除从表再删除主表。
先删除外键约束,再删除表。
示例:
alter table employee drop foreign key fk_d_id;
7.小结
约束条件 特点
主键约束(PRIMARY KEY) 非空不重复
非空约束(NOT NULL) 不能为空
唯一约束(UNIQUE) 不能重复
自增字段(AUTO_INCREMENT) 自动增长
默认约束(DEFAULT) 默认值
外键约束(FOREIGN KEY) 与主键相对应
mysql常用的约束_MySQL常用的约束条件相关推荐
- mysql 外键约束_MySQL之外键约束(FOREIGN KEY)
定义: MySQL外键约束(FOREIGN KEY)用来在两个表的数据之间建立链接,它可以是一列或者多列.一个表可以有一个或多个外键. 外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每 ...
- mysql 存储引擎作用_MySQL常用存储引擎功能与用法详解
MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV. ...
- mysql 默认系统表_MySQL常用系统表大全(转)
用来了解sql语句,触发器,存储过程怎么跑的 全文转自MySQL常用系统表大全 - xlxxcc的专栏 - CSDN博客blog.csdn.net MySQL5.7 默认的模式有:informati ...
- mysql 命令源码_MySQL常用命令
创建用户 CREATE USER 'root'@'%' IDENTIFIED BY 'password'; 创建用户并赋予指定权限 grant create,select,update,insert, ...
- mysql切换系统盘命令_mysql常用命令
一.连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.例1:连接到本机上的MYSQL. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -ur ...
- mysql 索引与约束_MySQL之索引与约束条件
字段约束 作用 顾名思义就是给字段加以限制 其保证数据库的完整性与一致性 通过约束条件防止数据库产生一些不必要的数据 保证数据库的正确性 相容性 安全性 null和not null mysql> ...
- MySQL退出选择表格_MySQL常用命令
一.连接MySQL 格式:mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MySQ: 首先在打开cmd窗口,输入mysql -uroot -p ,然后空格进入MySQL控制台, ...
- mysql最常用的索引_mysql常用索引
1.索引 在关系数据库中,索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单.索引的作用相当 ...
- mysql命令的分类_MySQL常用命令分类汇总
一.查询状态类 1.查看当前有哪些数据库? mysql> show databases; 2.查看当前数据库有哪些表? mysql> use database1; mysql> s ...
最新文章
- keras 修仙笔记一
- python学起来难不难-Python自学难不难,培训班推荐?
- css中小型大写,css3 – OpenType小型大写的CSS回退
- Latex论文排版技巧再总结
- CodeForces - 1000D Yet Another Problem On a Subsequence(动态规划+组合数学)
- 音视频技术开发周刊 54期
- 透明怎么弄_最新版微信如何设置透明背景?这样设置,效果令人惊喜
- python 网络服务器框架_Django是Python下的一款网络服务器框架
- 再谈Android抓包工具与Android抓包思路
- 链接与自定义函数名同名的库函数
- Java笔记(韩顺平Java基础15-20章)
- Python统计微信消费!生成微信消费账单!真强大!
- 霍尔FOC转子位置估计算法
- eclipse与数据库连接插入或者拿出数据出现乱码该如何解决。
- 美团机器学习实践 密码_机器学习遇到密码学的地方
- igfxpers.exe
- 一文彻底理解乐观锁与悲观锁
- 护肤-洗护用品-的那些事
- FPGA(四):高级设计
- 通达信千元主图公式源码