数据库复杂语句.doc

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

1 课程名称: sql语句(二) 2 知识点概述 2.1、本次预备讲解的知识点 1、表之间的关联关系 2、多表的查询 3、分组统计 4、分页查询 3、具体内容 用Navicat 8 for Mysql 连接数据库基本操作如图: 1、建立连接 2、填写连接信息 3、双击以建立的连接名(connection_one) 4、双击要打开的数据库(db_temp) 5、单击右键,创建dept、emp表 6、填写dept、emp表结构详细信息 dept表 emp表 3.1、表之间的关联关系 数据库中的表一般存在三种关联关系 1、一对一 2、一对多、多对一 3、多对多 表之间的的关联关系,通过“外键”来体现,外键的作用就是建立表之间的关联关系,外键一般在多方表。一个表可以有多个“外键“ 用Navicat 8 for Mysql 设计外键,操作如图: 1、右键--(选择设计表 2、选择创建栏位 3、添加如下选项 4、选择外键,按如下步骤填写外键信息 5、填写完外键信息选保存 此刻dept表、emp表就建立的一对多的关联关系。关联关系是为了保证数据库中数据的完整性 3.2、多表查询 如果查询使用一个以上的表就成为多表查询 在Navicat8中写SQL语句,则需使用查询窗体 如图所示: 右键单击查询 查询编辑选项中即可写SQL语句 3.2.1、多表查询基本语法 多表查询语法如下: SELECT {DISTINCT} * | 表名.列名1 别名1.列明 ,表名.列名2,别名2.列明 ,… FROM 表名称1 别名1,表名称2 别名2,… {WHERE 条件{s}} {ORDER BY 排序字段 ASC|DESC,排序字段 ASC|DESC} 同时查询dept、emp表 SELECT * FROM dept,emp; 查询emp表的记录数 SELECT COUNT(*) FROM emp 查询dept表的记录数 SELECT COUNT(*) FROM dept dept表4条记录 emp表7条记录 在使用多表时会产生笛卡尔乘积,4 * 7 = 28 条记录,这些记录中许多是重复信息,所以在查询多表时要使用关联字段作为条件,去掉笛卡尔乘积 在dept表和emp表中关联的字段是: dept表的deptid字段与emp表的deptid,而且emp的deptid字段的值都来自dept的deptid,即dept.deptid = emp.empid 去掉笛卡尔乘积的查询为: SELECT * FROM dept,emp WHERE dept.deptid = emp.deptid 使用多表查询,建议使用别名 查询员工编号,员工姓名,员工性别,员工年龄,员工地址,所属部门名称 |- 此查询包含了员工表中的信息,部门表中的信息,故使用多表查询 SELECT B.empid,B.empname,B.empsex,B.empage,B.empaddress,A.deptname FROM dept A, emp B WHERE A.deptid = B.deptid 3.2.2、左、右连接查询 在多表查询中还有一种查询方式,称为内连接查询,语法如下: SELECT {DISTINCT} * | 表名.列名1 别名1.列明 ,表名.列名2,别名2.列明 ,… FROM 表名称1 别名1 INNER JOIN表名称2 别名2,… ON 关联条件 {WHERE 条件{s}} {ORDER BY 排序字段 ASC|DESC,排序字段 ASC|DESC} 查询部门表和员工表信息 SELECT * FROM dept INNER JOIN emp ON dept.deptid = emp.deptid 内连接查询其实就是去掉笛卡尔乘积的多表关联查询,注意:只查询关联字段,没有关联的不查询 左连接查询 SELECT * FROM dept LEFT JOIN emp ON dept.deptid = emp.deptid 以左边的表作为标准,无论关联与否左边表都查询 右连接查询 SELECT * FROM dept RIGHT JOIN emp ON dept.deptid = emp.deptid 以右边的表作为标准,无论关联与否右边表都查询 3.3、组函数及分组统计、 如需查询员工表中的性别为“男”或“女”的员工个数,则需要SQL语句中分组统计功能。 分组在SQL中用“GROUP BY”语法如下: SELECT {DISTINCT} * | 列名1 别名1 ,列名2,别名2 ,… FROM 表名称1 别名1 {WHERE 条件{s}} GROUP BY 分组条件 {ORDER BY 排序字段 ASC|DESC,排序字段 ASC|D

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档