MySQL数据约束
定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。
代码:
1.默认值 : default ' '
作用:当用户对使用默认值的字段不插入值的时候,就使用默认值(自动填充)。
注意:(1) 对默认值字段插入null是可以的
(2) 对默认值字段可以插入非null
create table student(
id int,
name varchar(20),
address varchar(20) default '山东淄博' /*默认值*/
);
2.非空 : not null
作用: 限制字段必须赋值, ' ' 空字符也是值
注意: (1)非空字符必须赋值
(2)非空字符不能赋null
create table student(
id int,
name varchar(20),
address varchar(20) not null /*非空*/
);
/*非空字段必须赋值*/
insert into student(id,name)values(1,'张三') /*添加失败,因为没有赋值*/
/*非空字符不能插入null*/
insert into student values(1,'张三',NULL) /*添加失败,因为赋值NULL*/
3.唯一 : unique
作用: 对字段的值不能重复
注意:(1)唯一字段可以插入null
(2)唯一字段可以插入多个null
create table student(
id int unique, /*int 唯一*/
name varchar(20),
address varchar(20)
);
insert into student(id,name)values(1,'张三')
insert into student values(1,'张三','山东淄博') /*添加失败,因为id重复了*/
4.主键: primary key
作用:非空 + 唯一
注意: (1)通常情况下,每张表都会设置一个主键字段。用于标记表中的每条记录的唯一性。
(2)建议不要选择表的包含业务含义的字段作为主键,建议给每张表独立设计一个非业务含义的id字段。
create table student(
id int unique, /*int 唯一*/
name varchar(20),
address varchar(20)
);
insert into student(id,name)values(1,'张三')
insert into student values(1,'张三','山东淄博') /*添加失败,因为id重复了 错误代码:Duplicate entry '1' for key 'PRIMARY'*/
insert into student values(null,'张三','山东淄博') /*添加失败,因为id没有赋值 错误代码:ERROR 1048 (23000): Column 'id' cannot be null*/
5.自增长:zerofill primary key auto_increment
create table student(
id int ZEROFILL PRIMARY KEY AUTO_INCREMENT, /*自增长,从0开始
zerofill :l填充 */
name varchar(20)
);
insert into student(name)values('张三');
insert into student(name)values('李四');
insert into student(name)values('王五');
/*id 自动对应为 0,1,2*/
6.外键: constraint 副表名称_主表名称_fk foreign key(副表中的某字段名) references 主表名称(主表主键)
作用:约束两种表的数据,副表中的外键字段必须与主表主键相对应
/*部门表(主表)*/
CREATE TABLE dept(
id INT PRIMARY KEY,
deptName VARCHAR(20)
) /* 修改员工表(副表/从表)*/
CREATE TABLE employee(
eid INT PRIMARY KEY,
empName VARCHAR(20),
deptId INT,/* 把部门名称改为部门ID */
/* 声明一个外键约束 /*
CONSTRAINT emlyee_dept_fk FOREIGN KEY(deptId) REFERENCES dept(id)
/* 外键名称 外键 参考表(参考字段)*/
)
注意:(1)被约束的表称为副表,约束别人的表称为主表,外键设置在副表上的!!!
(2)主表的参考字段通用为主键!
(3)添加数据: 先添加主表,再添加副表
(4)修改数据: 先修改副表,再修改主表
(5)删除数据: 先删除副表,再删除主表
MySQL数据约束的更多相关文章
- Mysql数据约束 整理
数据约束 1.默认值: 作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意: 1)对默认值字段插入null是可以的. 2)对默认值字段可以插入非null CREATE TABLE ...
- Java基础87 MySQL数据约束
1.默认值 -- 创建表student1,设置address字段有默认值 create table student1 ( id int, name ), address ) default '广东省深 ...
- MySQl数据约束练习
默认值约束 1 CREATE TABLE USER( 2 uid INT, 3 uname VARCHAR(10), 4 address VARCHAR(30) DEFAULT '山东省' 5 ) ...
- MySQL数据约束和关联查询
1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null. 2 非空 not null:在建表的时候字段后使用 not null. 非空字段必须赋值,并且不能是n ...
- MYSQL中约束及修改数据表
MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNI ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql之约束以及修改数据表
数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...
- Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle
Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq index2 3. ...
- MySQL 之存储引擎与数据类型与数据约束
一.存储引擎场景 1.InnoDB 用于事务处理应用程序,支持外键和行级锁.如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那 ...
随机推荐
- 3 使用selenium模拟登录csdn
之前通过F12开发者模式调试,获取网站后台服务器验证用户名和密码的URL之后,再构造post数据的方式会存在一个问题,就是对目标网站的验证机制不明确,构造post数据除了用户名和密码之外,还可能有更复 ...
- JAVA后台框架优化之日志篇
1.日志规范 各业务系统日志需要统一,以方便查看.收集日志, 日后统一ELK日志管理,以下为项目的日志配置, 这是兼容当前系统的日志,以后推行微服架构时会有变动,但日志存放方式不会改变,日后会推行sp ...
- 常用的自动化测试框架及测试框架的发展(Alpha)
前言:自动化测试在过去的20年已经有了很大的发展.最初的测试工具只提供了简单的捕捉/回访功能,维护性较差.而且脚本工具实现需要很强的开发技术和经验,而且数量众多的测试脚本加上没有文档记录因此维护起来较 ...
- maven(18)-mybatis generator插件
generator的作用 使用mybatis框架,在初始项目或修改数据库时,相应的要在JAVA项目中去写一些数据模型文件,DAO,映射XML等配置,而这个插件的作用就是自动生成这些文件,以节省大 ...
- 监控事件日志关键字规则(EventDescription)
新建规则--基于NT事件日志--自定义条件:EventDescription - 包含 - 关键字
- Python学习---JSON学习180130
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javascript对象: Json字符串就是js对象的一种表现形式(字符串的形式 ...
- Asp.Net MVC Identity 2.2.1 使用技巧(八)
一.添加管理链接 在View/Shared/_layout.cshtml,在页面导航上(28行)添加如下代码: @*通过身份验证并确认用户属于Admin角色显示管理菜单*@ @if (Request. ...
- HTML5 拖放、交换位置
设置元素为可拖放 draggable 属性设置为 true: <img draggable="true" /> 拖动什么 - ondragstart 和 setData ...
- Analysis of Algorithms
算法分析 Introduction 有各种原因要求我们分析算法,像预测算法性能,比较不同算法优劣等,其中很实际的一条原因是为了避免性能错误,要对自己算法的性能有个概念. 科学方法(scientific ...
- Python安装第三方库 xlrd 和 xlwt 。处理Excel表格
1. 到 https://pypi.python.org/simple/xlwt/ 和https://pypi.python.org/simple/xlrt/ 下载 xlrd 和 xlwt ...