SQL查询语句详解(一)

一、基本语法

Select  select_list
From  table_name
Where  condition_expression
Group by  group_columns   
having condition_expression
Order by sort_columns

二、查询实例

  • 查询所有字段
  • 查询指定字段
  • 用DISTINCT去除结果中的重复行
  • 查询指定数据
  • 带有in关键字的查询
  • 带between and的范围查询
  • 带like的字符匹配查询
    表1:学生
  • 结构
  • 数据

    表2:商品表1
  • 结构:
  • 数据:

    表3:商品表2
  • 结构:
  • 数据

    表4:教师
  • 结构:
  • 数据

  • 数据分析需求

1)查询所有学生的详细信息

select * from 学生;

2)查询学生的学生号,姓名与专业

select 学生号,姓名,专业 from 学生;

3)从商品表1中查询出每一种商品的价值

select 商品代号,单价,数量,单价*数量 as 总价 from 商品表1;

4)从商品表1中查询每种商品的分类名 去除重复项

select distinct 分类名 from 商品表1;

5)从商品表1中查询出分类名为"电视机"的所有商品

select * from 商品表1 where 分类名 ='电视机';

6)从商品表1中查询出单价低于2000元的每一种商品代号,分类名和单价

select 商品代号,分类名,单价 from `商品表1`  where 单价<2000;

7)从商品表2中查询出产地为北京、山西、无锡的所有商品

select * from 商品表2 where 产地='北京' or 产地='山西' or 产地='无锡';
select * from 商品表2 where 产地 in('北京','山西','无锡');

8)从商品表1中查询出商品代号以字符串"dsj"开头的所有商品 (考察模糊查询like以及通配符)

select * from 商品表1 where 商品代号 like 'DSJ%';

9)从商品表1中查询单价在1000到2000之间的所有商品

select * from 商品表1 where 单价 between 1000 and 2000;

10)查询所有姓张的学生的详细信息

select * from 学生 where 姓名 like '张%';

11)从商品表1中查询出单价大于1500,同时数量大于等于10的商品

select * from 商品表1 where 单价>1500 and 数量>=10;

12)从教师表中查询联系电话为空的教师信息

select * from 教师 where 联系电话 is null;

13)从选课表中查询按课程号的升序,同一课程按成绩降序排列

select*from 选课 order by 课程号 asc, 课程号 desc;

14)从学生表中查询各个专业的人数

select 专业,count(*) as 人数 from 学生 group by 专业

15)从学生表中查询出专业的学生数多于1人的专业名及人数

select 专业,count(*) as 人数 from 学生 group by 专业 having count(*)>1
select 专业,count(*) as 人数 from 学生 group by 专业 having 人数>1

16)从选课表中查询成绩最高前三位

select * from 选课 order by 成绩 desc limit 3

17)查询各个专业男女人数各是多少

select 专业,性别,count(*) as 人数 from 学生 group by 专业,性别

18)从商品表1中查询出所有商品的最大数量、最小数量、平均数量及数量总和

select sum(数量) from 商品表1;
select max(数量) from 商品表1;
select min(数量) from 商品表1;
select avg(数量) from 商品表1;

19)从商品表1中查询出分类名为“电视机”的商品的种数、最高价、最低价及平均价

Select sum(数量) from 商品表1 where 分类名='电视机';
Select avg(数量) from 商品表1 where 分类名='电视机';
Select min(数量) from 商品表1 where 分类名='电视机';
Select max(数量) from 商品表1 where 分类名='电视机';

20)查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌

20)查询出产地为南京或无锡的所有商品的商品代号、分类名、产地和品牌

select * from 商品表1 inner join 商品表2 where 产地 in('南京','无锡');

select * from 商品表1 inner join 商品表2 where 产地='南京' or 产地='无锡';


员工表中含有佳字的

select * from 员工 where 姓名 like '%佳%';

员工表中含有佳字的两个子长度的员工信息

select * from 员工 where 姓名 like '_佳' or 姓名 like '佳_';

查询本公司有多少个部门

select distinct 部门 from 员工;

请列出家住北京市的生产制造部的家庭名单住址;

select 姓名,家庭住址 from 员工 where 部门='生产制造部' and 家庭住址 like '%北京市%';

请查询出生成制造部女性未婚员工的基本信息

select * from 员工 where 部门='生产制造部' and 性别=-1 and 婚姻状况=-1;

显示生产制造部员工姓名年龄 部门和目前薪资

select 姓名,year(now())-year(出生日期) as 年龄,部门,目前薪资 from 员工 where 部门='生产制造部';

查询出生产制造部中员工年龄大于40岁的员工

select 姓名,year(now())-year(出生日期) as 年龄,部门,目前薪资 from 员工 where 部门='生产制造部' and

year(now())-year(出生日期)>40;

查询入职日期超过三十年的老家伙

select 姓名,year(now())-year(雇佣日期) as 工龄,部门,目前薪资 from 员工 where 
year(now())-year(雇佣日期)>=30;
显示出订货明细表中每个订单的订单号码 产品编号和时间销售额

显示出订货明细表中每个订单的订单号码 产品编号和时间销售额

select 订单号码,产品编号,(单价*数量*(1-折扣)) as 实际销售额 from 订货明细;

查询已婚员工信息 显示 员工编号姓名性别显示出男或女 以及员工婚姻状况



SELECT
	员工编号,姓名,
CASE
		性别 
		WHEN - 1 THEN
		'女' 
		WHEN 0 THEN
		'男' ELSE '不详' 
	END 性别,
CASE 婚姻状况 
	WHEN - 1 THEN
	'未婚' 
	WHEN 0 THEN
	'已婚' ELSE '不详' 
END 婚姻状况
FROM
	员工;
	
SELECT
	员工编号,姓名,
CASE
		性别 
		WHEN - 1 THEN
		'女' 
		WHEN 0 THEN
		'男' ELSE '不详' 
	END 性别,
CASE 婚姻状况 
	WHEN - 1 THEN
	'未婚' 
	WHEN 0 THEN
	'已婚' ELSE '不详' 
END 婚姻状况
FROM
	员工 where CASE 婚姻状况 
	WHEN - 1 THEN
	'未婚' 
	WHEN 0 THEN
	'已婚' ELSE '不详' 
END='已婚';

更多推荐

SQL查询语句详解