首页
学习
活动
专区
圈层
工具
发布

mysql创建数据表及约束

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

4.7K40

表的约束(MySQL)

表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。...案例: 创建表的时候直接在字段上指定主键 mysql> create table tt13 ( -> id int unsigned primary key comment '学号不能为空', -> name...:外键约束主要定义在从表上,主表则必须是有主键约束或unique 约束。...理论上,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。 此时,在实际使用的时候,可能会出现什么问题?...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql 表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

46410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【MySQL】表的约束

    ; # 主键唯一不用指明具体column; 当主键加上auto_increment约束后,如果欲删除主键,仅仅alter table tb2 drop primary key;不行,需要先去自增约束,再...alter table tb2 drop primary key; 复合主键:有多个字段共同作为主键 唯一键(unique) 一张表中有往往有多个字段需要唯一性,数据不能重复,但是一张表中只能有一个主键...:唯一键就可以解决表中有多个字段需要唯一性约束的问题。...外键(foreign key (字段名) references 主表(列)) 外键用于定义主表和从表之间的关系: 外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。...举例:班级表id只有10,20;向从表插入时的class_id的值只能为10 / 20 / null; 数据一致性:当对主表中的主键数据进行修改(如更新或删除)时 ,通过设置外键约束的 ON DELETE

    24610

    【MySql】表的约束

    表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束的本质是通过技术收到逼迫程序员插入正确的数据,反过来,站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。...) 复合主键 在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。...外键foreign key 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。...,上面的例子,我们不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有。...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

    1.6K30

    【MySQL】表的约束

    表的约束 表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼用户,插入正确的数据。...反过来,在 mysql 角度,凡是插入进来的数据,都是符合数据约束的!约束的最终目的就是保证数据的完整性和可预期性。因此我们需要更多的约束条件!...在创建表的时候,在所有字段之后,使用 primary key (主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键。...我们知道,一个学生一定是隶属于某一个班级的,所以 stu 应该是从表,我们要为从表添加外键约束!主表则是 class. 所以我们需要重新创建一个 stu 表,为 stu 表添加外键约束。...建立外键的本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql 表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql 不允许你插入。

    1.1K10

    【MYSQL】表的约束

    三、列描述 没有实际含义,专门用来描述字段(相当于注释),会根据表创建语句保存,用来给程序员或DBA来进行了解。...'学号', name varchar(5) ); 创建好表之后,我们可以追加主键 2.删除主键 alter table 表名 drop primary key; 案例: 3.复合主键 在创建表的时候...这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息 七、唯一键 一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段需要唯一性约束的问题...而我们设计员工工号的时候,需要一种约束:而所有的员工工号都不能重复。 具体指的是在公司的业务上不能重复,我们设计表的时候,需要这个约束,那么就可以将员工工号设计成为唯一键。...:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。

    1.2K40

    MySQL:表的约束

    表的约束和约束的目标 表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。...反过来,站在MySQL角度,凡是插入进来的数据,都是符合数据约束的! 约束的最终目标:保证数据的完整性和可预期性。 二....而如果为我们没有在创建表的时候显示声明默认值,MySQL会优化,自动加上默认值为NULL。 四....其实我们可以在创建表的时候就指定: 这样就指定初始为500。...外键 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。

    1.2K10

    MySQL表的约束

    约束的本质: 通过技术手段倒逼程序员插入正确的数据。反过来站在mysql的视角,凡是插入进来的数据,都是符合数据约束的。 约束的最终目标: 保证数据的完整性和可预期性。 为什么数据库这么严格?...二.表的非空约束 1.NULL与’ '比较 在MySQL数据类型已经说过,这二者是不同的,NULL代表什么都没有,而' '代表一个空串。 在select语句中,NULL不会参与到相应的计算操作中。...五.zerofill zerofill约束,就是补位。对于我们所创建的表,会发现在一个整形数据类型中带有括号字段。...1.唯一主键 创建表时约束某一字段为主键。 为了保证不能重复,不能为空,相应的创建语句在mysqld中也会添加not null,Key也会标记PRI保证不能重复。...因此,为了避免这种情况,最好在创建表时一并添加主键约束。 2.复合主键 回到上述定义,一张表中最多只能有一个主键,但这并不意味着一个表中的主键只能添加到一列。

    1.3K50

    MySQL单表&约束&事务

    违反约束的不正确数据,将无法插入到表中 常见的约束 约束名 约束关键字 主键 primary key 唯一 unique 非空 not null 外键 foreign key 主键约束 特点:不可重复...); -- 删除表 DROP TABLE emp2; -- 方式2 创建一个带主键的表 CREATE TABLE emp2( eid INT , ename VARCHAR(20), sex CHAR(...,对自增没有影响,使用truncate 是将整个表删除掉,然后创建一个新的表 自增的主键,重新从 1开始 非空约束 非空约束的特点: 某一列不予许为空 # 非空约束 CREATE TABLE emp2...ename VARCHAR(20) UNIQUE, sex CHAR(1) ); 主键约束与唯一约束的区别: 主键约束 唯一且不能够为空 唯一约束,唯一 但是可以为空 一个表中只能有一个主键 , 但是可以有多个唯一约束...默认值 默认值约束 用来指定某列的默认值 -- 创建带有默认值的表 CREATE TABLE emp4( eid INT PRIMARY KEY AUTO_INCREMENT, -- 为ename

    1.9K30

    MySQL之表的约束

    一 介绍 约束条件与数据类型的宽度一样,都是可选参数 作用:用于保证数据的完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该表的主键,可以唯一的标识记录 FOREIGN...null与default 是否可空,null表示空,非字符串 not null - 不可空 null - 可空 默认值,创建列时可以指定默认值...,被约束的字段必须同时被key约束 #不指定id,则自动增长 create table student( id int primary key auto_increment, name varchar(...name | sex | +----+------+------+ | 1 | egon | male | +----+------+------+ 1 row in set (0.00 sec) #在创建完表后...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外

    5.2K60

    【MySQL】表的约束(上)

    我们先默认创建一张表: 可以看见,当我们不指定约束条件的时候,创建表时默认会给Null约束条件添加上Yes,表示这里可以插入null。我们来试试。...拿我们刚刚创建的表为例: 这个约束就是默认值,如果设置了默认值,当我们插入的时候忽略这一项时,就会拿默认值当中的数据进行填充。...我们创建一张表,不加任何约束是这样的,当我们加上zerofill之后: 可以看见,修改完zerofill约束条件之后,int后面多了一个10,后面多了一个zerofill,为什么10后面讲,我们先讲这个...总结 在本文中,我们深入探讨了 MySQL 中几个常用的表约束,包括 NULL 约束、DEFAULT 约束、COMMENT 约束、主键约束以及 ZEROFILL 约束。...希望通过本文的介绍,大家对 MySQL 的表约束有了更深入的理解,并能够在实际项目中灵活应用。

    79500

    【MySQL篇】表的约束

    前言: 在MySQL中,表的约束用于强制保证数据的完整性和一致性。...show create table t11\G 在创建表时,如果没有指明字段的约束,系统会将字段的默认值default设置为null 3,列描述 列描述:comment,没有实际含义,专门用来描述字段...(字段列表); 复合主键 在创建表的时候,在所有字段之后,使用primary key来创建主键,如果有多个字段做主键,使用复合主键。...)); 插入数据 (可以插入空值) 8,外键 外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有有主键约束或unique约束。...示例: 创建班级表和学生表,学生表中有外键约束 mysql> create table class( -> id int primary key, -> name varchar(

    13210

    【MySQL】008-表的约束

    key 二、非空约束 1、创建表时添加约束: CREATE TABLE stu( id INT, NAME VARCHAR(20) NOT NULL -- 名字不允许为空,否则创建失败 ); 注意...: -- 删除name的非空约束 ALTER TABLE stu MODIFY NAME VARCHAR(20); 3、创建表完成之后添加约束,本质上也是更改表的字段: -- 创建表之后,添加name的非空约束...NAME VARCHAR(20); 3、创建表之后,添加唯一约束,本质是修改对应字段 -- 创建表之后,添加name的非空约束 ALTER TABLE stu MODIFY NAME VARCHAR(20...) NOT NULL; 四、主键约束 1、注意 ①含义:非空且唯一; ②一张表只能有一个主键; 2、创建表时添加主键约束 CREATE TABLE stu( id INT PRIMARY KEY,...) ); 注意:添加语句时主键的内容填入NULL即可,会根据上一个主键的值进行自动增加 3、删除自动增长和创建表后自动增长,同非空约束和唯一约束; 六、外键约束 1、描述 个人理解:加入一个部门的员工表

    40110

    【MySQL】005.MySQL表的约束(上)

    表的约束 1. 约束概念 真正约束字段的是数据类型,但数据类型约束很单一,需要一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。...表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。就好比我们在vs上编译代码时,vs会对我们进行各种约束,保证我们的代码在语法上是正确的。...| NULL | +--------+ 1 row in set (0.00 sec) 2.2 使用示例 创建一个班级表,包含班级名和班级所在的教室。...列描述 4.1 基本概念 列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。...6.2 使用示例 创建表的时候直接在字段上指定主键 mysql> create table if not exists test_key( -> id int unsigned primary

    40410

    MySQL表的完整性约束

    约束条件与数据类型的宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY...AUTO_INCREMENT 约束字段为自动增长,被约束的字段必须同时被key约束 ? ?...#在创建完表后,修改自增字段的起始值 mysql> create table student( -> id int primary key auto_increment, -> name...ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 #也可以创建表时指定auto_increment的初始值,注意初始值的设置为表选项,应该放到括号外...Restrict方式 同no action, 都是立即检查外键约束 . Set default方式 父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

    4K20

    MySQL数据库:表的约束

    表的约束,实质上就是用数据类型去约束字段,但是数据类型的约束手法很单一,比如,我们在设置身份证号这个字段,数据类型唯一起的约束是它属于char类型或者varchar类型,不能是浮点型也不能是日期时间类型...添加主键 添加主键的方法:①创建表的时候直接在字段上指定主键。②当表创建好以后但是没有主键的时候,可以再次追加主键。...举例:创建表tt16,其中id和course为复合主键,也就是说,在这张表中,id和course的组合作为这张表的主键。...:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。...,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入。

    2K30

    MySQL数据库表约束详解

    1.表的约束的概念 表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。约束本质是通过技术手段,倒逼程序员,插入正确的数据。...案例: 创建表的时候直接在字段上指定主键 mysql> create table tt13 ( -> id int unsigned primary key comment '学号不能为空', -> name...所以我们需要在从表上建立外键约束将主表的班级的和从表的班级进行一个外键的约束,这样保证我们每次插入和删除数据都是正确的!...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入 语法: foreign key (字段名)...references 主表(列) 外键的作用: 建立从表和主表的关联关系 产生外键约束 对上面的示意图进行设计: 先创建主键表 create table myclass ( id int primary

    1K00

    MYSQL数据库-表的约束

    零、前言 本章主要讲解学习MYSQl数据库中的表的约束 表的约束 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性...,不能重复,不能为空,一张表中最多只能有一个主键 主键所在的列通常是整数类型 主键约束:主键对应的字段中不能重复,一旦重复,操作失败 示例:创建表的时候直接在字段上指定主键 当表创建好以后再次追加主键...: alter table 表名 add primary key(字段列表) 删除主键: alter table 表名 drop primary key; 复合主键: 在创建表的时候,在所有字段之后...,不创建外键约束,就正常建立学生表,以及班级表,该有的字段我们都有,在实际使用的时候,可能会出现有没有可能插入的学生信息中有具体的班级,但是该班级却没有在班级表中,这很明显是有问题的 因为此时两张表在业务上是有相关性的...建立外键的本质其实就是把相关性交给mysql去审核了,提前告诉mysql表之间的约束关系,那么当用户插入不符合业务逻辑的数据的时候,mysql不允许你插入

    8.9K30
    领券