数据库基础(三)

多表查询

(一)查询结果去重 (distinct 关键字)

 数据库基础(三)

注意:distinct 只能出现在所有字段的最前面。表示对后面所有字段联合去重。

     数据库基础(三)

(二)连接查询(及其重要!!!)

(1)什么是连接查询?

在实际开发中往往不止一张表(一张表太过冗余),需要对多张表进行联合查询取出最终的结果。(关系性数据库的理解就是多张表相互之间有关系)

(2)连接查询的分类

数据库基础(三)

(3)连接查询的笛卡尔积现象

重点:当两张表进行连接查询的时候,如果没有进行任何条件限制,最终的查询结果条数是两张表记录条数的乘积。另外,在连接查询时最好给每个表起别名,select的时候限定要查询表的字段名,可以省去在其他表中查找该字段的操作,执行 效率高。

  数据库基础(三)

怎么避免笛卡尔积现象?----->当然是加条件进行过滤。

避免了笛卡尔积现象,会减少查询的次数吗?----->不会,查询次数仍是笛卡尔积次,只不过显示的是符合条件的记录。

(4)内连接之等值连接:(inner表示内连接,可省)最大特点是:条件是等量关系

数据库基础(三)

 该语法是SQL99,这种语法结构更清晰一些:表的连接条件和后来的where条件分离了。

 例:查询每个员工的部门名称,要求显示员工名和部门名

数据库基础(三)

(5)内连接之非等值连接:(连接条件是非等值关系)

例:找出每个员工的工资等级,要求显示员工名,工资,工资等级。

 数据库基础(三)

(6)自连接:(一张表看做两张表,自己连接自己)

例:找出每个员工的上级领导,要求显示员工名和对应的领导名。(需要对同一张表起不同的别名)

数据库基础(三)

(7)外连接:(最主要的特点是主表的数据无条件的全部查出来,实际开发中外连接居多)

a.内连接和外连接的区别:

数据库基础(三)

 b.外连接的分类:

数据库基础(三)

c.例:找出每个员工的上级领导。主要搞清楚谁是主表,左连接主表放在左边,右连接主表放在右边(下面是左连接,a就是主表)

数据库基础(三)

注意:区分内连接和外连接 不是看inner和outer(因为都可以省略),而是看有无left或right,有则是外连接,无则是内连接。

(8)三张表以上的连接查询

 例:找出每一个员工的部门名称,工资等级,以及上级领导。

数据库基础(三)

注意查询的数据若有空一般需要用到外连接,否则用内连接。

 

(三)子查询

(1)什么是子查询,子查询都可以出现在哪里?

  数据库基础(三)

(2)from后嵌套子查询(重要!)

注意拆分题目要求

数据库基础(三)

 

(四)union (可以将查询的结果集相加)

数据库基础(三)

 

(五)limit(重点中的重点,以后分页查询全靠它!)

(1)limit是mysql特有的,其他数据库中没有,不通用。

(2)limit取结果集中的部分数据,这是它的作用。

(3)语法机制:

数据库基础(三)

(4)limit是sql语句最后执行的一个环节

(5)通用的标准分页sql

数据库基础(三)

 

(六)创建表(可以在建表时后跟default来指定默认值)

数据库基础(三)数据库基础(三)

数据库基础(三)

数据库基础(三)

 删除表:drop table if exists xxx表名

 

(七)insert语句向表中插入数据

数据库基础(三)    

   数据库基础(三)

      数据库基础(三)   

    数据库基础(三)

 复制与查询结果插入

  数据库基础(三)

 

(八)修改数据:update

数据库基础(三)

 

(九)删除数据:delete

数据库基础(三)

 数据库基础(三)

 

(十)约束(Constraint,创建表时加在字段后)

(1)什么是约束?常见的约束有哪些?

数据库基础(三)

 

 参考:https://www.bilibili.com/video/BV1fx411X7BD?

数据库基础(三)

上一篇:在Windows Mobile和Wince(Windows Embedded CE)下封装Native DLL的回调函数


下一篇:高性能 MobX 模式(part 2)- 响应变化