SQL 的复杂查询语句,例子及解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: SQL 的复杂查询语句,例子及解析

select *from emp where deptno=

(select deptno from emp where ename="smith")

这是查询出与smith同一部门的员工信息。

-----------------------------------------------------------------------------------------------------

select *from emp,(select avg(sal) mysal,detno from emp group by deptno) tem

where emp.deptno=tem.deptno and emp.sal>tem.mysal

这是查出高于对应部门平均工资的员工信息。

---------------------------------------------------------------------------------------------

select *from emp where job in (select distinct job from emp where deptno=10)


这是查询与部门id为10的部门里面的工作相同的人员信息

---------------------------------------------------------------------------------------------

select top*4 from emp order by hiredate

查出表的前四条信息


select top6 *from emp where empno   not in (select top4 empno from emp order by hiredate)

order by hiredate

查出5-10的信息条,

这里使用的是先把前4条信息的empno查询出来,然后使用not in ,来再查询前6条,

这样达到查询出5-10的信息条

---------------------------------------------------------------------------------------------


insert into 表名 (字段,字段) select 字段 ,字段 from 表名

简单的多条数据压力测试


---------------------------------------------------------------------------------------------

删除数据库表中的重复数据


如果是查询的话,思路就是利用distict直接把不唯一的数据查询出来;

但是如果是永久性删除重复数据的话,这就得:


先用distict把数据库表里面的不唯一数据先查询出来,放进一个临时表里面;

然后直接把原表里面的数据全部删除;

最后把临时表里面的不唯一数据全部添加进原表里面,这样就达到删除数据库表中的重复数据。

 select distict * into 临时表名 from 原表名

 delect *from 原表名

 insert into 原表名  select * from 临时表名

 drop table 临时表名

---------------------------------------------------------------------------------------------


select replace('XX' , 'xx') from 表名


----------------------------------------------------------------------------------------------

select ename ,datepart(year,hiredate) y,datepart(month,hiredate) m from emp

order by m,y


按照年和月去对职工排序,先优先对月去排序,再对年去排序,如果月相同,再对年排序


这个给datepart取别名的操作很重要,可以用与后面的函数调用

----------------------------------------------------------------------------------------------


select *from emp where sal>(select sal from emp where name='xxx')

查出工资大于名字为‘xxx’的员工信息

----------------------------------------------------------------------------------------------

select count(*),deptid from emp group by deptid having count(*)>1

查出部门成员大于1的部门,用having count(*)>1作为条件部分

-----------------------------------------------------------------------------------------------

select emp.ename,boss.ename from work emp,work boss where emp.bossid=boss.eid


查询出员工信息及其上级的信息


在这基础上扩展,查出进入公司的时间比其上司晚的员工信息:

select emp.ename,emp.hiredate,boss.ename ,boss.hiredate from work emp,work boss where emp.bossid=boss.eid

and emp.hiredate>boss.hiredate

----------------------------------------------------------------------------------------------

列出部门信息和部门的员工信息,同时也把没有员工的部门信息列出来

select dep.dname,emp.ename from department dep,emp where dep.depid=emp.eid

以上只能够查询出部门信息和部门的员工信息。

但是那些没有员工的部门信息没列出来。

这时候需要用到的是右外连接,就是以department表为主,右连接上emp表,

这样部门全部都能列出来,然后员工的话看具体情况显示,没有就显示‘NULL’值。

select dep.dname,emp.ename from department emp right  jion department dep on

emp.depid=dep.depid

如果是用左外连的话,那就是 emp left jion department

----------------------------------------------------------------------------------------------

select name ,salary from employee where salary >

(select max(salary) from employee where depid=2 )

查询出工资高于某个部门员工工资的员工信息

这边在()里面的sql语句使用max函数是必须的,因为>这个符号是不能与多条信息做比较的

。用max的话返回数据就是一条。


----------------------------------------------------------------------------------------------

select count(*) 总人数,avg(sal)平均工资,avg(datediff(year,hiredate,getdate()))平均服务年限,

deptno from emp group by depid


在SQL server里面给表起别名加不加as 都oK

相关文章
|
4天前
|
SQL 运维 程序员
一个功能丰富的SQL审核查询平台
一个功能丰富的SQL审核查询平台
|
11天前
|
SQL 数据处理 数据库
|
11天前
|
SQL 监控 供应链
|
11天前
|
SQL 存储 监控
|
11天前
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age > 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
21 0
|
11天前
|
SQL 关系型数据库 MySQL
|
13天前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
1月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
52 6
|
1天前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
|
20天前
|
测试技术 Python
python自动化测试中装饰器@ddt与@data源码深入解析
综上所述,使用 `@ddt`和 `@data`可以大大简化写作测试用例的过程,让我们能专注于测试逻辑的本身,而无需编写重复的测试方法。通过讲解了 `@ddt`和 `@data`源码的关键部分,我们可以更深入地理解其背后的工作原理。
18 1

热门文章

最新文章

推荐镜像

更多