mysql 一条sql查多个条件的count sql一次查询多个值对象

admin2024-05-30  13

文章目录

  • 多表查询
  • 1.内连接查询
  • 2.外连接查询
  • 3.子查询
  • 事务
  • 1.事务的基本介绍
  • 2.事务的四大特征(面试会问)
  • CET4P248


多表查询

什么叫多表查询?
多表查询就是结合多张表进行查询;

创建两张表;顺便作一个复习

首先创建一张部门表dept

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_子查询,第1张

然后创建一张职员表emp

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_连接查询_02,第2张

通过insert into 向表中添加记录后最终得到的效果

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_03,第3张

先了解一下什么是笛卡尔积?

笛卡尔是一个著名的数学家;假设有两个集合A和B;取这两个集合的所有组合情况就叫笛卡尔积

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_连接查询_04,第4张

1.内连接查询

连接查询分为隐式内连接查询显示内连接查询

隐式内连接

由于出现无用的数据;那么可以通过where条件对无用的数据进行删除

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_05,第5张

一般比较规范的格式

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_连接查询_06,第6张

显式内连接语法:select 字段列表 from 表名1 join 表名2 on 条件

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_07,第7张

那么什么时候使用内连接查询?

需要从哪些表中查询数据;条件是什么;查询哪些字段

2.外连接查询

用外连接查询的目的是为显示有的为null的记录;就例如
查询所有员工信息,如果员工有部门,则查询部门名称,没有部门就不显示部门名称,而不是不显示没有部门的该名员工

左外连接

语法::select 字段列表 from 表1 left join 表2 on 条件 查询的是左表所有数据以及其交集部分

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_子查询_08,第8张

右外连接

语法:select 字段列表 from 表1 right join 表2 on 条件 查询的右表所有数据以及其交集部分

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_09,第9张

3.子查询

什么叫子查询?
也就是说查询中可以嵌套查询语句;这就成为子查询

举个例子;想要查询工资最高的员工信息;那么首先要用聚合函数先找出最高的工资;然后再用条件查询信息

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_10,第10张

但是用了子查询后可以写成这样

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_数据_11,第11张

子查询的不同情况

  1. 子查询的结果是单行单列的;子查询可以作为条件;使用运算符去判断
    例如查询员工工资小于平均工资的人
  2. 子查询的结果是多行单列的;子查询作为条件;使用运算符in来判断
    例如查询人力资源部和开发部的所有员工信息
  3. 子查询的结果是多行多列的;子查询可以作为一张虚拟表参与查询
    例如查询员工入职日期是2014-11-11日之后的员工信息和部门信息

    需要注意的是虚拟表要给它一个别名
    其实要想得到上述例子的结果可以采用普通内连接查询及可以了;也就是给它加多一个条件

事务

1.事务的基本介绍

何为事务?
一个包含多个步骤的业务操作被一个事务管理;那么这些操作要么同时成功;要么同时失败

事务如何操作?

开启事务:start transaction;回滚:rollback;提交:cummit

mysql 一条sql查多个条件的count sql一次查询多个值对象,mysql 一条sql查多个条件的count sql一次查询多个值对象_连接查询_12,第12张

要注意的是mysql数据库中事务默认是自动提交的;也就是没有开启事务是执行一条DML语句就会自动提交一次事务

而oracle数据库是默认是手动提交的;也就是需要先开启事务然后再提交

另外可以都事务的默认提交方式进行修改(1代表自动;0代表手动)
查看事务的默认提交方式:select @@autocommit; 修改默认提交方式:set @@autocommit = 0

2.事务的四大特征(面试会问)
  1. 原子性:是不可分割的最小操作单位,要么同时成功,要么同时失败。
  2. 持久性:当事务提交或回滚后,数据库会持久化的保存数据。
  3. 隔离性:多个事务之间。相互独立。
  4. 一致性:事务操作前后,数据总量不变

CET4P248

  • conversely
  • grammar
  • freight
  • physical
  • insult
  • hostile
  • location
  • wit
  • wisdom


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!