前言 这是我自己学习MySQL数据库的第二篇博客总结。后期我会继续把MySQL数据库学习笔记开源至博客上。...default-默认值 1. default:如果用户输入了具体的数据,那么就使用具体的数据,如果没有,就使用默认的数据。...2. default与not null并不冲突,而是互相补充的:对于某一列,如果用户想插入数据,那么not null确保插入的数据不为空,如果用户不想插入数据,那么default确保用户忽略这一列插入时使用默认值...但是不推荐两个一起用。 3. 在创建表格时,如果语句中没有设定空属性和默认值,那么mysql会自动优化添加default null。...外键 用于定义 主表 和 从表 之间的关系: 外键约束 主要定义在 从表 , 主表 则必须是有 主键约束 或 唯一键约束 。 2.
➢保护数据库防止恶意的破坏和非法的存取 ➢防范对象:非法用户和非法操作 为维护数据库的完整性,DBMS必须: 提供定义完整性约束条件的机制 提供完整性检查的方法 违约处理 完整性约束条件定义 完整性约束条件...完整性控制机制 检查用户发出的操作请求是否违背了完整性约束条件 违约反应 如果发现用户的操作请求使数据违背了完 整性约束条件,则采取一定的动作来保证 数据的完整性。...参照完整性 一、参照完整性定义 关系模型的参照完整性定义 ➢ 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 ➢ 用REFERENCES短语指明这些外码参照哪些表的主码 【...检查元组上的约束条件是否被满足 如果不满足则操作被拒绝执行 完整性约束命名子句 CONSTRAINT 约束 CONSTRAINT 约束条件名> [PRIMARY KEY短语 |FOREIGN...名字的含义:我想有一天我能有能力随心所欲不逾矩,不总是向生活低头,有能力让家人拥有富足的生活而不是为了生计而到处奔波。“世人慌慌张张,不过是图碎银几两。
❤️❤️前言~ Hello, Hello~ 亲爱的朋友们,这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章,请别吝啬你的点赞❤️❤️和收藏。如果你对我的内容感兴趣,记得关注我以便不错过每一篇精彩。...数据库约束 在MySQL中,约束用于定义表中数据的规则,保证数据的一致性、完整性和准确性。以下是常见的数据库约束类型: NULL约束 NOT NULL:指示某列不能存储NULL值。...KEY AUTO_INCREMENT, name VARCHAR(20) ); FOREIGN KEY:外键约束 FOREIGN KEY:保证一个表中的数据与另一个表的数据相匹配,确保表与表之间的参照完整性...表的设计 在数据库设计中,表之间的关系是至关重要的。MySQL支持一对一、一对多和多对多的关系。 一对一 每个记录只对应另一个表中的一条记录。...如果内部的查询语句只查询到了一行,那么用 = SELECT * FROM student WHERE classes_id = (SELECT id FROM classes WHERE name =
* 修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8 -- 首先先进行查询数据库,下面是我的数据库 mysql> show databases; +---...SELECT CONCAT('$', sal) FROM emp; III 转换NULL值 有时需要把NULL转换成其它值,例如com+1000时,如果com列存在NULL值,那么NULL...条件控制 1) 条件查询 与前面介绍的UPDATE和DELETE语句一样,SELECT语句也可以使用WHERE子句来控制记录。...* 1对1:例如老公和老婆就是一对一的关系,一个老公只能有一个老婆,而一个老婆只能有一个老公。 * 多对多:老师与学生的关系就是多对多,一个老师可以有多个学生,一个学生可以有多个老师。...语法:CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关联表(关联表的主键) 创建表时指定外键约束 create talbe emp ( empno
在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。 MySQL会给唯一约束的列上默认创建一个唯一索引。...如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同; 如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。...关键字:primary key 主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。...) 自增约束的列的数据类型必须是整数类型 如果自增列指定了 0 和 null,会在当前最大值的基础上自增;如果自增列手动指定了具体值,直接 赋值为具体值。...如果数据库重启,InnoDB会根据重做日志中的信息来初始化计数器的内存值。
在这个阶段的分析中,在纸上画出输入表单,以及查询和报告的草图,通常会有不少帮助。 二、收集数据,组织表并设定主键 一旦需求明确,接下来就要确定有哪些数据需要存储到数据库中。...如果主键只由某列构成,则被成为简单键(simple key),若由多列组成则成为组合键(composite key)。 大多数商业数据库都基于主键来生成索引以提高查询的速度。...然后我们可以通过在Children新建一列包含MotherID建立一对多的关系,如下图所示: one2many 其中Children表里的MotherID列又被称为约束或外键(Foreign Key)...和Products表的Foreign Key,如下图所示: many2many SQL描述如下: CREATE TABLE `Orders` ( `OrderID` INTEGER NOT NULL...表中的CHECK、 FOREIGN KEY 约束和DEFAULT、 NOT NULL定义都属于域完整性的范畴。
key (id) 四:外键约束 外键约束用在确保数据完整性和两个表之间的关系上 先看例子 create table orders ( id int identity not null...约束 unique约束与主键约束类似,同样也是要求指定的列有唯一的值 但是一个表中可以有多个unique约束的列,同时这个列允许存在null值。...dateinsystem列的数据不能大于当前时间 现在如果给这个列插入一个明天的时间,就会出错 七:default约束 如果插入的新行在定义了默认值的列上没有给出值,那么这个列上的数据就是定义的默认值...默认值只在insert语句中使用 如果插入的记录给出了这个列的值,那么该列的数据就是插入的数据 如果没有给出值,那么该列的数据总是默认值 八:禁用约束 在创建约束之前,数据库中已经有一些不符合规矩的数据存在...primary key 和 unique约束 这对孪生约束是不能禁用的 对一个已经存在数据的表加一个约束: alter table customers add constraint cn_customerPhoneNo
虽然每天和数据库打交道,但是对这个老伙计真的是不太了解,今天早上看到一篇文章说不推荐使用关系型数据库,咦,好像现在大部分使用的都是关系型数据库啊,那篇文章的点赞率还是蛮高的,难道是我对关系型数据库有什么误解么...于是上维基看看,我接触的大部分都是关系型数据库,于是又把那篇文章看了一遍,关于他说的关系型数据库存在一堆问题,但是我实在没怎么用过其他的数据库 ? ,感受不到这些。...弱弱的看大佬们在文章下面激烈的讨论。 ? 看来这哥们对关系型数据库有很大的怨念啊,像我这样的弱鸡,让用哪个就用哪个,反正都不会用。 ?...主要看了看基本的sql语句,当年的数据库课真的都是睡过去啊,看到约束和foreign以及alter和drop的时候,哇咔,这玩意哪来的,我居然都没看过,只会curd的渣渣,没文化真可怕。...SQL 约束 SQL NOT NULL SQL UNIQUE SQL PRIMARY KEY SQL FOREIGN KEY SQL CHECK SQL DEFAULT SQL CREATE INDEX
约束,就是针对属性值的一些约束条件,只针对某一列,叫做列级约束、针对多列属性的约束,叫做表级约束 怎么理解呢?...,保证数据的正确性、有效性和完整性 同样,有了约束知识的铺垫,我们就可以引申出后面的一些知识,例如多表操作等等,所以约束虽然简单,还是非常重要的哈~ (二) 常见约束 (1) 主键约束 A:基本概念...其实细心的朋友也可以看出来, CHANGE 后要多一个列名 sid(可以修改) ,所以总结如下: 只修改类型用 MODIFY 既修改列名,也修改类型用 CHANGE (2) 非空约束 非空约束很好理解...DROP INDEX sname; -- 这两种方法都是可以的 drop index sname on students; (4) 外键约束 A:概念理解 外键的理论定义是比较复杂的,我在以前公众号写过的一篇数据库理论文章中有提及过...,但是这一篇我们重点讲解 MySQL 的使用,所以,我们把理论都换成例子和通俗的大白话,先来看个问题: 学生实体和课程实体分别用关系“学生”和“课程”来表示,它们之间的联系用关系“选课”来表示 学生(学号
SQL FOREIGN KEY 约束 SQL FOREIGN KEY 约束用于防止破坏表之间关系的操作。FOREIGN KEY 是一张表中的字段(或字段集合),它引用另一张表中的主键。...PersonID int FOREIGN KEY REFERENCES Persons(PersonID) ); 要允许对 FOREIGN KEY 约束进行命名,并在多列上定义 FOREIGN KEY...ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID); 要允许对 FOREIGN KEY 约束进行命名,并在多列上定义 FOREIGN KEY...TABLE Orders DROP CONSTRAINT FK_PersonOrder; 通过这些 SQL 语句,您可以在数据库中定义和管理 FOREIGN KEY 约束,以确保表之间的关系得到维护。...如果在表上定义了 CHECK 约束,它可以基于行中其他列的值来限制某些列中的值。
数据库对象命名参考 引言 编码规范是一个优秀程序员的必备素质,然而,有很多人非常注重程序中变量、方法、类的命名,却忽视了同样重要的数据库对象命名。...外键(Foreign key) fk_ fk_Order_OrderType Check约束(Check Constraint) ck_ ck_TableColumn Unique约束 uq_ uq_TableColumn...接下来,Amount 和 Count 都可以表示计数的意思,用哪个合适呢?这里,我推荐使用Count。为什么呢?...在这里,我提出如下数据库设计的建议: 如果要写代码来确保表中的行都是唯一的,就为表添加一个主键。 如果要写代码来确保表中的一个单独的列是唯一的,就为表添加一个Unique约束。...更糟的是,如果一些重要数据,比如说订单的某一项值为Null了,那么大家知道,任何值与Null相操作(比如加减乘除),结果都是Null,导致的结果就是订单的总金额也为Null。
4、自主权限控制,强制权限控制; 数据库安全性控制那一节:书本 P140 自主存取控制 MAC:即使用 grant 和 invoke 语句进行操作,用户可以”自主“的决定将数据的存取权限授予何人、决定是否也将...一个数据库只有一个模式,也只有一个内模式,可以有多个外模式; 数据独立性:在模式之间有 外模式/模式 映像 和 模式/内模式 映像;这样当数据库的逻辑结构或者存储方式改变时只只需要改变相应的映像即可。...key (id); -- 添加约束: 主键约束: 表级 alert table student alert column name char(6) null; -- 修改属性类型及约束 alert table...,有了专业编号可以确定后面的学院之类的。...(8) not null, sex char(2), tid int, constraint fk_team foreign key (tid) references Team
注意:MySQL在唯一约束下可以允许有多个null值,Oracle、SQL Server 在唯一约束下不可以有多个null值。 ...多对多: 例如t_stu和t_teacher表,即一个学生可以有多个老师,而一个老师也可以有多个学生。这种情况通常需要创建中间表来处理多对多关系。 ...例如在dept表中的40部门并不存在员工,但在右连接中,如果dept表为右表,那么还是会查出40部门,但相应的员工信息为NULL。 ? ...特别注意:我自己测试过,两张表的主外键关系可以alter修改表的主次表关系,使这两张表有了主外键关系; 两种表也可以不有主外键关系,只要他们对应的字段和字段类型相同就行。 ...注意:在执行脚本时需要先行核查当前数据库中的表是否与脚本文件中的语句有冲突! 例如在脚本文件中存在create table a的语句,而当前数据库中已经存在了a表,那么就会出错!
数据的完整性是指数据的可靠性和准确性,数据完整性类型有四种: A、实体完整性:实体的完整性强制表的标识符列或主键的完整性(通过唯一约束,主键约束或标识列属性)。...C、引用完整性:在删除和输入记录时,引用完整性保持表之间已定义的关系。引用完整性确保键值在所有表中一致,不能引用不存在的值.如果一个键。...B、唯一值约束:一张表可以有多个列添加唯一值约束,一直允许一条记录为空值。 实体完整性,由主键和唯一性约束来实现,确保表中记录有一列唯一标识。...2、主键 MySQL的主键名总是PRIMARY, 当创建主键约束时,如果表的存储引擎是innoDB,系统默认会在所在的列和列组合上建立对应的唯一索引。...index uc_sname; 三、域完整性 1、默认值 在表中插入一条新的记录时,如果没有为该字段赋值,那么数据库系统会自动为该字段赋一条默认值。
TABLE student1 MODIFY sno VARCHAR(10) NULL; 注意一点: 如果原来的字段是空,那么你就不能把该字段修改成可以为空,当然你修改也会报错 唯一性约束 作用在字段上...,使该字段不能有重复的值出现 同一个表可以有多个唯一约束 唯一约束可以是某个列,也可以多个列组合的唯一 唯一的字段可以为空的 在创建约束的时候,如果不给约束命名的话,那么默认和该列的名字相同。...主键约束的列不允许重复,也不允许出现空值 一个表最多有一个主键约束,建立主键约束可以在列级别创建,也可以在表级别创建 主键约束对应表中的一列或者多列(复合主键) MySQL的主键名总是PRIMARY,自己命名了也没有用...自增列所在的列必须是键列(主键列primary key、唯一键列 unique key) 自增列的数据类型必须是整型类型 当添加数据的时候,如果指定了此列是0,或者null,那么添加成功的时候,会从当前最大值的基础上自增...FOREIGN KEY约束 外键约束 外键约束会涉及到主表和从表 主表(父表):被引用的表 从表(子表):引用别人的表 从表的外键必须引用主表的主键或者唯一性约束的列 在创建外键的时候,如果不给外键约束的话
,主键又有不为空且唯一的约束,又不能擅自给你的字段加上这些约束,那么没办法,它只能给你添加一个隐藏字段来帮你组织数据,如果是这样,你想想,主键是不是帮我们做优化查询用的啊,这个优化是我们可以通过主键来查询数据...key 外键约束 快速理解foreign key(外键其实就是标明表和表之间的关系,表和表之间如果有关系的话就三种:一对一,多对一,多对多) on delete cascade 级联删除 on update...是否右表的多条记录可以对应左表的一条记录,如果是,则证明右表的一个字段foreign key 左表一个字段(通常是id) 8.总结 1.多对一: 如果只有步骤1成立,则是左表多对一右表 如果只有步骤...2成立,则是右表多对一左表 多对多:如果步骤1和2同时成立,则证明这两张表时一个双向的多对一,即多对多,需要定义一个这两张表的关系表来专门存放二者的关系 一对一:如果1和2都不成立,而是左表的一条记录唯一对应右表的一条记录...,被关联字段不能随意删除和修改 模式(cascade):外键有强制约束效果,被关联字段删除或者修改,关联他的那么字段数据会随之删除或者修改 constraint fk_t1_publish foreign
1.数据表的设计 MySQL数据库管理系统(DBMS)中,包含的MySQL中定义数据字段的类型对你数据库的优化是非常重要的。...外键(Foreign Key):表的外键是另一表的主键, 外键可以有重复, 可以是空值。 唯一键( Unique Key):唯一标识一条记录,不能有重复,可以为空。...索引(Index):该字段可以有重复值记录,可以有空值,如果是唯一索引,那么就不可以有重复的记录,可以有空值。 作用: 主键:用来保证数据完整性。...但是use [DatabaseName]却不用,可能是mysql的一个小bug。类似于quit和exit退出mysql的命令,不需要一个分号。(如果你喜欢,你可以用一个分号终止这样的语句)。...搜索 [4]MySQL引擎 [5]MySQL中的四种Key [6]SQL的主键和外键约束 [7]唯一索引和唯一约束有什么区别
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解 前言 在MySQL数据库中,约束是一种对数据表中数据进行限制和检查的方法,可以保证数据表中数据的完整性和一致性。...它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。 为了保证数据的完整性,SQL规范以约束的方式对 表数据进行额外的条件限制 。...如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一性约束名。...主键约束对应着表中的一列或者多列(复合主键) 是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。 MySQL的主键名总是PRIMARY ,就算自己命名了主键约束名也没用。...,你还保留非空约束,那么在加默认值约束时,还得保留非空约束,否则非空约束就被 删除了 #同理,在给某个字段加非空约束也一样,如果这个字段原来有默认值约束,你想保留,也要在modify语句中保留默 认值约束
关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制。...当前几乎所有的关系型数据库都提供了约束(constraits)机制,该机制提供了一条强大而简易的途径来保证数据库中的数据完整性,一般来说,数据完整性有以下三种形式: (1)实体完整性保证表中有一个主键,...还可以考虑用default约束作为强制域完整性的一个方面 (3)参照完整性保证两张表之间的关系,InnoDB存储引擎提供了以下几种约束: a. primary key b. unique key...对于主键约束耳音,其默认约束名为PRIMARY,而对于Unique Key约束而言,默认约束名和列名一样,当然也可以人为的指定Unique Key的名字,Foreign Key约束似乎会有一个比较神秘的默认名称...对错误数据的约束 在某些默认设置下,MySql数据库允许非法或不正确的数据的插入或更新,又或者可以在数据库内部将其转化为一个合法的值,如向not null的字段插入一个null值,MySql数据库会将其更改为
,多个字段名用逗号分隔,表示那么是复合唯一,即多 个字段的组合是唯一的 ); #例子 #学生表 create table student( sid int, #学号 sname varchar(...如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和() 中排在第一个的列名相同。也可以自定义唯一性约束名。...主键约束对应着表中的一列或者多列(复合主键) 如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。 MySQL的主键名总是PRIMARY,就算自己命名了主键约束名也没用。...,那么创建顺序是随意 alter table emp add foreign key (deptid) references dept(did); 存在问题 约束关系是针对双方的 添加了外键约束后,主表的修改和删除数据受约束...FOREIGN KEY 外键约束名; 第二步查看索引名和删除索引。
领取专属 10元无门槛券
手把手带您无忧上云