为了确保数据的完整性和唯⼀性,关系型数 据库通过约束机制来实现目。

一. unique 唯一性约束

值不可重复;

二. not null 非空约束

值不可为空;

三. default  默认值约束

当增加数据时没有插⼊值时,会自动插⼊默认值;

四. check 检查约束

mysql不支持该约束,但写入语句不会报错;

五. primary key 主键约束

主键约束 = 唯一性约束 + 非空约束,是一张表的代表性字段,

一张表只能有一个主键,

主键可以是一个字段,也可以是多个字段(联合主键,复合主键),

整形主键字段可以使用auto_increment(自动增长)修饰,

插入时不写主键字段值,值 = 上一列值 + 1;

六. foreign key 外键约束

外键是另一表的主键,常用来和其他表建立联系

外键与主键的引用类型必须一致,如果主键是int外键是char则不行

一定要匹配主表中 引用的列 ( 所要创建的外键是主表中的主键 )

主键和外键的字符编码必须一致,如果主表为utf8,则此表也要为utf8

--添加方式

(注:文中添加方式仅为示例,实际同时对一个字段同

时添加多个约束会有bug,具体原因可以参见约束原理)

--第一种,创建表时在修饰字段末直接添加,不支持添加foreign key

create table stu(sid int unique,sname char(20));

create table stu(sid int not null,sname char(20));

create table stu(sid int default 0,sname char(20));

create table stu(sid int primary key,sname char(20));

--第二种,创建表时单独添加,constraint表示起别名,不支持添加default

create table stu(sid int,

sname char(20),

constraint unique_stu unique(sid),

constraint notnull_stu not null(sid),

constraint pk_stu primary key(sid),

constraint fk_stu foreign key(sid) references s(sid)

);

--第三种,表已经存在,且字段下的所有值符合约束条件

alter table stu add constraint unique_stu unique(sid);

alter table stu add constraint notnull_stu not null(sid);

alter table stu add constraint pk_stu primary key(sid);

alter table stu add constraint fk_stu foreign key(sid) references s(sid);

--查询约束信息,可查看约束名,table表示表名

show keysfromtable;     --删除约束,index表示约束名,table表示表名

drop index on table;

MySQL中字段约束有哪些_mysql字段约束相关推荐

  1. mysql中distinct走索引吗_MySQL中索引优化distinct语句及distinct的多字段操作

    MySQL通常使用GROUPBY(本质上是排序动作)完成DISTINCT操作,如果DISTINCT操作和ORDERBY操作组合使用,通常会用到临时表.这样会影响性能. 在一些情况下,MySQL可以使用 ...

  2. MySQL中的升序降序以及字段的升序降序

    MySQL中 升序为asc 降序为desc 例如: 升序:select   *  from  表名 order by  表中的字段 asc(MySQL中默认是升序排列,可不写) : 降序:select ...

  3. MySQL存储布类型的值_mysql 字段存储类型

    1.数字类型 有符号                         无符号                                  存储(bytes) tinyint -128到127   ...

  4. mysql字段类型详解_MySQL字段类型详解

    MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段 ...

  5. MySQL中的哥哥表、妹妹字段,是什么鬼?

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. 晚上,我被叫进宽大的办公室,总监正在煮茶.高压锅煮着长嘴茶壶,水蒸气缭绕.领导举手之间,淡黄茶水奔涌而出,倒立而下浇上茶叶 ...

  6. 在mysql中怎样设置值唯一_mysql怎么设置行值唯一?

    mysql可通过给行(字段)添加唯一性约束来设置行值唯一,语法格式"CREATE TABLE 表名 (字段名 数据类型 UNIQUE);"和"ALTER TABLE 表名 ...

  7. mysql的check约束怎么设置_MySQL检查约束(CHECK)

    MySQL 检查约束(CHECK)是用来检查数据表中字段值有效性的一种手段,可以通过 CREATE TABLE 或 ALTER TABLE 语句实现.设置检查约束时要根据实际情况进行设置,这样能够减少 ...

  8. mysql中需要提交的操作_MySQL常用操作及基础知识

    原标题:MySQL常用操作及基础知识 1.启动和关闭mysql服务器: service mysql start service mysql stop 2.重启MySQL服务: service mysq ...

  9. mysql中engine是什么意思_mysql中engine=innodb和engine=myisam的区别

    最开始用MySQL Administrator建数据库的时候,表缺省是InnoDB类型,也就没有在意.后来用Access2MySQL导数据的时候发现只能导成 MyISAM类型的表,不知道这两种类型有什 ...

最新文章

  1. python dataframe取某行某列_pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列...
  2. 【OpenCV 4开发详解】形态学应用
  3. 0.数据结构学习笔记大纲
  4. xgboost源码 要看的
  5. 数据结构实验之栈与队列四:括号匹配
  6. 跨链(2)跨链技术“分布式私钥控制”
  7. 有关 Oracle redo log
  8. 【网络通信与信息安全】之深入解析HTTP协议的实现和原理
  9. 三年级计算机课画曲线,三年级上册信息技术曲线工具教案
  10. 遗传所屠强研究组开发Decode-seq方法显著提高差异表达基因分析的准确性
  11. 8086架构/流水线及其优化
  12. c++用什么软件_html用什么软件编写
  13. .Net Mvc Automated Migration 数据迁移
  14. Java中的System.getProperty()设置参数的方法
  15. linq的字段自增长属性设置_云途晨报9月9日前,这5类ebay物品属性必须完成更新;Wish体积重计算方式即将更新...
  16. 零基础学python实战-Python3零基础入门到爬虫实战
  17. Python机器学习算法基础概述
  18. 中缀表达式转后缀表达式
  19. Java学习路线总结(书籍、视频推荐篇)
  20. python+django+mysql运动场地预约系统毕业设计毕设开题报告

热门文章

  1. 调试视频网页js脚本的方法
  2. 为方便ATS管理建立的一些命令别名
  3. C语言网络编程:close或者shutdown断开通信连接
  4. Sql语法---DDL
  5. ERROR: from PIL import Image ImportError: No module named PIL
  6. 四川第七届 I Travel(bfs)
  7. 水平,垂直居中的15种方法
  8. 搜索引擎技术之概要预览
  9. window resize和scroll事件的基本优化
  10. 快速部署RDA Remote Diagnostic Agent