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

mysql常见选项和约束

CREATE TABLE约束 作用:可以为列定义约束 约束主要是防止非法数据进入,保证数据正确性和一致性,统称为数据完整性 约束也可以防止一个被删除 MySQL约束保存在information_schema.table_constraints...,可以通过该查询约束信息 常见约束类型 not null非空,指定某列不为空(注意区分空和空格关系) unique:唯一约束,指定某列和几列组合数据不能重复 primary key:主键约束,...+ unique 主键是用来唯一标识每一行,类型一般为整型或者字符串 具有主键约束列不允许有null值,不允许有重复值 每个最多只允许一个主键,可定义联合主键,主键名总是PRIMARY 联合主键...foreign key外键约束 参照完整性约束,保证一个或两个之间参照完整性,外键是构建于一个两个字段或者是两个两个字段之间参照关系 注意: 具有外键约束值不能随便给,必须满足外键所引用主键取值...MySQl可以使用check约束,但是check约束对数据验证没有任何作用。

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

    MySql约束

    中一定要有各种约束,通过约束,让我们未来插入数据库数据是符合预期约束本质是通过技术收到逼迫程序员插入正确数据,反过来,站在mysql视角,凡是插入进来数据,都是符合数据约束。...站在正常业务逻辑: 如果班级没有名字,你不知道你在哪个班级 如果教室名字可以为空,就不知道在哪上课 所以我们在设计数据库时候,一定要在中进行限制,满足上面条件数据就不能插入到。...into t13(name) values ('李四'); deault:如果设置了,用户将来插入,有具体数据就用,没有就默认 如果我们没有明确指定一列要插入,用是default,如果,对应列默认没有设置...主键 primary key 主键:primary key用来唯一约束该字段里面的数据,不能重复,不能为空,一张中最多只能有一个。但是并不意味着一个主键,只能添加给一列。...OK, 1 row affected (0.00 sec) 唯一键unique 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题

    18930

    MySQL约束

    约束 约束中一定要有各种约束,通过约束,让我们未来插入数据库数据是符合预期约束本质是通过技术手段,倒逼用户,插入正确数据。...反过来,在 mysql 角度,凡是插入进来数据,都是符合数据约束约束最终目的就是保证数据完整性和可预期性。因此我们需要更多约束条件!...通过 show 看看 t3 表语句: 可以看到 int(10),这个代表什么意思呢?整型不是 4 字节吗?这个 10 又代表什么呢?...值由原来 1 变成 00001,这就是 zerofill 属性作用,如果宽度小于设定宽度(这里设置是 5),自动填充 0;要注意是,这只是最后显示结果,在 MySQL 实际存储还是1...建立外键本质其实就是把相关性交给 mysql 去审核了,提前告诉 mysql 之间约束关系,那么当用户插入不符合业务逻辑数据时候,mysql 不允许你插入。

    13510

    MYSQL约束

    索引: 在关系数据库,索引是一种单独、物理对数据库中一列或多列值进行排序一种存储结 构,它是某个中一列或若干列值集合和相应指向物理标识这些值数据页逻辑指针清单。...索引作用相当于图书目录,可以根据目录页码快速找到所需内容。 索引提供指向存储在指定列数据值指针,然后根据您指定排序顺序对这些指针排序。...这样可以使对应于SQL语句执行得更快,可快速访问数据库特定信息 七、唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题...而我们设计员工工号时候,需要一种约束:而所有的员工工号都不能重复。 具体指的是在公司业务上不能重复,我们设计时候,需要这个约束,那么就可以将员工工号设计成为唯一键。...;插入学生班级号不能在班级没有。

    23640

    MySQL约束

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

    21350

    MySQL约束

    一 介绍 约束条件与数据类型宽度一样,都是可选参数 作用:用于保证数据完整性和一致性 主要分为: PRIMARY KEY (PK) 标识该字段为该主键,可以唯一标识记录 FOREIGN...一个可以: 单列做主键 多列做主键(复合主键) 但一个内只能有一个主键primary key ============单列做主键=============== #方法一:not null+unique...,被约束字段必须同时被key约束 #不指定id,则自动增长 create table student( id int primary key auto_increment, name varchar(...,子表employee对应记录跟着删 mysql> delete from department where id=3; mysql> select * from employee; +----+-...,子表employee对应记录跟着改 mysql> update department set id=22222 where id=2; mysql> select * from employee;

    4.8K60

    通过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

    95920

    MySQL&约束&事务

    ’教学部’所有员工个数 5 查询部门为’市场部’所有员工平均薪水 SQL实现 #1 查询员工总数 -- 统计记录条数 使用 count() SELECT COUNT(eid) FROM...违反约束不正确数据,将无法插入到 常见约束 约束约束关键字 主键 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) ); 主键约束与唯一约束区别: 主键约束 唯一且不能够为空 唯一约束,唯一 但是可以为空 一个只能有一个主键 , 但是可以有多个唯一约束

    1.2K30

    MYSQL约束及修改数据

    MYSQL约束及修改数据 28:约束 约束保证数据完整性和一致性 约束分为约束和列级约束 约束类型包括:     NOT NULL(非空约束)     PRIMARY KEY(主键约束)     ...30:删除数据 DELETE FROM 数据名 WHERE 条件; 31:外键约束参照操作(外键约束要求解析) 外键约束保证数据一致性,完整性,实现一对多或者一对一关系 (含有外键称为子表...33:外键约束参照操作 CASCADE:从父删除或者更新且自动删除或者更新子表匹配行 《在两插入记录,必须先在父插入记录》 SET NULL:从父删除或者更新行,并且设置子表外键列为...删除数据 DELETE FROM 数据名 WHERE 条件; ?...34:约束和列级约束 对一个数据列建立约束,称为列级约束《实际开发多用》 对多个数据列建立约束,称为约束 列级约束既可以在列定义时声明,也可以在列定义后声明, 约束只能在列定义后声明。

    3.2K80

    MYSQL数据库-约束

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

    7.5K30

    MySQL完整性约束

    概览   为了防止不符合规范数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定约束条件对数据进行监测,使不符合规范数据不能进入数据库,以确保数据库存储数据正确、有效...约束条件与数据类型宽度一样,都是可选参数,主要分为以下几种: # NOT NULL :非空约束,指定某列不能为空; # UNIQUE : 唯一约束,指定某列或者几列组合不能重复 # PRIMARY...返回顶部 PRIMARY KEY 主键为了保证每一条数据该字段都是表格唯一值。换言之,它是用来独一无二地确认一个表格每一行数据。 主键可以包含一个字段或多个字段。...AUTO_INCREMENT 约束字段为自动增长,被约束字段必须同时被key约束 ? ?...Restrict方式 同no action, 都是立即检查外键约束 . Set default方式 父有变更时,子表将外键列设置成一个默认值 但Innodb不能识别

    3.5K20

    MySQL数据库:约束

    通过show看看tt14表语句: mysql> show create table tt14\G *************************** 1. row **************...2 | +------------------+ 1 row in set (0.00 sec) 唯一键 一张中有往往有很多字段需要唯一性,数据不能重复,但是一张只能有一个主键:唯一键就可以解决中有多个字段需要唯一性约束问题...foreign key (字段名) references 主表(列) 举例:  由于学生(stu)class_id是班级(myclass)id外键,因此,主表为班级(myclass),...> ); Query OK, 0 rows affected (0.04 sec) 再,在从形成外键约束 mysql> create table stu( -> id int primary...,提前告诉mysql之间约束关系,那么当用户插入不符合业务逻辑数据时候,mysql不允许你插入。

    25130

    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 对应部门id ?...外键,就是从与主表主键对应那一列,如:员工dep_id,其中,主表是一方,用来约束别人,从可以是多方,被别人约束。 注意:外键可以为NULL,但是不能是不存在外键值。 ?

    13.9K21

    MySQL数据类型选择

    如果查询包含可为 NULL 列,对 MySQL 来说更难优化,因为可为 NULL 列使得索引、索引统计和值比较都更复杂。特别是计划在列上索引,就应该尽量避免设计成可为 NULL 列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义:它不会限制值合法范围,只是规定了 MySQL 一些交互工具(例如 MySQL 命令行客户端)用来显示字符个数。...float 使用 4 个字节存储;double 使用使用 8 个字节存储;decimal 则是将数字打包保存到一个二进制字符串(每 4 个字节存 9 个数字)。...char 类型是定长MySQL 总是根据定义字符串长度分配足够空间。 char 存储会删除存储数据末尾空格;varchar 不会。...枚举(enum)类型 MySQL 在内部会将每个值在列表位置保存为整数,并且在 .frm 文件中保存 “数字-字符串” 映射关系 “查找”。

    5.2K10

    粗聊Mysql——你会么?

    本文中说到”,并非单纯一个库,或是一张,而是你建好库和在项目的运营,是否能应付各种事件,下面我说说几个我在项目中遇到问题以及处理方法,算是一个小小心得,给大家分享下。...比如现在有2张,一张新闻栏目,一张新闻,现在两张需要进行关联,我想大多数人做法肯定是在新闻表里一个新闻栏目id,然后把新闻栏目表里主键ID(自增)写到这个字段里,通过这样进行两关联。   ...所以我建议两之间关联不用主键,而是单独一个编号字段,我们这里可以用mysqluuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据测试——《实测MYSQL UUID性能》。...  这也是我之前经常犯得一个毛病,比如手机,我就设置为varchar(11),邮编设置成varchar(6),姓名设置成varchar(10)等等等等,看似每个字段都设置得很严谨,但是在项目实际进行

    5.2K10

    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 系列教程之(五)DDL 操作:

    create table 名( 字段名 类型 [字段约束], 字段名 类型 [字段约束], 字段名 类型 [字段约束] ... ); 创建 通过 mysql> 命令窗口可以很简单创建...MySQL数据。...查看表结构 desc stu; 查看表语句 show create table stu\G 修改结构 格式: alter table 名 action(更改选项); 添加字段: 添加字段:alter...AUTO_INCREMENT=1 更改类型: ALTER TABLE 名称 ENGINE="InnoDB" 关于类型 MySQL数据库类型一般常用两种:MyISAM和InnoDB 区别:...删除 MySQL删除数据是非常容易操作, 但是你再进行删除操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;

    7.6K73

    MySQL过程一些注意事项

    MySQL过程一些注意事项 01 MySQL之text类型字段 今天在和业务方沟通一个工单时候,发现工单中有一处使用了text字段,于是提出建议把text字段替换为char类型或者...text这种字段在数据库是不建议使用,之前看书时候说是因为text类型字段存在一些性能问题,没有仔细研究过,今天研究了一下这种类型字段,大概总结如下: text类型字段通常用来保存比较大一些文本对象.../test_tbl.ibd 我们发现,将优化之后,数据变为145M,已经减少了40多M数据,这说明存在一些冗余空间已经被回收了。...02 MySQL大小 今天在创建一个业务方提供时,没有仔细看,当时手头还有别的事情,审核时候出了点岔子,结果MySQL报了一个错误: mysql> CREATE TABLE `top_org...因为MySQL在创建时候有一条规定,MySQL要求一个行定义长度不能超过65535。

    1.6K20
    领券