网站大量收购闲置独家精品文档,联系QQ:2885784924

PHP+MySQL动态网站开发(第2版)课件 第7章 MySQL多表操作.pptx

PHP+MySQL动态网站开发(第2版)课件 第7章 MySQL多表操作.pptx

  1. 1、本文档共137页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第7章MySQL多表操作;学习目标/Target;学习目标/Target;学习目标/Target;章节概述/Summary;目录/Contents;目录/Contents;数据表的联系;;一对一:即一张数据表中的一条数据只与另外一张表中的某一条数据对应。

实现一对一的联系:将一张数据表拆分成两张表,即将频繁使用的字段和不常用的字段进行垂直分割,使用相同的主键对应。;根据一对一联系拆分学生信息表;7.1.2一对多;7.1.2一对多;7.1.3多对多;7.1.3多对多;数据库设计范式;;第一范式(1NF)是指数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值,或不能有重复的属性。

第一范式遵从原子性,属性不可再分。;不满足第一范式的情况:

将用户信息和联系方式信息保存在一张数据表中。;;满足第一范式的情况:;;第二范式(2NF)是在第一范式的基础上建立起来的,即满足第二范式之前必须满足第一范式。第二范式要求实体的属性完全依赖主键,对于复合主键而言,不能仅依赖主键的一部分。第二范式遵从唯一性,非主键字段需完全依赖主键。;不满足第二范式的情况:;采用上述方式设计的用户表存在以下问题:

插入异常:如果一个用户没有下过订单,则该用户无法插入。

删除异常:如果删除一个用户所有的订单,则该用户会被删除。

更新异常:由于用户名冗余,修改一个用户时需要修改多条数据。如果稍有不慎,漏改某些数据,会出现更新异常。;;满足第二范式的情况:;;第三范式(3NF)是在第二范式的基础上建立起来的,即满足第三范式之前必须满足第二范式。第三范式要求一个数据表中每一列数据都与主键直接相关,而不能间接相关。

第三范式要求非主键字段不能相互依赖。;不满足第三范式的情况:;采用上述方式设计的用户表存在以下问题:

插入异常:如果新插入用户的等级在1、2之外,其享受的折扣无从参考。

删除异常:如果删除某个等级下所有的用户,该等级对应的折扣也被删除。

更新异常:如果修改某个用户的等级,该用户享受的折扣必须随之修改;如果修改某个等级对应的折扣,因为折扣存在冗余,容易出现漏改的情况。;;满足第三范式的情况:;;逆规范化是一种反范式的设计,其目的主要是提高查询效率。范式虽然减少了数据冗余,但是增加了表的数量,这会使查询变得复杂,尤其是在连接多张表查询数据时,会使查询性能降低。;逆规范化设计商品表和订单表:;数据进阶操作;;使用SELECT语句的查询选项DISTINCT可以实现去重查询。

带有查询选项的SELECT语句的语法格式如下:;注意:

当查询的字段有多个时,只有所有字段的值完全相同,才会被认为是重复数据。;演示普通查询和使用查询选项DISTINCT的查询对比:;;1.比较运算符

比较运算符通常用于对数据进行限定。比较运算符的比较结果有3种,分别为1、0和NULL,其中1表示TRUE(真),0表示FALSE(假),NULL表示未知。

常用的比较运算符:;运算符;使用BETWEEN...AND...获取my_goods表中价格在2000~6000范围内的商品的信息:;2.逻辑运算符

逻辑运算符通常用于逻辑判断,它经常与比较运算符结合使用。逻辑判断的结果有3种,分别为1、0或NULL,其中1表示TRUE(真),0表示FALSE(假),NULL表示未知。

常用的逻辑运算符:;使用AND运算符查询my_goods表中关键词为“电子产品”且评分为5的商品:;;;常用的聚合函数:;1.COUNT()函数

COUNT()函数用于统计查询的总记录数,使用COUNT()函数查询数据的语法格式:;如果想要统计的字段中包含NULL值时,可以先借助IFNULL()函数,将NULL值转换为0再进行计算。语法格式如下:;MIN()函数用于查询某一列数值中的最小值,基本语法格式:;5.GROUP_CONCAT()函数

GROUP_CONCAT()函数使用指定分隔符将某一列的值连接成字符串,通常用于将分组查询的结果进行字符串拼接。

使用GROUP_CONCAT()函数查询数据的语法格式:;6.JSON_ARRAYAGG()函数和JSON_OBJECTAGG()函数

JSON_ARRAYAGG()函数的参数可以是一个字段或表达式,返回值为一个JSON数组;JSON_OBJECTAGG()函数将两个字段名或表达式作为参数,基本语法格式如下。

其中参数1表示“键”,参数2表示“键”对应的值,并返回一个包含键值对的JSON对象。

将id字段的结果集作为JSON数组返回,将id和name字段作为JSON对象返回:;多学一招:在查询中使用别名;多学一招:在查询中使用别名;;1.分组查询

在查询数据时,在WHERE子句后面添加GROUP

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档