首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql建表约束

MySQL建表约束是用于确保数据完整性和一致性的规则。它们可以在创建表时定义,也可以在表创建后添加。以下是一些常见的MySQL建表约束:

基础概念

  • 主键约束(PRIMARY KEY):确保表中的每一行都有一个唯一的标识符。
  • 唯一约束(UNIQUE):确保列中的值是唯一的,但允许NULL值。
  • 外键约束(FOREIGN KEY):用于建立两个表之间的关系,确保引用完整性。
  • 非空约束(NOT NULL):确保列中的值不能为空。
  • 默认值约束(DEFAULT):为列提供一个默认值。

相关优势

  • 数据完整性:通过约束确保数据的准确性和一致性。
  • 减少错误:自动检查数据输入,减少人为错误。
  • 提高查询效率:索引可以加速查询速度。

类型

  1. 主键约束
  2. 主键约束
  3. 唯一约束
  4. 唯一约束
  5. 外键约束
  6. 外键约束
  7. 非空约束
  8. 非空约束
  9. 默认值约束
  10. 默认值约束

应用场景

  • 用户注册系统:使用主键约束和外键约束确保用户数据的唯一性和完整性。
  • 电子商务系统:使用唯一约束确保产品SKU的唯一性。
  • 订单管理系统:使用外键约束确保订单与用户之间的关系。

常见问题及解决方法

  1. 主键冲突
    • 问题:插入数据时,主键值已存在。
    • 原因:主键值重复。
    • 解决方法:确保插入的主键值唯一,或者使用自增主键。
  • 外键约束失败
    • 问题:插入或更新数据时,外键值在引用表中不存在。
    • 原因:违反了外键约束。
    • 解决方法:确保插入或更新的外键值在引用表中存在,或者暂时禁用外键检查。
  • 唯一约束冲突
    • 问题:插入数据时,唯一列的值已存在。
    • 原因:唯一列的值重复。
    • 解决方法:确保插入的唯一列值唯一,或者使用INSERT IGNOREON DUPLICATE KEY UPDATE语句。

参考链接

通过以上内容,您可以更好地理解MySQL建表约束的基础概念、优势、类型、应用场景以及常见问题的解决方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

MySQL【第二章】——&&约束

一、数据类型   MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。...date: yyyy/MM/dd     time: HH/mm/ss     datetime: yyyy/MM/dd/HH/mm/ss     timestamp: 1970-01-01  二、...&约束 1.约束   1.1 主键约束(PRIMARY KEY)     主键约束:唯一、不重复、不为空;每个都应该有一个主键,并且每一个只能有一个主键。    ...    非空值约束:用于确保当前列的值不为空值,非空约束只能出现在对象的列上。    ...例如:   1) 性别:sex char(1) default '男'     2) 日期:createdate timestamp default current_timestamp 2.

4.8K20

mysql常见的选项和约束

约束主要是防止非法数据进入中,保证数据的正确性和一致性,统称为数据完整性 约束也可以防止一个被删除 MySQL约束保存在information_schema.table_constraints中...,可以通过该查询约束信息 常见的约束类型 not null非空,指定某列不为空(注意区分空和空格的关系) unique:唯一约束,指定某列和几列组合的数据不能重复 primary key:主键约束,指定某列的数据不能重复...保证一个或两个之间的参照完整性,外键是构建于一个的两个字段或者是两个的两个字段之间的参照关系 注意: 具有外键约束的列的值不能随便给,必须满足外键所引用的主键的取值 一张中可以定义多个外键 外键列默认可以给...MySQl中可以使用check约束,但是check约束对数据验证没有任何作用。...Oracle中国可以使用check约束,有相应作用 mysql> create table test_ck( -> id int check(id>0) -> ); mysql

