博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL命令:约束
阅读量:4570 次
发布时间:2019-06-08

本文共 1657 字,大约阅读时间需要 5 分钟。

约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性

约束分类:

约束类型与关键字:

  • 主键      PRIMARY KEY
  • 默认值  DEFAULT
  • 唯一      UNIQUE
  • 外          FOREIGN KEY
  • 非空      NOT NULL

示例MySQL语句code:

Github地址:

CREATE DATABASE mysql_kumata;use mysql_kumata;/*班级表*/CREATE TABLE class(  class_name CHAR(20) NOT NULL, --非空键  student_num INT(10) DEFAULT '10',  --默认键  CONSTRAINT cls_pk PRIMARY KEY(cls_name) --主键  --自定义主键名:cls_pk,主键:cls_name);/*学生信息表*/CREATE TABLE student(  id     INT(10) PRIMARY KEY,  --主键  name   CHAR(20),  --没有非空约束  age    INT(10) NOT NULL,  --非空约束  phone  INT(12) NOT NULL,    UNIQUE (id), --唯一键  CONSTRAINT stu_fk FOREIGN KEY (in_cls) REFERENCES class(class_name) --外键  --自定义外键名:stu_fk 外键:in_cls,参考列为calss表的class_name列);/*个人作品表*/CREATE TABLE project(  pro_num  INT(10) NOT NULL,  pro_name CHAR(20) NOT NULL,  start_data DATE NOT NULL,  end_date   DATE DEFAULT '2018-07-01',  of_cls     CHAR(20) REFERENCES class(class_name),  CONSTRAINT pro_pk PRIMARY KEY (pro_num,pro_name) --复合主键);

各关键字介绍:

主键      PRIMARY KEY

主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值;如果的多列组合的主键约束, 那么这些列都不允许为空值,并且组合的值不允许重复。

每个表最多只允许一个主键,建立主键约束可以在列级别创建,也可以在表级别上创建。 

MySQL的主键名总是PRIMARY, 当创建主键约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

  1. 通常情况下,我们会给每张表都会设置一个主键字段,用来标记记录的唯一性
  2. 但是不建议把业务含义字段作为主键,因为随着业务的变化,业务字段可能会出现重复。
  3. 建议给每张张独立添加一个叫id的字段,把这个id字段设置成主键,用来作为记录的唯一性。

默认值  DEFAULT

当没有插入数值的时候默认值才会起作用

唯一      UNIQUE

unique代表唯一约束。唯一约束是指定table的列或列组合不能重复,保证数据的唯一性。虽然唯一约束不允许出现重复的值,但是可以为多个null,同一个表可以有多个唯一约束,多个列组合的约束。

外          FOREIGN KEY

外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据, 然后才可以删除主表的数据。

非空      NOT NULL

当某个字段必须要值(不能不插入数值,也不能插入null),就给这个字段添加一个非空约束

 

 

转载于:https://www.cnblogs.com/kumata/p/9304183.html

你可能感兴趣的文章
iphone 如何清空UIWebView的缓存
查看>>
Java——变量
查看>>
定时关闭AWS上的EC2机器实例
查看>>
grep、awk、sed命令详解1
查看>>
Jenkins邮件配置
查看>>
MYSQL数据库的设计与调优
查看>>
在Apache下开启SSI配置
查看>>
Jmeter:图形界面压力测试工具
查看>>
java线程:Atomic(原子)
查看>>
环境准备—之—linux下安装python3和pip3
查看>>
做了这么久的 DBA,你真的认识 MySQL 数据安全体系?【转】
查看>>
Shell习题100例
查看>>
jquery操作select
查看>>
linq 左连接实现两个集合的合并
查看>>
MFC 线程中CWnd对象
查看>>
html文本太长显示为省略号的方法
查看>>
Flask + WSGI + Nginx 云部署
查看>>
站立会议05(冲刺2)
查看>>
Java学习(final、static关键词)
查看>>
怎样判断网址是否被微信封 微信域名检测接口的实现
查看>>