在数据库操作时,查询功能是最基本的功能之一。在学习了韩顺平老师sql语句复杂查询之后,受益颇深。以下列举一些涉及单表和多表的基本查询语句例子,简单实用。由于本人是初学者,不足之处恳请大家斧正!

附:韩顺平sql语句复杂查询地址

http://v.youku.com/v_show/id_XODMxMDI2MTA0.html?spm=a2h0k.8191407.0.0&from=s1.8-1-1.2

--创建dept表
create table dept
(deptno int primary key,
dname nvarchar(50),
loc nvarchar(50)
)

select * from dept

--创建emp表
create table emp
(empno int primary key,
ename nvarchar(30),
job nvarchar(30),
mgr int,
hiredate datetime,
sal numeric(10,2),
comn numeric(10,2),
deptno int foreign key references dept(deptno))
--外键只能指向references主键,并且数据类型要一致

--查询语句

--1查询所有列  select *from 表名 where 条件
select *from emp where sal>2500

--2 查询指定列  select 字段1 ,字段2 from 表名where 条件
--查询smith的薪水 工作和员工标号
select ename ,sal, job, empno from emp where ename='smith'
select sal,job,deptno from emp where ename='smith'

--3如何取消重复行
--统计共有多少个部门
select distinct deptno from emp

--4使用算数表达式
--显示每个雇员的年工资+奖(列命名)
select ename ,sal*13+isnull(comn,0)年薪 from emp
select ename 姓名, 13*sal+isnull(comn,0) 年工资  from emp

--显示1982.1.1后入职的员工
select ename,hiredate from emp where hiredate>'1982-1-1' 
select  *from emp where hiredate>'1982-1-1'

--显示工资在2000~2500 之间的员工
select *from emp  where sal >2000 and sal <2500
select *from emp where sal between 2000 and 2500

--5如何使用like语句查询
--显示第一个字符为s的姓名和工资
select ename, sal from emp where ename like 's%'

--显示第三个字符为o的姓名和工资
select ename, sal from emp where ename like '__o%'

--6在where条件中使用in
--显示empno为123,234,800...的雇员情况
select * from emp where empno in(123,234,800)

--7使用is null
--显示没有上级的员工情况
select *from emp where mgr is null

--显示公司大于3500或者职位是经理 同时满足名字手写为j的员工
select *from emp where (sal>3500 or job='manager') and ename like'j%'

--8 order by 排序 (默认从低到高asc    从高到低desc)
--工资从高到低
select *from emp order by sal desc

--入职先后
select *from emp order by hiredate

--按照部门号升序而工资降序排列
select *from emp order by deptno ,sal desc

--9使用别名排序
select ename , sal*13+isnull(comn,0) 年薪 from emp order by '年薪' desc

select ename ,sal*13+isnull(comn,0) 年薪 from emp order by '年薪'

--10复杂查询

--1数据分组(max,min, avg,sum,count)
--最低工资和最高工资
select ename,sal from emp where sal=(select min(sal) from emp)
select ename,sal from emp where sal=(select max(sal) from emp)

--平均工资和工资总和
select avg(sal)平均工资,sum(sal)工资总和 from emp

--把高于平均工资的员工名字和工资显示出来
select ename,sal from emp where sal>(select avg(sal)from emp)

--统计员工个数
select count(*)员工个数 from emp

select count(*) from emp

--2
--显示每个部门的平均工资和最高工资
select deptno,avg(sal)平均工资, max(sal)最高工资 from emp group by deptno

select deptno, avg(sal),max(sal)from emp group by deptno

--显示每个部门每个岗位的平均工资和最低工资
select deptno,job,avg(sal)平均工资, min(sal)最高工资 from emp group by deptno,job order by deptno,job

select deptno, job,avg(sal),min(sal)from emp group by deptno,job order by deptno,job

--多表查询
 --1不同表
 --查询所有部门标号为10的员工信息
select *from emp ,dept where dept.deptno=10and emp.deptno=dept.deptno

