多表连接查询与高级查询上(第三天)

多表连接查询与高级查询上(第三天)_第1张图片

select * from emp;
select * from dept;
–A{a,b,c} B{d,e,f,g}
–A*B = {ad,ae,af,ag,bd,be,bf,bg,cd,ce,cf,cg}
select ename,job,sal,dname from emp,deptno

等值连接(只能查询出符合条件的数据,例如员工表与部门表中能对应的列deptno)
select e.ename,e.job,e.sal,d.dname,e.deptno
from emp e,dept d
where e.deptno = d.deptno and e.sal > 3000

/*
内连接(Inner Join)
语法:
select column_name(s)
from table_name1
inner join table_name2
on table_name1.column_name=table_name2.columu_name
注意:on后面只写表的关联条件
*/

select e.ename,e.job,e.sal,d.dname,e.deptno
from emp e
inner join dept d
on e.deptno = d.deptno
where e.sal > 3000

练习:
多表连接查询与高级查询上(第三天)_第2张图片
多表连接查询与高级查询上(第三天)_第3张图片
多表连接查询与高级查询上(第三天)_第4张图片
/*
外连接(outer join)
1.左外连接 left outer join : 将左表中符合条件的数据与不符合条件的数据全查询出来
2.右外连接 right outer join : 将右表中符合条件的数据与不符合条件的数据全查询出来
3.全外连接 full outer join(mysql中是不支持的,Oracle中支持) 不常用 查询出两表符合条件的数据
注意:outer可以省略
*/

多表连接查询与高级查询上(第三天)_第5张图片
多表连接查询与高级查询上(第三天)_第6张图片
/*
自连接: 将一张表当成两张表来看,这两张表是一模一样的(多表连接)
注意:要想使用自连接,表中的数据一定要有一定的规律
/
多表连接查询与高级查询上(第三天)_第7张图片
/

**函数:**也可以称为方法,它是一个功能,可以重用
函数:1.自定义函数 2.系统函数(重要) ifnull(comm,0)
IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值。
1.字符串函数
char_length(s) 返回字符串s的字符数
*/
select char_length(“hhhhhh”) from dual –执行结果:6

员工表信息查询:—ename为列 (第一个为要查询的,第二个为查询之后的) emp表名
多表连接查询与高级查询上(第三天)_第8张图片
–concat(s1,s2…sn) 字符串 s1,s2 等多个字符串合并为一个字符串
select concat("sql ","runoob ","gooole ",“facebook”) as concatenatedstring;
–执行结果: sql runoob gooole facebook

–upper(s) 将字符串转换为大写

–lowers(s) 将字符串s的所有字母变成小写字母

–trim(s) 去掉字符串s开始和结尾处的空格

–upper(s) 将字符串转换为大写

–lowers(s) 将字符串s的所有字母变成小写字母

–trim(s) 去掉字符串s开始和结尾处的空格
–substr(s,start,length) 从字符串s的start位置截取长度为length的子字符串

–2.日期函数
–返回系统当前的日期
select curdate() from dual; --执行结果:2021-01-15

–curtime() 返回当前时间
select curtime(); --执行结果:17:12:02

–now() 返回当前日期和时间
select now() --执行结果:2021-01-15 17:13:48

–last_day(d) 返回给给定日期的那一月份的最后一天
select last_day(“2017-06-20”); --执行结果:2017-06-30

多表连接查询与高级查询上(第三天)_第9张图片

3.分组函数

  1. 分组函数
    a) 分组函数是对表中一组记录进行操作,每组只返回一个结果,即首先要对表记录进行分组,然后再进行操作汇总,每组返回一个结果,分组时可能是整个表分为一组,也可能根据条件分成多组。
    b) 分组函数常用到以下五个函数:
    i. MIN
    ii. MAX
    iii. SUM
    iv. AVG
    v. COUNT

多表连接查询与高级查询上(第三天)_第10张图片
多表连接查询与高级查询上(第三天)_第11张图片
多表连接查询与高级查询上(第三天)_第12张图片
进行B分组

如果多值的列与分组函数混用,select后边有几个多值的列,group by后边要将多值的列都需要写上,例如下:
多表连接查询与高级查询上(第三天)_第13张图片
多表连接查询与高级查询上(第三天)_第14张图片
在这里插入图片描述
多表连接查询与高级查询上(第三天)_第15张图片
多表连接查询与高级查询上(第三天)_第16张图片
分组函数
多表连接查询与高级查询上(第三天)_第17张图片
多表连接查询与高级查询上(第三天)_第18张图片
多表连接查询与高级查询上(第三天)_第19张图片
多表连接查询与高级查询上(第三天)_第20张图片
多表连接查询与高级查询上(第三天)_第21张图片
分组函数中空值处理:
多表连接查询与高级查询上(第三天)_第22张图片
多表连接查询与高级查询上(第三天)_第23张图片
创建数据组
多表连接查询与高级查询上(第三天)_第24张图片
多表连接查询与高级查询上(第三天)_第25张图片
多表连接查询与高级查询上(第三天)_第26张图片
多表连接查询与高级查询上(第三天)_第27张图片
排除组结果
多表连接查询与高级查询上(第三天)_第28张图片
多表连接查询与高级查询上(第三天)_第29张图片
select语句执行过程
多表连接查询与高级查询上(第三天)_第30张图片

你可能感兴趣的:(数据库,mysql)