14610
  • MYSQL约束

    前言 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。...五、主键 主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张中最多只能有一个主键;主键所在的列通常是整数类型。...这样可以使对应于的SQL语句执行得更快,可快速访问数据库中的特定信息 七、唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张中只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束的问题...而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。 具体指的是在公司的业务上不能重复,我们设计的时候,需要这个约束,那么就可以将员工工号设计成为唯一键。...:外键约束主要定义在从上,主表则必须是有主键约束或unique约束

    24540

    MySQL约束

    约束 约束中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。约束本质是通过技术手段,倒逼用户,插入正确的数据。...反过来,在 mysql 角度,凡是插入进来的数据,都是符合数据约束的!约束的最终目的就是保证数据的完整性和可预期性。因此我们需要更多的约束条件!...通过 show 看看 t3 表语句: 可以看到 int(10),这个代表什么意思呢?整型不是 4 字节吗?这个 10 又代表什么呢?...:外键约束主要定义在从上,主表则必须是有主键约束或 unique 约束。...建立外键的本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql 之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql 不允许你插入。

    14810

    MySql约束

    中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。...into t13(name) values ('李四'); deault:如果设置了,用户将来插入,有具体的数据就用,没有就默认 如果我们没有明确指定一列要插入,用的是default,如果中,对应列默认没有设置...外键foreign key 外键用于定义主表和从之间的关系:外键约束主要定义在从上,主表则必须是有主键约束或unique约束。...,上面的例子,我们不创建外键约束,就正常建立学生,以及班级,该有的字段我们都有。...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

    20930

    MySQL约束

    一.约束的概念 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。...所谓约束,就是避免犯一些低级错误,比如类似于语法错误,编译器的编译失败实际上也算是一种约束中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。...约束的本质: 通过技术手段倒逼程序员插入正确的数据。反过来站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。 约束的最终目标: 保证数据的完整性和可预期性。 为什么数据库这么严格?...二.的非空约束 1.NULL与’ '比较 在MySQL数据类型已经说过,这二者是不同的,NULL代表什么都没有,而' '代表一个空串。 在select语句中,NULL不会参与到相应的计算操作中。...三.默认值default 实际上就是缺省值,时设定之后,即便不对这个字段进行插入,其对应的值也会默认为default后面跟着的值。 插入default对应的字段后,就会将缺省值覆盖。

    21950

    通过sql命令 和 主外键约束以及其他约束

    nvarchar(100) 5 ) 6 7 creat table emp 8 ( emp_id int constraint pk_emp_id_a primary key, --主键约束...emp_sex nchar(1), 11 dept_id int constraint fk_dept_id_b foreign key references dept(dept_id) --外键约束...创建的命令后面是小括号(),而不是{}, 2. 注释用-- 3....写完后,鼠标左键选中整个代码,分析、执行,最后生成 什么是约束constraint: 对一个中的属性操作的限制 分类: 主键约束:不允许重复元素,避免数据的冗余 外键约束:通过外键约束,从语法上保证了本事物所关联的其他事物一定是存在的...事物和事物之间的关系是通过外键来体现的 check约束:保证事物属性的取值在合法的范围之内 1 create table student 2 ( 3 stu_id int primary key

    96720

    MySQL&约束&事务

    违反约束的不正确数据,将无法插入到中 常见的约束 约束约束关键字 主键 primary key 唯一 unique 非空 not null 外键 foreign key 主键约束 特点:不可重复...,对自增没有影响,使用truncate 是将整个删除掉,然后创建一个新的 自增的主键,重新从 1开始 非空约束 非空约束的特点: 某一列不予许为空 # 非空约束 CREATE TABLE emp2...); 唯一约束 唯一约束的特点: 中的某一列的值不能重复( 对null不做唯一的判断 ) CREATE TABLE emp3( eid INT PRIMARY KEY AUTO_INCREMENT,...ename VARCHAR(20) UNIQUE, sex CHAR(1) ); 主键约束与唯一约束的区别: 主键约束 唯一且不能够为空 唯一约束,唯一 但是可以为空 一个中只能有一个主键 , 但是可以有多个唯一约束...MySQL 事务隔离级别 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库. 数据库的相同数据可能被多个事务同时访问,如果不采取隔离措施,就会导致各种问题, 破坏数据的完整性。

    1.2K30

    MySQL约束

    一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该的主键,可以唯一的标识记录 FOREIGN...---+ | egon | 18 | male | play,music | +------+-----+------+------------+ 三 unique ============设置唯一约束...nginx'); ERROR 1062 (23000): Duplicate entry '172.16.45.10-3306' for key 'PRIMARY' 五 auto_increment 约束字段为自动增长...,被约束的字段必须同时被key约束 #不指定id,则自动增长 create table student( id int primary key auto_increment, name varchar(...比起delete一条一条地删除记录,truncate是直接清空,在删除大时用它 mysql> truncate student; Query OK, 0 rows affected (0.01 sec

    4.8K60

    粗聊Mysql——你会么?

    本文中说到的“”,并非单纯的一个库,或是一张,而是你建好的库和在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...比如现在有2张,一张新闻栏目,一张新闻,现在两张需要进行关联,我想大多数人的做法肯定是在新闻表里一个新闻栏目id,然后把新闻栏目表里的主键ID(自增)写到这个字段里,通过这样进行两关联。   ...所以我建议两之间关联不用主键,而是单独一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用的长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql

    5.2K10

    MySQL的完整性约束

    约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY...| +---------+--------------+------+-----+---------+-------+ rows in set (0.01 sec) # 方法四:给已经建成的添加主键约束...AUTO_INCREMENT 约束字段为自动增长,被约束的字段必须同时被key约束 ? ?...比起delete一条一条地删除记录,truncate是直接清空,在删除大时用它 mysql> truncate student; Query OK, 0 rows affected (0.01 sec...Restrict方式 同no action, 都是立即检查外键约束 . Set default方式 父有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

    3.5K20

    MYSQL数据库-约束

    零、前言 本章主要讲解学习MYSQl数据库中的约束 约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性...这样可以使对应于的SQL语句执行得更快,可快速访问数据库中的特定信息 7、唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张中只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束的问题...示例: 8、外键 外键用于定义主表和从之间的关系:外键约束主要定义在从上,主表则必须是有主键约束或unique约束。...,不创建外键约束,就正常建立学生,以及班级,该有的字段我们都有,在实际使用的时候,可能会出现有没有可能插入的学生信息中有具体的班级,但是该班级却没有在班级中,这很明显是有问题的 因为此时两张在业务上是有相关性的...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入

    7.5K30

    MySQL 系列教程之(五)DDL 操作:

    创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据 创建MySQL数据需要以下信息: 名 表字段名 定义每个表字段...create table 名( 字段名 类型 [字段约束], 字段名 类型 [字段约束], 字段名 类型 [字段约束] ... ); 创建 通过 mysql> 命令窗口可以很简单的创建...MySQL数据。...查看表结构 desc stu; 查看表语句 show create table stu\G 修改结构 格式: alter table 名 action(更改选项); 添加字段: 添加字段:alter...删除 MySQL中删除数据是非常容易操作的, 但是你再进行删除操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;

    7.7K73

    mysql创建数据约束

    MySQL中,是存储数据的基本单位,每张有若干列,每一行代表一条数据记录。在MySQL中,数据是按行存储的。...创建数据的基本语法如下 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name( 列名1 数据类型 [约束条件] [默认值], 列名2 数据类型 [约束条件...] [默认值], ............. ) [约束条件]; 使用主键约束 主键由的一列或者多列组合而成。...主键约束要求主键列数据唯一,且不能为空。主键可以标识的唯一一条记录。的主键相当于的目录。为创建主键后,使用主键列作为查询条件可以大大加快的查询速度。...create table user_tmp4(id int, name varchar(20) not null); 使用默认约束 默认约束的作用是为某列指定默认值,在向中插入数据时,如果不指定该列的值

    3.7K40

    MySQL数据库:约束

    约束,实质上就是用数据类型去约束字段,但是数据类型的约束手法很单一,比如,我们在设置身份证号这个字段,数据类型唯一起的约束是它属于char类型或者varchar类型,不能是浮点型也不能是日期时间类型...通过show看看tt14表语句: mysql> show create table tt14\G *************************** 1. row **************...:外键约束主要定义在从上,主表则必须是有主键约束或unique约束。...> ); Query OK, 0 rows affected (0.04 sec) 再,在从中形成外键约束 mysql> create table stu( -> id int primary...,提前告诉mysql之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

    27030

    MySQL数据库——约束(非空约束、唯一约束、主键约束、外键约束)

    目录 1 约束 约束,是对表中的数据进行限定,保证数据的正确性、有效性和完整性,约束分为以下几类: 主键约束:primary key 非空约束:not null 唯一约束:unique 外键约束:foreign...UNIQUE ); 注意:MySQL中唯一约束限定的列的值可以有多个null 2)删除唯一约束: -- alter table stu modify number varchar(20); 不同于非空约束的删除方法...主键约束:primary key 1)注意: 若某一列添加了该约束,则代表了非空,且唯一; 一张只能有一个字段为主键; 主键就是中记录的唯一标识; 2)创建时添加主键约束 CREATE TABLE...以上仍然存在一个问题,当在员工中输入不存的部门时,数据依然可以添加,不符合实际,因此,这里就可以通过使用外键约束来解决。 【概念】什么是外键约束?...外键,就是从中与主表主键对应的那一列,如:员工中的dep_id,其中,主表是一方,用来约束别人的,从可以是多方,被别人约束。 注意:外键可以为NULL,但是不能是不存在的外键值。 ?

    14.3K21

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券