内连接 内连接是一种常见的连接查询,他根据匹配的条件返回第一个表与第二个表所有匹配成功的记录。...外键约束 添加外键约束 外键指的是-一个表中引用另一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束, 从而保证数据的一-致性 和完整性。 ➢被引用的表称为主表。...➢引用外键的表称为丛表。 创建数据表(CREATE TABLE),在相应的位置添加外键约束。 修改数据结构(ALTER TABLE) ,在相应的位置添加外键约束。...➢具有关联的表中的数据,可以通过连接查询的方式获取,并且在没有添加外键约束时,关联表中的数据插入、更新和删除操作互不影响。...➢对于添加了外键约束的关联表而言,数据的插入、更新和删除操作就会受到一定的约束。 一个具有外键约束的丛表在插入数据时,外键字段的值会受主表数据的约束,保证从表插入的数据必须符合约束规范的要求。
它是与数据库进行通信的主要工具,也是开发和管理数据库的核心技术之一。2.SQL的优点SQL具有以下几个优点:简单易学:SQL的语法相对简单,易于学习和理解。...每个字段中的数据需要是不可再分的,不能包含多个值或多个属性。第二范式(2NF):在1NF的基础上,确保非主键字段完全依赖于主键字段。即非主键字段必须完全依赖主键字段,而不能只依赖主键的一部分。...外键约束外键约束用于保持数据表之间的一致性和约束关系,确保数据的完整性。6.1 数据一致性概念在设置外键约束之前,需要了解数据一致性的概念。...通过外键约束,可以实现数据表之间的一对一、一对多或多对多的关系。外键约束会导致数据库的性能下降,因此在设计数据库时需要权衡性能和数据一致性的要求。...,结合MYSQL的基本知识点,从SQL的概述、数据库范式、数据类型、基本操作、约束、数据插入、数据更新、数据删除、简单查询、函数、条件查询、表关联关系、多表连接查询、子查询等多个方面进行了详细的介绍。
30:删除表中的数据 DELETE FROM 数据表名 WHERE 条件; 31:外键约束的参照操作(外键约束的要求解析) 外键约束保证数据一致性,完整性,实现一对多或者一对一关系 (含有外键的表称为子表...) 外键约束的要求 1:父表和子表必须使用相同的存储引擎,而且禁止使用临时表 2:数据表的存储引擎只能为InnoDB 3:外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同...33:外键约束的参照操作 CASCADE:从父表删除或者更新且自动删除或者更新子表中匹配的行 《在两表中插入记录,必须先在父表中插入记录》 SET NULL:从父表删除或者更新行,并且设置子表中的外键列为...删除表中的数据 DELETE FROM 数据表名 WHERE 条件; ?...删除列 ALTER TABLE 数据表名 DROP 列名; ? ? ? ? ? ? ? ? ? ? 添加主键约束(只可以有一个) ? ? ? ? ? ? 添加唯一约束(可以添加多个) ? ?
但是由于此时事务A刚好执行了下一条更新语句,而且恰好新插入的那行数据满足更新条件,它的更新版本号被修改为事务A的版本号,这导致事务A的第二次查询操作会查询出这条别的事务新插入的数据,这就造成了幻读的问题...成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键(一张表可以有多个,可以有重复的,可以是空值)。...元组:可以理解为数据表的某一行属性:可以理解为数据表的某一列,属性名就是列的字段。 候选码:某一属性组能唯一标识一个元组而其子集不能,则称该属性组为候选码。若有多个候选码,选择其中一个为主码。...第二范式(2NF):每个非主属性完全依赖于主属性集(候选键集)。B完全依赖于A,就是说A中的所有属性唯一决定B,属性少了就不能唯一决定,属性多了则有冗余(叫依赖不叫完全依赖)。...示例: select * from student natural join grade; 结果: 没有给任何的条件,数据库自动把两张数据表各行有相同属性的行(元组)连接在了一起。
3.1.3、元组或者记录 一个数据表由多个属性构成,由多个属性构成的一条数据也叫行或者记录,数据表就是由一行行的记录构成的。...3.1.5、主键 能够唯一标识一个数据表中一条数据的一个或者多个字段(由多个字段构成的主键又称为联合主键),且组成主键的字段应该是从不变化或极少变化的属性,一般这个主键的选取需要与业务无关,如:常见的自增长...3.1.6、外键 用来关联两个实体(数据表)之间一个关系的字段,拥有外键字段的表又叫做主表,使用外键字段作为主键的表则称为从表,现在一般推荐使用逻辑外键而不使用物理外键。...Update关键字主要用于对表数据的一个更新操作,不会对表结构和索引造成影响(注意:使用时一定要检查是否需要携带where条件,如果不携带,则更新的是表中所有的记录的数据) 一、更新某些记录字段的值...事务的隔离性是通过数据库锁机制实现, 多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,其他事务必须等待,直到前一个事务释放了锁,其他事务才有机会更新该数据。
外键索引,如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件。...复合键,将多个列作为一个索引键,一般用于复合索引。 索引,使用索引可以快速访问数据库中的特定信息。 参照完整性,参照的完整性要求关系中不允许引用不存在的实体。...表头为每一列的名称,列为具有相同数据类型的数据的集合,行为每一行用来描述某条记录的具体信息,值为行的具体信息,每个值必须与该列的数据类型相同,键的值在当前列中具有唯一性。...列名称 FROM 表名称 WHERE 列 运算符 值 操作符 描述 = 等于 不等于 > 大于 < 小于 >= 大于等于 <= 小于等于 BETWEEN 在某个范围内 LIKE 搜索某种模式 如果第一个条件和第二个条件都成立...如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。 ORDER BY 语句用于对结果集进行排序。
:FOREIGN KEY --外键约束要求: --1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,...:FOREIGN KEY --外键约束要求: --1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表 --2.数据表的存储引擎只能为InnoDB /* 3.外键列和参照列必须具有相似的数据类型。...外键约束的参照操作及功能: 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行 2.SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL (ps.如果使用该选项,...; --多个属性(若是第一个条件可排列好,则忽略后面条件,以此往后类推) 4.LIMIT(限制查询结果返回的数量) --语句格式 [LIMIT {[offset,] row_count|row_count
包含所有列的统计信息的column stats索引改进了基于写入程序和读取程序中的键和列值范围的文件修剪,例如Spark中的查询规划。多模式索引被实现为包含元数据表中的索引的独立分区。...启用Hudi元数据表和多模式索引 在 0.11.0 中,默认启用具有同步更新和基于元数据表的文件列表的元数据表。 部署注意事项中有一些先决条件配置和步骤,可以安全地使用此功能。...在 0.11.0 版本中,Spark 中改进查询的数据跳过现在依赖于元数据表中的列统计索引。...启用元数据表和列统计索引是使用 hoodie.enable.data.skipping 启用数据跳过的先决条件。...部署模型 B:具有异步表服务的单个写入器 如果您当前的部署模型是单写入器以及在同一进程中运行的异步表服务(例如清理、集群、压缩),例如 Deltastreamer 连续模式写入 MOR 表、Spark
高效性:通过合理的查询优化,SQL能够高效地操作和处理海量数据。 兼容性:SQL支持多种数据库引擎,具有较好的向后兼容性和向前兼容性。 3....也就是说,每个字段必须存储单一的数据类型,避免出现重复的数据集合。 2. 第二范式(2NF) 第二范式要求在第一范式的基础上,所有非主键字段必须完全依赖于主键,不能只依赖于主键的一部分。...6.1 数据一致性概念 数据一致性指的是数据库中各数据表之间的关联数据在插入、更新、删除时的保持一致性。外键约束能确保这一点。...外键约束通常会在插入、更新数据时进行检查,可能导致性能开销。 六、数据表插入数据 1....TRUNCATE和DELETE的区别 DELETE:逐条删除,支持条件,可以回滚。 TRUNCATE:快速删除所有记录,不能回滚。 九、MySQL数据表简单查询 1.
要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚 20. SQL语言包括哪几部分?...答:视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。...作用: 主键--用来保证数据完整性 外键--用来和其他表建立联系用的 索引--是提高查询排序的速度 个数: 主键--主键只能有一个 外键--一个表可以有多个外键 索引--一个表可以有多个唯一索引...varchar的适用场景: 字符串列的最大长度比平均长度大很多 字符串很少被更新,容易产生存储碎片 使用多字节字符集存储字符串 Char的场景: 存储具有近似得长度(md5值,身份证,手机号)
(5)创建检查约束,检查约束可以把输入的数据限制在指定范围。 设计——选择一列——右击 check约束 (6)创建外键:外键是建立两个表数据之间连接的一列或多列。...通过将保存表中主键值的一列或多列添加到另一个表中,可以创建两个表之间的连接。这个列为第二个表的外键。...具有数据查询、统计、分组和排序的功能。 select 和from为必选子句,其他为可选语句。...(1)简单基本连接 (2)内连接 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。 如: (3)外连接 外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。...3.4 视图操作 (1)插入数据 (2)修改数据 (3)删除数据 4、基本表和视图的区别: (1)数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集,一般来说你可以用
# 2.4 第一范式 (1st NF) 第一范式主要确保数据库中每个字段的值必须具有 原子性 ,也就是说数据表中每个字段的值为 不可再次拆分 的最小数据单元。...为满足第三范式,可以改写如下: 符合 3NF 后的数据模型通俗地讲,2NF 和 3NF 通常以这句话概括:“每个非键属性依赖于键,依赖于 整个键,并且除了键别无他物”。...因此,数据表符合 2NF 的要求; 最后,数据表中的非主属性,不传递依赖于候选键。因此符合 3NF 的要求。 3. 存在的问题 既然数据表已经符合了 3NF 的要求,是不是就不存在问题了呢?...你能看到,即便数据表符合 3NF 的要求,同样可能存在插入,更新和删除数据的异常情况。 4....第 2 步,确定好了主键以后,判断哪些字段完全依赖主键,哪些字段只依赖于主键的一部分。把只依赖于主键一部分的字段拆出去,形成新的数据表。
定义迁移 数据表的每次变动(创建、修改、删除)都对应一个迁移文件,这些迁移文件位于 database/migrations 目录下,以日期时间为条件确定执行的先后顺序。...此外,这个 Artisan 命令还支持两个可选的选项,--create= 用于指定要创建的数据表名称,以及 --table= 用于指定要修改的数据表名称,前者在定义创建数据表迁移文件时使用,后者在定义更新数据表迁移文件时使用...Schema 门面来完成(底层对应的类是 Illuminate\Database\Schema\Builder),比如创建数据表,需要调用该门面的 create 方法,该方法的第一个参数是要创建的数据表的名称...,第二个参数是一个闭包,其中定义的是新增数据表的所有字段信息。...('id')->on('users'); 如果你还想进一步指定外键约束(级联删除和更新,比如我们删除了 users 表中的某个 id 对应记录,那么其在文章表中对应 user_id 的所有文章会被删除
18:(然后再次查看数据表里面的内容即可) ? 19:(更新操作,命令UPDATE 数据表明 SET 更新的内容 WHERE 更新的条件) ? 20:(更新操作完毕后查看是否更新完成) ?...24:(带有条件的查询语句,如下图,SELECT * FROM 数据表名 WHERE 查询条件) ?...31:(in后面也可以加多个查询值) ? 32:(第三,and:在where里面如果有多个条件,表示多个条件同时满足) ?...33:(第三,and:在where里面如果有多个条件,表示多个条件同时满足,可以是范围也可以是具体的) ? 34:(第四,得到区间范围的值,注意使用AND 和BETWEEN ......50:分页查询,LIMIT 0,5;执行分页查询,第一个数字代表从那个开始,第二个数字代表一页有几个。 ? 举两个例子,上下如图 ?
更新操作: 更新的最佳实践原则是:如果需要使用模型事件,那么就先查询后更新,如果不需要使用事件或者不查询直接更新,直接使用静态的Update方法进行条件更新,如非必要,尽量不要使用批量更新。...,可选 参数 3 是允许写入的字段,可选 ---- save() 模型的新增、更新都需要save()进行执行,具有自动识别; 实例化模型后调用save()表示新增,查询数据后调用save()表示修改...更新的最佳实践原则是:如果需要使用模型事件,那么就先查询后更新,如果不需要使用事件或者不查询直接更新,直接使用静态的Update方法进行条件更新,如非必要,尽量不要使用批量更新。...$user; scope() 的第一个参数是调用的封装方法,第二个参数是封装方法可以接收的数据 支持多个查询封装方法连缀调用 $user = UserModel::scope('email','xiao...主表的主键与附属表的外键进行关联 一对一关联 hasOne 关联定义: hasOne('关联模型类名','外键','主键') 关联模型: 外键:默认的外键规则是当前的模型名+_id 主键:
更新语句 UPDATE 数据表名 SET 字段名=新字段值,...[WHERE 条件查询]ORDER BY 字段名[,字段名...]...需要提醒的是,使用UNION运算符时应保证每个联合查询的语句的选择字段具有相同的数据类型,或者可以自动将它们转为相同的数据类型。...注:联合查询时,查询的结果字段标题为第一个SELECT语句的字段标题。如果要对联合查询结果进行排序时,也必须使用第一个SELECT语句中的字段名。...连接查询 在关系型数据库中,一个数据库包括了多张数据表,表与表直接通过外键建立联系。通过连接查询,可以查询出存放在多张数据表中的信息。连接类型可以分为:交叉连接,内连接,外链接。...FROM 数据表1名连接类型 数据表2名[ON 连接条件]; 连接类型:CROSS JOIN;INNER JOIN 1,交叉连接 交叉连接(CROSS JOIN)返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数
可以使用主键来查询数据 #外键:用于关联两个表 #复合键:将多个列作为一个索引键,一般用于符合索引 #索引:使用索引可快速访问数据库中的特定信息。...与实体完整性是关系模型必须 满足的完整性约束条件,目的是保证数据的一致性 #表头:每一列的名称 #列:具有相同数据类型类型的数据集合 #行:每一行用来描述某条记录的具体信息...#值:行的具体信息,每个值必须与该列的数据类型相同 #键:键的值在当前列中具有唯一性 MySQL数据库的安装 #第一步:下载 下载地址:https://dev.mysql.com/downloads/...可以使用 and or 来包含多个条件 where语句的操作符列表: 操作符 描述 例子 = 等号,检测两个值是否相等,如果相等返回true (A=B)返回true ,!...组合索引:一个索引包含多个列 注:创建索引时,要确保该索引时应用在SQL查询语句的条件(一般是where子句的条件) 索引的弊端:索引会降低更新表的速度,如对表进行INSERT、UPDATE、DELETE
、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系》 3.2.1 聚簇索引、非聚簇索引 聚簇索引规定了一个数据表的排序方式,一个数据表只能有一个聚簇索引,通常使用聚簇索引的是数据表的主键。...不要使用用户可以编辑的键:不让主键具有可更新性 在确定采用什么字段作为表的键的时候,可一定要小心用户将要编辑的字段。通常的情况下不要选择用户可编辑的字段作为键。...; 查询中与其他表关联的字段,外键关系建立索引; 高并发条件下倾向组合索引( 多个列组合构建的索引 ); “最左前缀”原则:对于语句 ALTER TABLE ‘table_name’ ADD INDEX...其它通配符同样,也就是说,在查询条件中使用正则表达式时,只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。...在查询条件中使用 OR 连接多个条件会导致索引失效; 除非 OR 链接的每个条件都加上索引,这时应该改为两次查询,然后用 UNION ALL 连接起来。
(从读写两方面) 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。...要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚 39、SQL 语言包括哪几部分?...视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49、你可以用什么来确保表格里的字段只接受特定范围里的值
(从读写两方面) 索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。...要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。...而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚 39、SQL 语言包括哪几部分?...视图是一种虚拟的表,具有和物理表相同的功能。可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集。对视图的修改不影响基本表。它使得我们获取数据更容易,相比多表查询。...主键——用来保证数据完整性 外键——用来和其他表建立联系用的 索引——是提高查询排序的速度 个数: 主键—— 主键只能有一个 外键—— 一个表可以有多个外键 索引—— 一个表可以有多个唯一索引 49