--查询所有部门sales的员工信息
select *from emp ,dept where dname='sales'and emp.deptno=dept.deptno

--查询所有部门标号为10的部门名称,员工名称,工资
 select d.dname,e.ename,sal from emp e,dept d where e.deptno=10 and e.deptno=d.deptno
 --显示雇员名,雇员工资,及所在部门的名字 ,并按部门排序
 select e.ename,sal,d.dname from emp e ,dept d where e.deptno=d.deptno order by d.deptno

--2同一张表的自连接(看做两张相同的表,名称不同)
 --显示某个员工的名字和他上级领导的姓名,比如 “Ford”的上级
 select w.ename 雇员名,l.ename 领导 from emp w ,emp l where w.mgr=l.empno order by l.ename

--子查询
 --1单行子查询
 --如何显示与smith同一个部门的所有员工
 select *from emp where deptno=(select deptno from emp where ename='smith')

--2多行子查询
 --如何显示与部门10的工作相同的员工名字,岗位,工资,部门号
 select ename,job,sal,deptno from emp where job in (select distinct job from emp where deptno=10 )and deptno=10

--3在from子句中使用子查询
 --显示高于部门平均工资的员工名称, 薪水, 部门平均工资,部门标号
 --分析
 --首先得出每个部门的员工平均工资
   select deptno ,avg(sal)from emp group by deptno
 --然后被上面结果作为一个临时表
 select tem.deptno,ename,sal,avgm from emp,( select deptno ,avg(sal) avgm from emp group by deptno) tem where emp.sal> tem.avgm

--4分页查询
 --显示第五个到第十个入职的雇员,按时间的先后顺序
 select top 5 * from emp where emp.empno not in(select top 5  empno from emp order by hiredate asc) order by hiredate asc

--*快速往数据库添加数据
 create table test (
id int identity(1,1) not null,
name varchar(20) not null,
 )
 insert into test (name) values ('tom')
 --接着循环以下一句语句数次
 insert into test(name) select name  from test

--分页,查询第60000-60010行记录
 select top 10 *from test where id not in(select top 60000 id from test)

--5如何删除一张表中的重复记录
 -- 首先创建一张有多条重复记录的表
 create table test2(
id int,
name varchar(20),
 )
 --数次重复以下一句语句
 insert into test2 values(1,'tom')
--删除方法
select distinct *  into temp from test2
delete from test2
insert into test2 select * from temp
drop table temp

--6左外联,右外联
--思考题:显示公司每个员工和他的上级的名字
--内连接:
select e.ename,m.ename from emp e,emp m where e.mgr=m.empno

--思考题:显示公司每个员工和他的上级名字,要求没有上级名字的人也要显示出来
select e.ename,w.ename from emp e left join emp w on e.mgr=w.empno
--左外联:指左边的表记录全部显示,如果没有匹配就用null填写
select e.ename,w.ename from emp w right join emp e on w.empno=e.mgr
--右外联:指右边的表记录全部显示,如果没有匹配就用null填写

