数据库的查询(结合YGGL.sql)
(如有错误,欢迎指正!)
1.select 语句查询
(1)查询employees表员工部门号和性别,要求消除重复行。
mysql> select distinct 员工部门号,性别 from employees;
+-----------------+--------+
| 员工部门号 | 性别 |
+-----------------+--------+
| 2 | 1 |
| 1 | 1 |
| 1 | 0 |
| 5 | 1 |
| 3 | 0 |
| 3 | 1 |
| 4 | 1 |
| 4 | 0 |
+-----------------+--------+
8 rows in set (0.03 sec)
(2)计算salary表每个雇员的实际收入(实际收入=收入-支出)。
mysql> select (收入-支出) as 实际收入 from salary;
+--------------------+
| 实际收入 |
+--------------------+
| 1977.7100524902344 |
| 1494.5899963378906 |
| 2662 |
| 2167.679931640625 |
| 2384.2298889160156 |
| 1880 |
| 2978.459991455078 |
| 1907.4300079345703 |
| 2119 |
| 2770.499954223633 |
| 2332.8999786376953 |
| 1958.14990234375 |
+--------------------+
12 rows in set (0.00 sec)
(3)查询employees表中员工的姓名和性别,要求sex值为1时,显示为‘男’,为0时显示为‘女’。
mysql> Select 姓名,
case
when 性别=1 then "男"
when 性别=0 then "女"
end as 性别
from employees;
+-----------+--------+
| 姓名 | 性别 |
+-----------+--------+
| 王林 | 男 |
| 伍容华 | 男 |
| 王向容 | 男 |
| 李丽 | 女 |
| 刘明 | 男 |
| 朱俊 | 男 |
| 钟敏 | 女 |
| 张石兵 | 男 |
| 林涛 | 男 |
| 李玉珉 | 男 |
| 叶凡 | 男 |
| 陈林琳 | 女 |
+-----------+--------+
12 rows in set (0.00 sec)
(4)查询employees表每个雇员的地址和电话,列标题要求显示为 address 和 telephone。
mysql> select 地址 as adress, 电话号码 as telephone from employees;
+--------------------+-----------+
| adress | telephone |
+--------------------+-----------+
| 中山路32-1-508 | 83355668 |
| 北京东路100-2 | 83321321 |
| 四牌楼10-0-108 | 83792361 |
| 中山东路102-2 | 83413301 |
| 虎距路100-2 | 83606608 |
| 牌楼巷5-3-106 | 84708817 |
| 中山路10-3-105 | 83346722 |
| 解放路34-1-203 | 84563418 |
| 中山北路24-35 | 83467336 |
| 热和路209-3 | 58765991 |
| 北京西路3-7-52 | 83308901 |
| 汉中路120-4-12 | 84468158 |
+--------------------+-----------+
12 rows in set (0.00 sec)
(5)计算salary表中员工月收入的平均数。
mysql> select avg(收入)as 月平均收入 from salary;
+-------------------+
| 月平均收入 |
+-------------------+
| 2375.566640218099 |
+-------------------+
1 row in set (0.00 sec)
(6)计算所有员工的总支出。
mysql> select sum(支出) as 总支出 from salary;
+--------------------+
| 总支出 |
+--------------------+
| 1874.1499786376953 |
+--------------------+
1 row in set (0.00 sec)
(7)显示女雇主的地址和电话。
mysql> select 姓名, 地址,电话号码 from employees where 性别=0;
+-----------+-------------------+--------------+
| 姓名 | 地址 | 电话号码 |
+-----------+-------------------+--------------+
| 李丽 | 中山东路102-2 | 83413301 |
| 钟敏 | 中山路10-3-105 | 83346722 |
| 陈林琳 | 汉中路120-4-12 | 84468158 |
+-----------+-------------------+--------------+
3 rows in set (0.00 sec)
(8)计算员工总数。
mysql> select count(*) from employees;
+----------+
| count(*) |
+----------+
| 12 |
+----------+
1 row in set (0.00 sec)
(9)显示员工的最高收入和最低收入。
mysql> Select max(收入),min(收入) from salary;
+------------------+--------------------+
| max(收入) | min(收入) |
+------------------+--------------------+
| 3259.97998046875 | 1582.6199951171875 |
+------------------+--------------------+
1 row in set (0.00 sec)
2.条件查询
(1)显示月收入高于2000元员工的员工号。
mysql> select 员工编号 from salary where 收入>2000;
+--------------+
| 员工编号 |
+--------------+
| 000001 |
| 020010 |
| 020018 |
| 102201 |
| 108991 |
| 210678 |
| 302566 |
| 308759 |
| 504209 |
+--------------+
9 rows in set (0.00 sec)
(2)查询1970年以后的员工的姓名和地址。
mysql> select 姓名,地址 from employees where 出生日期>"1970-1-1";
+-----------+--------------------+
| 姓名 | 地址 |
+-----------+--------------------+
| 伍容华 | 北京东路100-2 |
| 王向容 | 四牌楼10-0-108 |
| 刘明 | 虎距路100-2 |
| 钟敏 | 中山路10-3-105 |
| 张石兵 | 解放路34-1-203 |
| 林涛 | 中山北路24-35 |
| 叶凡 | 北京西路3-7-52 |
+-----------+--------------------+
7 rows in set (0.00 sec)
(3)显示工作年限三年以上(包含3年)、学历在本科以上(包含本科)的男性员工的信息。
mysql> select * from employees where 工作年限>=3 and (学历="本科" or 学历="硕士") and 性别 = 1;
+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+
| 员工编号 | 姓名 | 学历 | 出生日期 | 性别 | 工作年限 | 地址 | 电话号码 | 员工部门号 |
+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+
| 010008 | 伍容华 | 本科 | 1976-03-28 | 1 | 3 | 北京东路100-2 | 83321321 | 1 |
| 102201 | 刘明 | 本科 | 1972-10-18 | 1 | 3 | 虎距路100-2 | 83606608 | 5 |
| 302566 | 李玉珉 | 本科 | 1968-09-20 | 1 | 3 | 热和路209-3 | 58765991 | 4 |
+--------------+-----------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+
3 rows in set (0.00 sec)
(4)查找员工中倒数第二个数字为0的员工的姓名、地址和学历。
mysql> select 姓名,地址,学历 from employees where 员工编号 like "%0_";
+-----------+-------------------+--------+
| 姓名 | 地址 | 学历 |
+-----------+-------------------+--------+
| 王林 | 中山路32-1-508 | 大专 |
| 伍容华 | 北京东路100-2 | 本科 |
| 刘明 | 虎距路100-2 | 本科 |
| 朱俊 | 牌楼巷5-3-106 | 硕士 |
| 张石兵 | 解放路34-1-203 | 本科 |
| 陈林琳 | 汉中路120-4-12 | 大专 |
+-----------+-------------------+--------+
6 rows in set (0.00 sec)
(5)查询月收入在2000-3000元的员工。
mysql> select * from salary where 收入>=2000 and 收入<=3000;
+--------------+---------+--------+
| 员工编号 | 收入 | 支出 |
+--------------+---------+--------+
| 000001 | 2100.8 | 123.09 |
| 020010 | 2860 | 198 |
| 020018 | 2347.68 | 180 |
| 102201 | 2569.88 | 185.65 |
| 210678 | 2240 | 121 |
| 302566 | 2980.7 | 210.2 |
| 308759 | 2531.98 | 199.08 |
| 504209 | 2066.15 | 108 |
+--------------+---------+--------+
8 rows in set (0.00 sec)
3.多表查询
(1)查询王林的基本情况和所工作的部门名称。
mysql> select * from employees e,departments d where e.员工部门号=d.部门编号 and 姓名="王林";
+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+
| 员工编号 | 姓名 | 学历 | 出生日期 | 性别 | 工作年限 | 地址 | 电话号码 | 员工部门号 | 部门编号 | 部门名称 | 备注 |
+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+
| 000001 | 王林 | 大专 | 1966-01-23 | 1 | 8 | 中山路32-1-508 | 83355668 | 2 | 2 | 人力资源部 | NULL |
+--------------+--------+--------+--------------+--------+--------------+-------------------+--------------+-----------------+--------------+-----------------+--------+
1 row in set (0.00 sec)
(2)查询财务部、研发部、市场部的员工信息。(预习和学习子查询相关知识)
mysql> select * from employees e,departments d where e.员工部门号=d.部门编号 and (部门名称="财务部" or 部门名称="市场部" or 部门名称="研发部");
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+
| 员工编号 | 姓名 | 学历 | 出生日期 | 性别 | 工作年限 | 地址 | 电话号码 | 员工部门号 | 部门名称 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+
| 010008 | 伍容华 | 本科 | 1976-03-28 | 1 | 3 | 北京东路100-2 | 83321321 | 1 | 财务部 |
| 020010 | 王向容 | 硕士 | 1982-12-09 | 1 | 2 | 四牌楼10-0-108 | 83792361 | 1 | 财务部 |
| 020018 | 李丽 | 大专 | 1960-07-30 | 0 | 6 | 中山东路102-2 | 83413301 | 1 | 财务部 |
| 302566 | 李玉珉 | 本科 | 1968-09-20 | 1 | 3 | 热和路209-3 | 58765991 | 4 | 研发部 |
| 308759 | 叶凡 | 本科 | 1978-11-18 | 1 | 2 | 北京西路3-7-52 | 83308901 | 4 | 研发部 |
| 504209 | 陈林琳 | 大专 | 1969-09-03 | 0 | 5 | 汉中路120-4-12 | 84468158 | 4 | 研发部 |
| 102201 | 刘明 | 本科 | 1972-10-18 | 1 | 3 | 虎距路100-2 | 83606608 | 5 | 市场部 |
| 102208 | 朱俊 | 硕士 | 1965-09-28 | 1 | 2 | 牌楼巷5-3-106 | 84708817 | 5 | 市场部 |
| 111006 | 张石兵 | 本科 | 1974-10-01 | 1 | 1 | 解放路34-1-203 | 84563418 | 5 | 市场部 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+--------------+
9 rows in set (0.00 sec)
(3)查询每个雇员的基本情况和薪水情况。
(找到两种方法)
mysql> Select * from employees join salary using(员工编号);
mysql> Select * from employees e,salary s where e.员工编号=s.员工编号 ;
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+
| 员工编号 | 姓名 | 学历 | 出生日期 | 性别 | 工作年限 | 地址 | 电话号码 | 员工部门号 | 收入 | 支出 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+
| 000001 | 王林 | 大专 | 1966-01-23 | 1 | 8 | 中山路32-1-508 | 83355668 | 2 | 2100.8 | 123.09 |
| 010008 | 伍容华 | 本科 | 1976-03-28 | 1 | 3 | 北京东路100-2 | 83321321 | 1 | 1582.62 | 88.03 |
| 020010 | 王向容 | 硕士 | 1982-12-09 | 1 | 2 | 四牌楼10-0-108 | 83792361 | 1 | 2860 | 198 |
| 020018 | 李丽 | 大专 | 1960-07-30 | 0 | 6 | 中山东路102-2 | 83413301 | 1 | 2347.68 | 180 |
| 102201 | 刘明 | 本科 | 1972-10-18 | 1 | 3 | 虎距路100-2 | 83606608 | 5 | 2569.88 | 185.65 |
| 102208 | 朱俊 | 硕士 | 1965-09-28 | 1 | 2 | 牌楼巷5-3-106 | 84708817 | 5 | 1980 | 100 |
| 108991 | 钟敏 | 硕士 | 1979-08-10 | 0 | 4 | 中山路10-3-105 | 83346722 | 3 | 3259.98 | 281.52 |
| 111006 | 张石兵 | 本科 | 1974-10-01 | 1 | 1 | 解放路34-1-203 | 84563418 | 5 | 1987.01 | 79.58 |
| 210678 | 林涛 | 大专 | 1977-04-02 | 1 | 2 | 中山北路24-35 | 83467336 | 3 | 2240 | 121 |
| 302566 | 李玉珉 | 本科 | 1968-09-20 | 1 | 3 | 热和路209-3 | 58765991 | 4 | 2980.7 | 210.2 |
| 308759 | 叶凡 | 本科 | 1978-11-18 | 1 | 2 | 北京西路3-7-52 | 83308901 | 4 | 2531.98 | 199.08 |
| 504209 | 陈林琳 | 大专 | 1969-09-03 | 0 | 5 | 汉中路120-4-12 | 84468158 | 4 | 2066.15 | 108 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+---------+--------+
12 rows in set (0.01 sec)
(4)查询研发部在1970年以前的员工姓名和薪水情况。
mysql> select e.姓名,s.收入,s.支出
from employees e,salary s,departments d
where e.员工部门号=d.部门编号
and e.员工编号=s.员工编号
and d.部门名称="研发部"
and e.出生日期<"1970" ;
+-----------+---------+--------+
| 姓名 | 收入 | 支出 |
+-----------+---------+--------+
| 李玉珉 | 2980.7 | 210.2 |
| 陈林琳 | 2066.15 | 108 |
+-----------+---------+--------+
2 rows in set, 1 warning (0.00 sec)
(5)查询employees表中员工的姓名、住址和收入水平,要求2000元以下显示为‘低收入’,2000-3000显示为‘中等收入’,3000元以上显示为‘高收入’。
mysql> select 姓名,地址,
case
when 收入<2000 then "低收入"
when 收入>3000 then "高收入"
when 收入>2000 and 收入<3000 then "中等收入"
end as "收入等级"
from employees,salary
where employees.员工编号=salary.员工编号;
+-----------+--------------------+--------------+
| 姓名 | 地址 | 收入等级 |
+-----------+--------------------+--------------+
| 王林 | 中山路32-1-508 | 中等收入 |
| 伍容华 | 北京东路100-2 | 低收入 |
| 王向容 | 四牌楼10-0-108 | 中等收入 |
| 李丽 | 中山东路102-2 | 中等收入 |
| 刘明 | 虎距路100-2 | 中等收入 |
| 朱俊 | 牌楼巷5-3-106 | 低收入 |
| 钟敏 | 中山路10-3-105 | 高收入 |
| 张石兵 | 解放路34-1-203 | 低收入 |
| 林涛 | 中山北路24-35 | 中等收入 |
| 李玉珉 | 热和路209-3 | 中等收入 |
| 叶凡 | 北京西路3-7-52 | 中等收入 |
| 陈林琳 | 汉中路120-4-12 | 中等收入 |
+-----------+--------------------+--------------+
12 rows in set (0.00 sec)
4.分类汇总与排序
(1)按部门列出该部门的员工人数。
mysql> select d.部门名称, count(e.姓名) as "员工总人数"
from employees e,departments d
where e.员工部门号=d.部门编号 group by d.部门名称;
+-----------------+-----------------+
| 部门名称 | 员工总人数 |
+-----------------+-----------------+
| 人力资源部 | 1 |
| 市场部 | 3 |
| 研发部 | 3 |
| 经理办公室 | 2 |
| 财务部 | 3 |
+-----------------+-----------------+
5 rows in set (0.00 sec)
(2)分别统计男性员工和女性员工人数。
mysql> select count(*) as "人数",
case
when 性别=1 then "男"
when 性别=0 then "女"
end as 性别
from employees group by 性别;
+--------+--------+
| 人数 | 性别 |
+--------+--------+
| 3 | 女 |
| 9 | 男 |
+--------+--------+
2 rows in set, 1 warning (0.00 sec)
(3)查找雇员数超过2人的部门名称和员工数量。
mysql> select d.部门名称, count(e.姓名) as "员工总人数"
from employees e,departments d
where e.员工部门号=d.部门编号
group by d.部门名称
having count(*)>2 ;
+--------------+-----------------+
| 部门名称 | 员工总人数 |
+--------------+-----------------+
| 市场部 | 3 |
| 研发部 | 3 |
| 财务部 | 3 |
+--------------+-----------------+
3 rows in set (0.00 sec)
(4)按员工学历分组统计各种学历人数。
mysql> select 学历,count(*) as 人数
from employees
group by 学历;
+--------+--------+
| 学历 | 人数 |
+--------+--------+
| 大专 | 4 |
| 本科 | 5 |
| 硕士 | 3 |
+--------+--------+
3 rows in set (0.00 sec)
(5)将员工信息按出生日期从大到小排序。
mysql> select * from employees order by 出生日期;
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+
| 员工编号 | 姓名 | 学历 | 出生日期 | 性别 | 工作年限 | 地址 | 电话号码 | 员工部门号 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+
| 020018 | 李丽 | 大专 | 1960-07-30 | 0 | 6 | 中山东路102-2 | 83413301 | 1 |
| 102208 | 朱俊 | 硕士 | 1965-09-28 | 1 | 2 | 牌楼巷5-3-106 | 84708817 | 5 |
| 000001 | 王林 | 大专 | 1966-01-23 | 1 | 8 | 中山路32-1-508 | 83355668 | 2 |
| 302566 | 李玉珉 | 本科 | 1968-09-20 | 1 | 3 | 热和路209-3 | 58765991 | 4 |
| 504209 | 陈林琳 | 大专 | 1969-09-03 | 0 | 5 | 汉中路120-4-12 | 84468158 | 4 |
| 102201 | 刘明 | 本科 | 1972-10-18 | 1 | 3 | 虎距路100-2 | 83606608 | 5 |
| 111006 | 张石兵 | 本科 | 1974-10-01 | 1 | 1 | 解放路34-1-203 | 84563418 | 5 |
| 010008 | 伍容华 | 本科 | 1976-03-28 | 1 | 3 | 北京东路100-2 | 83321321 | 1 |
| 210678 | 林涛 | 大专 | 1977-04-02 | 1 | 2 | 中山北路24-35 | 83467336 | 3 |
| 308759 | 叶凡 | 本科 | 1978-11-18 | 1 | 2 | 北京西路3-7-52 | 83308901 | 4 |
| 108991 | 钟敏 | 硕士 | 1979-08-10 | 0 | 4 | 中山路10-3-105 | 83346722 | 3 |
| 020010 | 王向容 | 硕士 | 1982-12-09 | 1 | 2 | 四牌楼10-0-108 | 83792361 | 1 |
+--------------+-----------+--------+--------------+--------+--------------+--------------------+--------------+-----------------+
12 rows in set (0.01 sec)
数据库的查询(结合YGGL.sql)的更多相关文章
- 提高数据库的查询速率及其sql语句的优化问题
在一个千万级的数据库查寻中,如何提高查询效率? 1)数据库设计方面: a.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. b.应尽量避免在 ...
- 数据库基本查询语句(SQL常用增删改查语句 简单复习 mark)
SQL常用增删改查语句 1增 1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) ...
- 提高查询速度:SQL Server数据库优化方案
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- SQL Server数据库————连接查询和分组查询
SQL Server数据库————连接查询和分组查询 分组查询 select 列from <表名> where …… group by 列 注意:跟order by一样group ...
- 基于SQL和PYTHON的数据库数据查询select语句
#xiaodeng#python3#基于SQL和PYTHON的数据库数据查询语句import pymysql #1.基本用法cur.execute("select * from biao&q ...
- SQL Server数据库 优化查询速度
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- 用 SQL 对关系型数据库进行查询
前面几节中,我们已经掌握了如何向 SQLite 数据库中写入数据.这一节,我们将学习如何根据需求对数据库进行查询,进而从中获取数据.接下来的例子中会使用 data/datasets.sqlite(之前 ...
- 从数据库中查询所有表及所有字段的SQL语句
从数据库中查询所有表及所有字段的SQL语句 由于一个小项目的需要,近日完成一个从数据库中查询所有表及所有字段的方法,其实用两条SQL语句就可以完成. Sql Server版:列出当前DB中所有表:se ...
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决(转载)
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...
- 浅谈数据库优化方案--表和SQL
1.数据类型的选择 1.字段最好设置为非空.若字段为char(8),即便是NULL也会现有8个字符的空间. 2.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能, ...
随机推荐
- PyQt学习随笔:Model/View架构中的Delegate(委托)
不同于MVC模式,Model/View设计并不包含用于处理与用户交互的完全独立的部件, 没有将用户交互部分完全分离.一般地,视图负责把模型数据显示给用户,以及处理用户的输入.但是,对于某些特殊要求(比 ...
- FFmpeg在Android Studio中断点调试
一般情况下在Android平台使用FFmpeg为动态库或静态库的形式,只能通过设置FFmpeg日志回调来看一些FFmpeg输出的日志,有时需要debug来查看FFmpeg内部执行过程,本文记录一下在A ...
- Monkey的使用
1.进入adb shell 环境 在Windows环境下进入DOS界面,输入adb shell 注意:adb shell服务使用的端口是5037,如果此端口被其他进程占用时,将不能正常启动adb sh ...
- RedHat-Linux操作指令第1篇
不同的linux系统切换方式会稍有一点差别 从图形界面切换到字符界面:Alt+F(1-8) 或者 Alt+Ctrl+Shift+F(1-8) 从字符界面切换回图形界面:Alt+F7 字符界面启动到图形 ...
- PHP代码审计分段讲解(10)
26 unserialize()序列化 <!-- 题目:http://web.jarvisoj.com:32768 --> <!-- index.php --> <?ph ...
- 解析php sprintf函数漏洞
php sprintf函数漏洞 0x01 了解sprintf()函数 1,sprintf(),函数是php中的函数 2,作用是将格式化字符串写入变量中 3,函数形式为sprintf(format,ar ...
- pytorch实战(二)hw2——预测收入是否高于50000,分类问题
代码和ppt: https://github.com/Iallen520/lhy_DL_Hw 遇到的一些细节问题: 1. X_train文件不带后缀名csv,所以不是规范的csv文件,不能直接用pd. ...
- 微信小程序template和组件
template主要是展示,主要是在调用的页面中定义.用import方式引入,然后去使用,通常是单独建立一个文件夹 去管理,文件夹有两个文件wxml和wxss,wxml中 可以定义多个template ...
- 操作系统精髓与设计原理(九)——I/O管理和磁盘调度
文章目录 I/O设备 I/O功能组织 直接存储器访问 操作系统设计问题 设计目标 IO功能的逻辑结构 I/O缓冲 单缓冲 双缓冲 循环缓冲 缓冲的作用 磁盘调度 磁盘性能参数 磁盘调度策略 先进先出 ...
- Python使用requests发送请求
Python使用第三方包requests发送请求,实现接口自动化 发送请求分三步: 1.组装请求:包括请求地址.请求头header.cookies.请求数据等 2.发送请求,获取响应:支持get.po ...