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

代码:

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. 移动端App开发 - 01 - 开篇

    移动端App开发 - 01 - 开篇 从此笔记之后开启移动端 app 开发学习 该系列笔记去掉所有无关重要的东西,简介干练 我的移动端App开发笔记 1.移动端App开发 - 02 - iPhone/ ...

  2. 近期关于CI/CD策略以及git分支模型的思考

    近两个月由于个人处于新环境.新项目的适应阶段,没怎么提笔写些文章.中间有好几个想法想记录下来分享,但受限于没有很好的时间段供自己总结思考(也可以总结为间歇性懒癌和剧癌发作),便啥也没有更新.借这个周末 ...

  3. 养兔子Fibo函数优化

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Gitlab installtation

    环境:Centos7 安装配置(安装开启http和sshd): 1 yum -y install curl openssh-server postfix 2 systemctl enable sshd ...

  5. 【Oracle】等待事件详细内容

    一.等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不 ...

  6. Mysql进阶-day3

    多实例介绍: mysql多实例就是一台服务器开启多个不同的服务端口(3306,3307),运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供各自的服务端口. 这些m ...

  7. Kafka生产者producer简要总结

    Kafka producer在设计上要比consumer简单,不涉及复杂的组管理操作,每个producer都是独立进行工作的,与其他producer实例之间没有关联.Producer的主要功能就是向某 ...

  8. 12、Node.js 路由

    这里实现的好像就是把路由和服务器相结合起来.具体需要引入 url 模块和 http 模块为路由提供请求的 URL 和其他需要的 GET 及 POST 参数,随后路由需要根据这些数据来执行相应的代码需要 ...

  9. 11、Node.js 函数

    内容:普通函数,匿名函数,函数传递是如何让HTTP服务器工作的 ###普通函数例子: function say(word) { console.log(word); } function execut ...

  10. Spring Cloud(中文版)

    原文链接:Spring Cloud I.云原生应用 Spring Cloud上下文:应用上下文服务 2.1.Bootstrap应用程序上下文 2.2.应用程序上下文层次结构 2.3.更改Bootstr ...