SQL语句:查询语句及多表查询典型例子相关推荐

  1. server多笔记录拼接字符串 sql_第四章、SQL Server数据库查询大全(单表查询、多表连接查询、嵌套查询、关联子查询、拼sql字符串的查询、交叉查询)...

    4.1.查询的类型 declare @value as int set @value = 50 select  'age:'as age,2008 years,@valueas va --这种查询时跟 ...

  2. case when 子查询_Oracle数据库-单表查询

    本章涉及单张表中的查询语句,包含常用的条件查询.范围查询.模糊查询等,跨表查询后续将会介绍. 1.基本查询语句 格式:SELECT[DISTINCT] column_name,-|* FROM tab ...

  3. mysql多表联合查询事例_MySQL——多表查询详细介绍以及实例

    1.表与表之间的关系 一对一:用户表和身份信息表,用户表是主表 例如:男人表 .女人表create table man( mid int primary key auto_increment, mna ...

  4. mysql单表查询实例_MySQL简单查询详解-单表查询

    MySQL简单查询详解-单表查询 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询的执行路径 一条SQL查询语句的执行过程大致如下图所示: 1>.客户端和服务端通过my ...

  5. 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)

    对 3.2 数据查询-SELECT(单表查询.连接查询.嵌套查询.集合查询.多表查询)的转载与学习笔记: 0.前言 本篇文章是对<数据库系统概论>王珊老师主编的数据库查询SELECT部分做 ...

  6. 将联表查询简化为单表查询案例

    目录 1.将联表查询简化为单表查询案例 1.1 问题描述 1.2 优化过程 1.2.1 将联表查询修改为单表查询 1.2.2 利用覆盖索引避免回表 1.将联表查询简化为单表查询案例 1.1 问题描述 ...

  7. mysql数据库操作多表查询_MySQL数据库查询操作进阶——多表查询

    多表查询 在大部分情况下,我们用到的表都是彼此相关联的,所以我们会有相当大的需求用到跨表的查询,这个时候我们就需要将相关联的表连起来做多表查询. 多表查询分为连表查询和子查询,连表查询即将相关联的表连 ...

  8. mysql怎样查表的模式_mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】...

    1.mysql简单的查询:select 字段1,字段2... from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都是 ...

  9. MySQL讲义第 33 讲——select 查询之静态交叉表查询

    MySQL讲义第 33 讲--select 查询之静态交叉表查询 文章目录 MySQL讲义第 33 讲--select 查询之静态交叉表查询 一.数据准备 二.交叉表的形式 三.静态交叉表的实现 1. ...

  10. mysql语句中多表查询_6.MySql中的SQL语句(五):多表查询

    多表查询有如下几种: 合并结果集:UNION.UNION ALL 连接查询 内连接[INNER] JOINON 外连接OUTER JOIN ON 左外连接LEFT [OUTER] JOIN 右外连接R ...

最新文章

  1. 2022-2028年中国塑料导爆管行业市场调查研究及前瞻分析报告
  2. oracle账户锁定解决方法
  3. python 可视化监控平台_python可视化篇之流式数据监控的实现
  4. 傅奎:十年安全路,一颗好奇心
  5. java引用数据类型可以更改类型_java,基本数据类型和引用数据类型
  6. 如何设计一个良好的接口
  7. Gaussian LDA(高斯LDA)简介
  8. Setup linux 网卡故障,linux网络配置、测试及故障诊断方法和工具二
  9. js parseInt()和Number()区别
  10. C#中的 Stream
  11. 小编带着小白看springboot源码3
  12. linux curl 显示请求耗时和dns解析
  13. 计算理论基础 第2版 Harry R. Lewis 第1章
  14. 自我鉴定300字大专计算机应用,职高自我鉴定300字(共8篇) .docx
  15. 迅雷php源码,PHP生成迅雷、快车、旋风等软件的下载链接代码实例
  16. js原生后代选择器_js 后代选择器
  17. 半导体器件物理【11】载流子输运现象 —— 散射率Ρ、迁移率μ、电阻率ρ(电导率σ)、砷化镓
  18. SparkSQL join
  19. python爬虫—— 抓取今日头条的街拍的妹子图
  20. K神吹水系列之RPC

热门文章

  1. 聊一聊云电脑、云游戏以及阿里云的“无影”
  2. python直方图规定化_数字图像处理-空间域处理-直方图规定化
  3. vep文件如何转换mp4_VEP视频文件怎么转换成普通视频文件?
  4. NAR:蛋白功能层级注释数据库eggNOG5
  5. 【源码】基于粒子群算法的MPPT跟踪
  6. CNCF:Kubernetes 已“跨越鸿沟”,逆袭成为主流
  7. 采集侠的自动crontab脚本
  8. 在飞桨平台做图像分类-1 制作基于飞桨的数据集|CSDN创作打卡
  9. 单元测试(一)使用Junit进行单元测试
  10. Golang - Structs 包的使用