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查询语句详解
发布评论