定义:建表时在各字段类型后设置,用来对用户操作表的数据进行约束。

代码:

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数据约束的更多相关文章

  1. Mysql数据约束 整理

    数据约束 1.默认值: 作用: 当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意: 1)对默认值字段插入null是可以的. 2)对默认值字段可以插入非null   CREATE TABLE ...

  2. Java基础87 MySQL数据约束

    1.默认值 -- 创建表student1,设置address字段有默认值 create table student1 ( id int, name ), address ) default '广东省深 ...

  3. MySQl数据约束练习

    默认值约束   1 CREATE TABLE USER( 2 uid INT, 3 uname VARCHAR(10), 4 address VARCHAR(30) DEFAULT '山东省' 5 ) ...

  4. MySQL数据约束和关联查询

    1 默认值deafult:在建表的时候字段后使用 default ,默认值字段允许为null. 2 非空 not null:在建表的时候字段后使用  not null. 非空字段必须赋值,并且不能是n ...

  5. MYSQL中约束及修改数据表

    MYSQL中约束及修改数据表 28:约束约束保证数据的完整性和一致性约束分为表级约束和列级约束约束类型包括:    NOT NULL(非空约束)    PRIMARY KEY(主键约束)    UNI ...

  6. mysql 数据操作 单表查询 where 约束 目录

    mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...

  7. mysql之约束以及修改数据表

    数据约束的分类: ———————————————————————————————————————————————————— 外键约束的要求解析: //在my文件中的这句话代表着搜索引擎,如果不是的就需 ...

  8. Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle

    Atitit. 数据约束 校验 原理理论与 架构设计 理念模式java php c#.net js javascript mysql oracle 1. 主键1 2. uniq  index2 3.  ...

  9. MySQL 之存储引擎与数据类型与数据约束

    一.存储引擎场景 1.InnoDB 用于事务处理应用程序,支持外键和行级锁.如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那 ...

随机推荐

  1. EF6 按条件更新多行记录的值

    using (var db = new MyDbContext()) { string fromUser = ""; //sender string toUser = " ...

  2. 毕向东_Java基础视频教程第19天_IO流(15~17)

    第19天-15-IO流(读取键盘录入) InputStreamReader是字节流通向字符流的桥梁,它使用指定的charset读取字节并将其解码为字符.它使用的字符集可以由名称指定或显式给定,或者可以 ...

  3. Centos7下面安装eclipse

    下载Eclipse压缩包 下载路径 http://mirrors.neusoft.edu.cn/eclipse/technology/epp/downloads/release/luna/SR2/ec ...

  4. Activator 通过SSH解锁屏幕等手势操作

    来源:https://qunwang6.github.io/blog/Activator/ Activator 发表于 2015-10-24   |   分类于 iOS Activator Activ ...

  5. Programming Assignment 3: Baseball Elimination

    编程作业三 作业链接:Baseball Elimination & Checklist 我的代码:BaseballElimination.java 问题简介 这是一个最大流模型的实际应用问题: ...

  6. Java自带线程池和队列详解

    Java线程池使用说明 一简介 线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的.在jdk1.5之后这一情况有了很大的改观.Jdk1.5之后 ...

  7. The Struts dispatcher cannot be found. This is usually caused by using Struts

    对于struts2中的问题: org.apache.jasper.JasperException: The Struts dispatcher cannot be found. This is usu ...

  8. 洛谷 P4841 城市规划

    构造简单无向图的EGF: \[ G(x)=\sum_{i}^{\infty}2^{\binom{i}{2}}\cdot\frac{x^i}{i!} \] 构造简单无向连通图的EGF: \[ F(x)= ...

  9. Django settings.py 的media路径设置

    转载自:http://www.xuebuyuan.com/676599.html 在一个 models 中使用 FileField 或 ImageField 需要以下步骤: 1. 在你的 settin ...

  10. How Flask Routing Works

    @How Flask Routing Works The entire idea of Flask (and the underlying Werkzeug library) is to map UR ...