多表连接查询与高级查询

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

练习:

/*
外连接(outer join)
1.左外连接 left outer join : 将左表中符合条件的数据与不符合条件的数据全查询出来
2.右外连接 right outer join : 将右表中符合条件的数据与不符合条件的数据全查询出来
3.全外连接 full outer join(mysql中是不支持的,Oracle中支持) 不常用 查询出两表符合条件的数据
注意:outer可以省略
*/

/*
自连接: 将一张表当成两张表来看,这两张表是一模一样的(多表连接)
注意:要想使用自连接,表中的数据一定要有一定的规律
/

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

员工表信息查询:—ename为列 (第一个为要查询的,第二个为查询之后的) emp表名

–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

3.分组函数

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

进行B分组

如果多值的列与分组函数混用,select后边有几个多值的列,group by后边要将多值的列都需要写上,例如下:

分组函数

分组函数中空值处理:

创建数据组

排除组结果

select语句执行过程

本文地址:https://blog.csdn.net/gcyqweasd/article/details/112689351

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