SQL语句–查询

SQL语句–查询1 首先执行 FROM 根据 from 找到要查询的表 通过 where 来指定查询的条件 然后通过 groupby 和 having 来指定分组以及分组之后的条件 第四步通过 select 确定要返回的字段 然后执

大家好,欢迎来到IT知识分享网。

1.SQL的执行顺序

1.首先执行FROM 根据from找到要查询的表,通过where来指定查询的条件,然后通过group by和having来指定分组以及分组之后的条件,第四步通过select确定要返回的字段,然后执行order by和limit

SQL语句--查询

例子:查询年龄大于15的员工的姓名,年龄,并根据年龄进行升序排序

selcet name,age from emp where age > 15 order by age asc;

2.常用内置函数

1.字符串函数

SQL语句--查询

示例:

select concat(‘Hello’,’ Wangwei’);

update emp set workno = lpad(workno,5,’0′);

2.数值函数

SQL语句--查询

案例:生成六位随机数验证码

select  lpad( round(rand() * , 0) , 6 , 0);

3.日期函数

SQL语句--查询

查询所有员工的入职天数,并根据入职天数倒序排序

select name , datediff( curdate() , entrydate ) as ‘entrydays’ from emp order bu entrydays desc;

4.流程控制函数

用于条件筛选,提高语句执行效率

SQL语句--查询

select if (true,’OK’,’Error’) as okma;

case when then else end

需求: 查询emp表的员工姓名和工作地址 (如果是上海/北京 –> 一线 其他城市展示–>二线) 

select name, (case address when '北京' then '一线城市' when '上海' then '一线城市' else '二线城市' end) as '工作地址' from emp;

筛选成绩: 

SELECT id, name, case when math >= 85 then '优秀' when math >= 60 then '及格' else '不及格' end, case when english >= 85 then '优秀' when english >= 60 then '及格' else '不及格' end, case when chinese>= 85 then '优秀' when chinese>= 60 then '及格' else '不及格' end, from score;

SQL语句--查询

3.约束 

1.概念:约束是作用于字段上的规则,用于限制存储在表中的数据。

2.目的:保证数据库中数据的正确、有效性和完整性。

SQL语句--查询

4.多表查询

1.多表关系

1:1  1:n  n:m

多对多关系需要建立中间表来维护两方的关系

多表查询是从多张表中查询数据

简单的多表查询:select * from emp, dept; –> 笛卡尔积结果

多表查询需要消除无效的笛卡尔积,如何消除:使用where限定条件

select * from emp, dept where emp.dep_id = dept.id;

2.连接查询

1.内连接

查询的是两张表之间交集部分的数据

SQL语句--查询

select e.name d.name from emp e inner join dept d on e.dept_id = d.id; 

2.外连接

SQL语句--查询

左外连接其实就是完全包含左表的数据 

3.自连接

SQL语句--查询

查询员工及其所属领导的名字:

select a.name, b.name from emp a, emp b where a.manageid = b.id;

查询所有员工emp及其领导的名字emp,如果员工没有领导,也需要查询出来:

select a.name , b.name from emp a left join emp b on a.manageid = b.id;

联合查询:

SQL语句--查询 案例:查询薪资低于5000的员工和年龄大于50的员工全部查询出来

select * from emp where salary < 5000; union all  -- 使用union自带去重效果 select * from emp where age > 50;

3.子查询

概念:SQL语句中嵌套SELECT语句,成为嵌套查询,又称子查询。

SQL语句--查询

1.标量子查询

子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式

-- 查询销售部的所有员工信息 -- a. 查询销售部部门id select id from dept where name = '销售部'; -- b. 根据销售部部门id查询员工信息 select * from emp where dept_id = 4; -- 嵌套查询: select * from emp where dept_id = (select id from dept where name = '销售部'); 

2.列子查询

子查询返回的结果是一列(可以是多行),这种子查询成为列子查询

常用操作符:IN, NOY IN, ANY, SOME, ALL

SQL语句--查询

 -- 列子查询 -- 1. 查询销售部和市场部的所有员工信息 SELECT * from emp WHERE dept_id in ( SELECT id from dept WHERE name = '销售部' OR '市场部' ); -- 2. 查询比财务部所有人工资工资都高的员工信息 -- 先查财务部的人员工资 where * FROM emp WHERE salary > all( select salary from emp where dept_id = ( select id from dept where name = '财务部'; ); )

3.行子查询

子查询返回的结果是一行,也可以是多列,这种子查询称为行子查询。

常用操作符:=, <>, IN, NOT, IN

-- 1.查询与张无忌的薪资及直属领导相同的员工信息; SELECT * from emp WHERE (salary, manageid) = (SELECT salary, manageid FROM emp where name = '张无忌'); 

4.表子查询

子查询返回的结果是多行多列,这种子查询称为表子查询;

常用的操作符:IN

-- 1.查询与鹿杖客 宋远桥的职位和薪资相同的员工信息 -- a.查询 鹿杖客 宋远桥 的职位和薪资 SELECT job, salary from emp WHERE name = '鹿杖客' or name = '宋远桥'; -- b.查询与鹿杖客 宋远桥的职位薪资相同的员工信息 SELECT * FROM emp WHERE (job,salary) IN SELECT job, salary from emp WHERE name = '鹿杖客' or name = '宋远桥'; -- 2.查询入职日期是“2022-01-01”之后的员工信息,及其部门的信息 select * from emp where entrydate > "2022-01-01"; SELECT e.*, dept.* from (select * from emp where entrydate > "2022-01-01") e left JOIN dept on e.dept_id = dept.id

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114107.html

(0)
上一篇 2025-12-10 20:16
下一篇 2025-12-10 20:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信