飞道的博客

MySQL练习题

282人阅读  评论(0)

创建数据库和表的SQL脚本


  
  1. -- -----------------------------------
  2. -- 创建db10库、emp表并插入记录
  3. -- -----------------------------------
  4. -- 删除db10库(如果存在)
  5. drop database if exists db10;
  6. -- 重新创建db10库
  7. create database db10 charset utf8;
  8. -- 选择db10库
  9. use db10;
  10. -- 删除员工表(如果存在)
  11. drop table if exists emp;
  12. -- 创建员工表
  13. create table emp(
  14. id int primary key auto_increment, -- 员工编号
  15. name varchar( 50), -- 员工姓名
  16. gender char( 1), -- 员工性别
  17. birthday date, -- 员工生日
  18. dept varchar( 50), -- 所属部门
  19. job varchar( 50), -- 所任职位
  20. sal double, -- 薪资
  21. bonus double -- 奖金
  22. );
  23. -- 往员工表中插入记录
  24. INSERT INTO `emp` VALUES ( null, '王海涛', '男', '1995-03-25', '培优部', '讲师', 1800, 400);
  25. INSERT INTO `emp` VALUES ( null, '齐雷', '男', '1994-04-06', '培优部', '讲师', 2500, 700);
  26. INSERT INTO `emp` VALUES ( null, '刘沛霞', '女', '1996-06-14', '培优部', '讲师', 1400, 400);
  27. INSERT INTO `emp` VALUES ( null, '陈子枢', '男', '1991-05-18', '培优部', '总监', 4500, 600);
  28. INSERT INTO `emp` VALUES ( null, '刘昱江', '男', '1993-11-18', '培优部', '讲师', 2600, 600);
  29. INSERT INTO `emp` VALUES ( null, '王克晶', '女', '1998-07-18', '就业部', '讲师', 3700, 700);
  30. INSERT INTO `emp` VALUES ( null, '苍老师', '男', '1995-08-18', '就业部', '总监', 4850, 500);
  31. INSERT INTO `emp` VALUES ( null, '范传奇', '男', '1999-09-18', '就业部', '讲师', 3200, 700);
  32. INSERT INTO `emp` VALUES ( null, '刘涛', '男', '1990-10-18', '就业部', '讲师', 2700, 500);
  33. INSERT INTO `emp` VALUES ( null, '韩少云', '男', '1980-12-18', NULL, 'CEO', 5000, null);
  34. INSERT INTO `emp` VALUES ( null, '董长春', '男', '1988-02-05', '培优部', '讲师', 3200, 300);
  35. INSERT INTO `emp` VALUES ( null, '张久军', '男', '1989-01-11', '培优部', '讲师', 4200, 500);
  36. -- -----------------------------------
  37. -- 创建db20库、dept表、emp表并插入记录
  38. -- -----------------------------------
  39. -- 删除db20库(如果存在)
  40. drop database if exists db20;
  41. -- 重新创建db20库
  42. create database db20 charset utf8;
  43. -- 选择db20库
  44. use db20;
  45. -- 删除部门表, 如果存在
  46. drop table if exists dept;
  47. -- 重新创建部门表, 要求id, name字段
  48. create table dept(
  49. id int primary key auto_increment, -- 部门编号
  50. name varchar( 20) -- 部门名称
  51. );
  52. -- 往部门表中插入记录
  53. insert into dept values( null, '财务部');
  54. insert into dept values( null, '人事部');
  55. insert into dept values( null, '科技部');
  56. insert into dept values( null, '销售部');
  57. -- 删除员工表, 如果存在
  58. drop table if exists emp;
  59. -- 创建员工表, 要求id, name, dept_id
  60. create table emp(
  61. id int primary key auto_increment, -- 员工编号
  62. name varchar( 20), -- 员工姓名
  63. dept_id int -- 部门编号
  64. -- ,foreign key(dept_id) references dept(id)
  65. );
  66. insert into emp values( null, '张三', 1);
  67. insert into emp values( null, '李四', 2);
  68. insert into emp values( null, '老王', 3);
  69. insert into emp values( null, '赵六', 4);
  70. insert into emp values( null, '刘能', 4);
  71. -- -----------------------------------
  72. -- 创建db30库、dept表、emp表并插入记录
  73. -- -----------------------------------
  74. -- 删除db30库(如果存在)
  75. drop database if exists db30;
  76. -- 重新创建db30库
  77. create database db30 charset utf8;
  78. -- 选择db30库
  79. use db30;
  80. -- 删除部门表, 如果存在
  81. drop table if exists dept;
  82. -- 重新创建部门表, 要求id, name字段
  83. create table dept(
  84. id int primary key auto_increment, -- 部门编号
  85. name varchar( 20) -- 部门名称
  86. );
  87. -- 往部门表中插入记录
  88. insert into dept values( null, '财务部');
  89. insert into dept values( null, '人事部');
  90. insert into dept values( null, '科技部');
  91. insert into dept values( null, '销售部');
  92. -- 删除员工表, 如果存在
  93. drop table if exists emp;
  94. -- 创建员工表(员工编号、员工姓名、所在部门编号)
  95. create table emp(
  96. id int primary key auto_increment, -- 员工编号
  97. name varchar( 20), -- 员工姓名
  98. dept_id int -- 部门编号
  99. );
  100. -- 往员工表中插入记录
  101. insert into emp values( null, '张三', 1);
  102. insert into emp values( null, '李四', 2);
  103. insert into emp values( null, '老王', 3);
  104. insert into emp values( null, '赵六', 5);
  105. -- -----------------------------------
  106. -- 创建db40库、dept表、emp表并插入记录
  107. -- -----------------------------------
  108. -- 删除db40库(如果存在)
  109. drop database if exists db40;
  110. -- 重新创建db40库
  111. create database db40 charset utf8;
  112. -- 选择db40库
  113. use db40;
  114. -- 创建部门表
  115. create table dept( -- 创建部门表
  116. id int primary key, -- 部门编号
  117. name varchar( 50), -- 部门名称
  118. loc varchar( 50) -- 部门位置
  119. );
  120. -- 创建员工表
  121. create table emp( -- 创建员工表
  122. id int primary key, -- 员工编号
  123. name varchar( 50), -- 员工姓名
  124. job varchar( 50), -- 职位
  125. topid int, -- 直属上级
  126. hdate date, -- 受雇日期
  127. sal int, -- 薪资
  128. bonus int, -- 奖金
  129. dept_id int, -- 所在部门编号
  130. foreign key(dept_id) references dept( id)
  131. );
  132. -- 往部门表中插入记录
  133. insert into dept values ( '10', '培优部', '北京');
  134. insert into dept values ( '20', '就业部', '上海');
  135. insert into dept values ( '30', '大数据部', '广州');
  136. insert into dept values ( '40', '销售部', '深圳');
  137. -- 往员工表中插入记录
  138. insert into emp values ( '1001', '王克晶', '办事员', '1007', '1990-12-17', '800', 500, '20');
  139. insert into emp values ( '1003', '齐雷', '分析员', '1011', '1991-02-20', '1900', '300', '10');
  140. insert into emp values ( '1005', '王海涛', '推销员', '1011', '1991-02-22', '2450', '600', '10');
  141. insert into emp values ( '1007', '刘苍松', '经理', '1017', '1991-04-02', '3675', 700, '20');
  142. insert into emp values ( '1009', '张慎政', '推销员', '1011', '1991-09-28', '1250', '1400', '10');
  143. insert into emp values ( '1011', '陈子枢', '经理', '1017', '1991-05-01', '3450', 400, '10');
  144. insert into emp values ( '1013', '张久军', '办事员', '1011', '1991-06-09', '1250', 800, '10');
  145. insert into emp values ( '1015', '程祖红', '分析员', '1007', '1997-04-19', '3000', 1000, '20');
  146. insert into emp values ( '1017', '韩少云', '董事长', null, '1991-11-17', '5000', null, null);
  147. insert into emp values ( '1019', '刘沛霞', '推销员', '1011', '1991-09-08', '1500', 500, '10');
  148. insert into emp values ( '1021', '范传奇', '办事员', '1007', '1997-05-23', '1100', 1000, '20');
  149. insert into emp values ( '1023', '赵栋', '经理', '1017', '1991-12-03', '950', null, '30');
  150. insert into emp values ( '1025', '朴乾', '分析员', '1023', '1991-12-03', '3000', 600, '30');
  151. insert into emp values ( '1027', '叶尚青', '办事员', '1023', '1992-01-23', '1300', 400, '30');
  152. -- ------------------- 执行完毕 -----------------------

基础查询 

15、查询emp表中的所有员工,显示姓名,薪资,奖金


  
  1. select name,sal, ifnull(bonus, 0) from emp;
  2. + --------+------+-----------------+
  3. | name | sal | ifnull(bonus,0) |
  4. + --------+------+-----------------+
  5. | 王海涛 | 1800 | 400 |
  6. | 齐雷 | 2500 | 700 |
  7. | 刘沛霞 | 1400 | 400 |
  8. | 陈子枢 | 4500 | 600 |
  9. | 刘昱江 | 2600 | 600 |
  10. | 王克晶 | 3700 | 700 |
  11. | 苍老师 | 4850 | 500 |
  12. | 范传奇 | 3200 | 700 |
  13. | 刘涛 | 2700 | 500 |
  14. | 韩少云 | 5000 | 0 |
  15. | 董长春 | 3200 | 300 |
  16. | 张久军 | 4200 | 500 |
  17. + --------+------+-----------------+

16、查询emp表中的所有部门和职位


  
  1. select distinct dept,job from emp;
  2. + --------+------+
  3. | dept | job |
  4. + --------+------+
  5. | 培优部 | 讲师 |
  6. | 培优部 | 总监 |
  7. | 就业部 | 讲师 |
  8. | 就业部 | 总监 |
  9. | NULL | CEO |
  10. + --------+------+

WHERE子句查询 

17、查询emp表中【薪资大于3000】的所有员工,显示员工姓名、薪资


  
  1. select name,sal from emp where sal> 3000;
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 陈子枢 | 4500 |
  6. | 王克晶 | 3700 |
  7. | 苍老师 | 4850 |
  8. | 范传奇 | 3200 |
  9. | 韩少云 | 5000 |
  10. | 董长春 | 3200 |
  11. | 张久军 | 4200 |
  12. + --------+------+

18、查询emp表中【总薪资(薪资+奖金)大于3500】的所有员工,显示员工姓名、总薪资


  
  1. select name, ifnull(bonus, 0)+sal 总薪资 from emp where ifnull(bonus, 0)+sal> 3500;
  2. + --------+--------+
  3. | name | 总薪资 |
  4. + --------+--------+
  5. | 陈子枢 | 5100 |
  6. | 王克晶 | 4400 |
  7. | 苍老师 | 5350 |
  8. | 范传奇 | 3900 |
  9. | 韩少云 | 5000 |
  10. | 张久军 | 4700 |
  11. + --------+--------+

19、查询emp表中【薪资在3000和4500之间】的员工,显示员工姓名和薪资


  
  1. select name, sal from emp where sal between 3000 and 4500;
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 陈子枢 | 4500 |
  6. | 王克晶 | 3700 |
  7. | 范传奇 | 3200 |
  8. | 董长春 | 3200 |
  9. | 张久军 | 4200 |
  10. + --------+------+

20、查询emp表中【薪资为 1400、1600、1800】的员工,显示员工姓名和薪资


  
  1. select name, sal from emp where sal in( 1400, 1600, 1800);
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 王海涛 | 1800 |
  6. | 刘沛霞 | 1400 |
  7. + --------+------+

21、 查询薪资不为1400、1600、1800的员工,显示员工姓名和薪资


  
  1. select name, sal from emp where sal not in( 1400, 1600, 1800);
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 齐雷 | 2500 |
  6. | 陈子枢 | 4500 |
  7. | 刘昱江 | 2600 |
  8. | 王克晶 | 3700 |
  9. | 苍老师 | 4850 |
  10. | 范传奇 | 3200 |
  11. | 刘涛 | 2700 |
  12. | 韩少云 | 5000 |
  13. | 董长春 | 3200 |
  14. | 张久军 | 4200 |
  15. + --------+------+

22、查询emp表中薪资大于4000和薪资小于2000的员工,显示员工姓名、薪资。


  
  1. select name, sal from emp where sal> 4000 or sal< 2000;
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 王海涛 | 1800 |
  6. | 刘沛霞 | 1400 |
  7. | 陈子枢 | 4500 |
  8. | 苍老师 | 4850 |
  9. | 韩少云 | 5000 |
  10. | 张久军 | 4200 |
  11. + --------+------+

23、查询emp表中薪资大于3000并且奖金小于600的员工,显示员工姓名、薪资、奖金。


  
  1. select name, sal, ifnull(bonus, 0) 奖金 from emp where sal> 3000 and ifnull(bonus, 0)< 600;
  2. + --------+------+------+
  3. | name | sal | 奖金 |
  4. + --------+------+------+
  5. | 苍老师 | 4850 | 500 |
  6. | 韩少云 | 5000 | 0 |
  7. | 董长春 | 3200 | 300 |
  8. | 张久军 | 4200 | 500 |
  9. + --------+------+------+

24、查询没有部门的员工(即部门列为null值)


  
  1. select name, ifnull(dept, '无') 部门 from emp where dept is null;
  2. + --------+------+
  3. | name | 部门 |
  4. + --------+------+
  5. | 韩少云 | 无 |
  6. + --------+------+

25、查询有部门的员工(即部门列不为null值)


  
  1. select name, ifnull(dept, '无') 部门 from emp where dept is not null;
  2. + --------+--------+
  3. | name | 部门 |
  4. + --------+--------+
  5. | 王海涛 | 培优部 |
  6. | 齐雷 | 培优部 |
  7. | 刘沛霞 | 培优部 |
  8. | 陈子枢 | 培优部 |
  9. | 刘昱江 | 培优部 |
  10. | 王克晶 | 就业部 |
  11. | 苍老师 | 就业部 |
  12. | 范传奇 | 就业部 |
  13. | 刘涛 | 就业部 |
  14. | 董长春 | 培优部 |
  15. | 张久军 | 培优部 |
  16. + --------+--------+

模糊查询

   %:是通配符,可以表示0个或多个任意字符
    _:是通配符,只能表示1个任意字符

26、查询emp表中姓名中以"刘"字开头的员工,显示员工姓名。


  
  1. select name from emp where name like '刘%';
  2. + --------+
  3. | name |
  4. + --------+
  5. | 刘沛霞 |
  6. | 刘昱江 |
  7. | 刘涛 |
  8. + --------+

27、列出emp表中姓名以'王'开头的员工,显示员工姓名 


  
  1. select name from emp where name like '王%';
  2. + --------+
  3. | name |
  4. + --------+
  5. | 王海涛 |
  6. | 王克晶 |
  7. + --------+

28、 列出emp表中姓名以'涛'结尾的员工,显示员工姓名


  
  1. select name from emp where name like '%涛';
  2. + --------+
  3. | name |
  4. + --------+
  5. | 王海涛 |
  6. | 刘涛 |
  7. + --------+

27、查询emp表中姓名中包含"涛"字的员工,显示员工姓名。


  
  1. select name from emp where name like '%涛%';
  2. + --------+
  3. | name |
  4. + --------+
  5. | 王海涛 |
  6. | 刘涛 |
  7. + --------+

28、查询emp表中姓名以"刘"开头,并且姓名为两个字的员工,显示员工姓名。


  
  1. select name from emp where name like '刘_';
  2. + ------+
  3. | name |
  4. + ------+
  5. | 刘涛 |
  6. + ------+

多行函数查询

多行函数也叫聚合函数(聚集函数),常见的多行函数有:
    (多行函数会默认过滤null值,即不统计null值)
        count(列名 | *):
            count(列名):表示统计当前列的值有多少个
            count(*):以行为单位,统计查询结果中有多少行记录

29、统计emp表中薪资大于3000的员工个数


  
  1. select count( name) 薪资大于 3000人数 from emp where sal> 3000;
  2. + ------------------+
  3. | 薪资大于3000人数 |
  4. + ------------------+
  5. | 7 |
  6. + ------------------+

30、 统计emp表中的所有的男员工的人数。


  
  1. select count( name)男员工数量 from emp where gender= '男';
  2. + ------------+
  3. | 男员工数量 |
  4. + ------------+
  5. | 10 |
  6. + ------------+

31、统计每个职位的人数, 显示职位和对应人数


  
  1. select job, count( name) 人数 from emp group by job;
  2. + ------+------+
  3. | job | 人数 |
  4. + ------+------+
  5. | CEO | 1 |
  6. | 总监 | 2 |
  7. | 讲师 | 9 |
  8. + ------+------+

 30、求emp表中的最高薪资


  
  1. select max(sal) 最高薪资 from emp;
  2. + ----------+
  3. | 最高薪资 |
  4. + ----------+
  5. | 5000 |
  6. + ----------+

31、统计emp表中所有员工的薪资总和(不包含奖金)


  
  1. select sum(sal) 薪资总和 from emp;
  2. + ----------+
  3. | 薪资总和 |
  4. + ----------+
  5. | 39650 |
  6. + ----------+

32、统计emp表员工的平均薪资(不包含奖金)


  
  1. select avg(sal) 平均薪资 from emp;
  2. + --------------------+
  3. | 平均薪资 |
  4. + --------------------+
  5. | 3304.1666666666665 |
  6. + --------------------+

33、统计emp表员工的平均总薪资(包含奖金)


  
  1. select avg(sal + ifnull(bonus, 0)) 平均薪资 from emp;
  2. + --------------------+
  3. | 平均薪资 |
  4. + --------------------+
  5. | 3795.8333333333335 |
  6. + --------------------+

 34、统计emp表中所有员工奖金的平均值


  
  1. select avg( ifnull(bonus, 0)) 平均奖金 from emp;
  2. + -------------------+
  3. | 平均奖金 |
  4. + -------------------+
  5. | 491.6666666666667 |
  6. + -------------------+

 35、按照员工年龄从小到大排序,显示姓名、出生年月、总薪资(薪资+奖金)


  
  1. select name,birthday ,sal+ ifnull(bonus, 0) 总薪资 from emp order by birthday desc;
  2. + --------+------------+--------+
  3. | name | birthday | 总薪资 |
  4. + --------+------------+--------+
  5. | 范传奇 | 1999-09-18 | 3900 |
  6. | 王克晶 | 1998-07-18 | 4400 |
  7. | 刘沛霞 | 1996-06-14 | 1800 |
  8. | 苍老师 | 1995-08-18 | 5350 |
  9. | 王海涛 | 1995-03-25 | 2200 |
  10. | 齐雷 | 1994-04-06 | 3200 |
  11. | 刘昱江 | 1993-11-18 | 3200 |
  12. | 陈子枢 | 1991-05-18 | 5100 |
  13. | 刘涛 | 1990-10-18 | 3200 |
  14. | 张久军 | 1989-01-11 | 4700 |
  15. | 董长春 | 1988-02-05 | 3500 |
  16. | 韩少云 | 1980-12-18 | 5000 |
  17. + --------+------------+--------+

36、 查询下个月过生日的所有员工,显示员工姓名和出生日期


  
  1. select name,birthday from emp where month(birthday)= month( curdate())+ 1;
  2. + --------+------------+
  3. | name | birthday |
  4. + --------+------------+
  5. | 陈子枢 | 1991-05-18 |
  6. + --------+------------+

37、 求1995年入职的员工信息


  
  1. select * from emp where year(birthday)= 1995;
  2. + ----+--------+--------+------------+--------+------+------+-------+
  3. | id | name | gender | birthday | dept | job | sal | bonus |
  4. + ----+--------+--------+------------+--------+------+------+-------+
  5. | 1 | 王海涛 | 男 | 1995-03-25 | 培优部 | 讲师 | 1800 | 400 |
  6. | 7 | 苍老师 | 男 | 1995-08-18 | 就业部 | 总监 | 4850 | 500 |
  7. + ----+--------+--------+------------+--------+------+------+-------+

 分组查询

语法:SELECT 列 | * FROM 表名 [WHERE子句] GROUP BY 列;

33、对emp表,按照部门对员工进行分组,查看分组后效果


  
  1. select ifnull(dept, '无') 部门, count(*) 人数 from emp group by dept;
  2. + --------+------+
  3. | 部门 | 人数 |
  4. + --------+------+
  5. | 无 | 1 |
  6. | 培优部 | 7 |
  7. | 就业部 | 4 |
  8. + --------+------+

34、对emp表按照职位进行分组,并统计每个职位的人数,显示职位和对应人数


  
  1. select job, count(job) 人数 from emp group by job;
  2. + ------+------+
  3. | job | 人数 |
  4. + ------+------+
  5. | CEO | 1 |
  6. | 总监 | 2 |
  7. | 讲师 | 9 |
  8. + ------+------+

35、对emp表按照部门进行分组,求每个部门的最高薪资(不包含奖金),显示部门名称和最高薪资


  
  1. select ifnull(dept, 'CEO') 部门, max(sal) 最高薪资 from emp group by dept;
  2. + --------+----------+
  3. | 部门 | 最高薪资 |
  4. + --------+----------+
  5. | CEO | 5000 |
  6. | 培优部 | 4500 |
  7. | 就业部 | 4850 |
  8. + --------+----------+

36、对emp表中所有员工的薪资进行升序(从低到高)排序,显示员工姓名、薪资。


  
  1. select name,sal from emp order by sal asc;
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 刘沛霞 | 1400 |
  6. | 王海涛 | 1800 |
  7. | 齐雷 | 2500 |
  8. | 刘昱江 | 2600 |
  9. | 刘涛 | 2700 |
  10. | 董长春 | 3200 |
  11. | 范传奇 | 3200 |
  12. | 王克晶 | 3700 |
  13. | 张久军 | 4200 |
  14. | 陈子枢 | 4500 |
  15. | 苍老师 | 4850 |
  16. | 韩少云 | 5000 |
  17. + --------+------+

37、对emp表中所有员工的奖金进行降序(从高到低)排序,显示员工姓名、奖金。


  
  1. select name, ifnull(bonus, 0) 奖金 from emp order by ifnull(bonus, 0) desc;
  2. + --------+------+
  3. | name | 奖金 |
  4. + --------+------+
  5. | 齐雷 | 700 |
  6. | 王克晶 | 700 |
  7. | 范传奇 | 700 |
  8. | 陈子枢 | 600 |
  9. | 刘昱江 | 600 |
  10. | 张久军 | 500 |
  11. | 刘涛 | 500 |
  12. | 苍老师 | 500 |
  13. | 刘沛霞 | 400 |
  14. | 王海涛 | 400 |
  15. | 董长春 | 300 |
  16. | 韩少云 | 0 |
  17. + --------+------+

分页查询 

在mysql中,通过limit进行分页查询,查询公式为: `limit (页码-1)*每页显示记录数, 每页显示记录数`

38、查询emp表中的所有记录,分页显示:每页显示3条记录,返回所有页的数据


  
  1. select * from emp limit 0, 3;
  2. + ----+--------+--------+------------+--------+------+------+-------+
  3. | id | name | gender | birthday | dept | job | sal | bonus |
  4. + ----+--------+--------+------------+--------+------+------+-------+
  5. | 1 | 王海涛 | 男 | 1995-03-25 | 培优部 | 讲师 | 1800 | 400 |
  6. | 2 | 齐雷 | 男 | 1994-04-06 | 培优部 | 讲师 | 2500 | 700 |
  7. | 3 | 刘沛霞 | 女 | 1996-06-14 | 培优部 | 讲师 | 1400 | 400 |
  8. + ----+--------+--------+------------+--------+------+------+-------+

39、求emp表中薪资最高的前3名员工的信息,显示姓名和薪资

       --根据薪资降序排序,每页显示3条,查询第一页就是薪资最高的前三名


  
  1. select name,sal from emp order by sal desc limit 0, 3;
  2. + --------+------+
  3. | name | sal |
  4. + --------+------+
  5. | 韩少云 | 5000 |
  6. | 苍老师 | 4850 |
  7. | 陈子枢 | 4500 |
  8. + --------+------+

其他函数


  
  1. curdate() -- 获取当前日期: 年月日
  2. curtime() -- 获取当前时间: 时分秒
  3. sysdate()/now() -- 获取当前日期+时间, 年月日 时分秒
  4. year('2020-8-10'): 返回日期中的年份, 2020
  5. month('2020-8-10'): 返回日期中的月份, 8
  6. day('2020-8-10'): 返回日期中的天数, 10
  7. hour('2020-8-10 12:34:56'): 返回时间中的小时, 12
  8. minute('2020-8-10 12:34:56'): 返回时间中的分钟数, 34
  9. second('2020-8-10 12:34:56'): 返回时间中的秒值, 56
  10. ------------------------------------------
  11. concat(s1,s2,...sn): 将 s1、s2、...sn 拼接在一起返回
  12. 例如: name('王海涛'),birthday('1995-03-25'),sal(2450)
  13. select concat('王海涛', '1995-03-25', 2450);
  14. concat_ws(x,s1,s2,...sn):
  15. 将 s1、s2、...sn 拼接在一起,并且每两个拼接时会通过x作为分隔符进行拼接,再返回
  16. select concat_ws(',' ,'王海涛', '1995-03-25', 2450);

40、查询emp表中所有【在1993和1995年之间出生】的员工,显示姓名、出生日期。


  
  1. select name,birthday from emp where year(birthday) between 1993 and 1995;
  2. + --------+------------+
  3. | name | birthday |
  4. + --------+------------+
  5. | 王海涛 | 1995-03-25 |
  6. | 齐雷 | 1994-04-06 |
  7. | 刘昱江 | 1993-11-18 |
  8. | 苍老师 | 1995-08-18 |
  9. + --------+------------+

41、查询emp表中本月过生日的所有员工


  
  1. select name, month(birthday) 出生月份 from emp where month(birthday)= month( curdate());
  2. + ------+----------+
  3. | name | 出生月份 |
  4. + ------+----------+
  5. | 齐雷 | 4 |
  6. + ------+----------+

42、查询emp表中员工的姓名和薪资(薪资格式为: xxx(元) )


  
  1. select name, concat(sal, '(元)') from emp;
  2. + --------+--------------------+
  3. | name | concat(sal,'(元)') |
  4. + --------+--------------------+
  5. | 王海涛 | 1800(元) |
  6. | 齐雷 | 2500(元) |
  7. | 刘沛霞 | 1400(元) |
  8. | 陈子枢 | 4500(元) |
  9. | 刘昱江 | 2600(元) |
  10. | 王克晶 | 3700(元) |
  11. | 苍老师 | 4850(元) |
  12. | 范传奇 | 3200(元) |
  13. | 刘涛 | 2700(元) |
  14. | 韩少云 | 5000(元) |
  15. | 董长春 | 3200(元) |
  16. | 张久军 | 4200(元) |
  17. + --------+--------------------+

43、查询emp表中员工的姓名和薪资(薪资格式为: xxx/元 )


  
  1. select name, concat(sal, '/元') from emp;
  2. + --------+-------------------+
  3. | name | concat(sal,'/元') |
  4. + --------+-------------------+
  5. | 王海涛 | 1800/元 |
  6. | 齐雷 | 2500/元 |
  7. | 刘沛霞 | 1400/元 |
  8. | 陈子枢 | 4500/元 |
  9. | 刘昱江 | 2600/元 |
  10. | 王克晶 | 3700/元 |
  11. | 苍老师 | 4850/元 |
  12. | 范传奇 | 3200/元 |
  13. | 刘涛 | 2700/元 |
  14. | 韩少云 | 5000/元 |
  15. | 董长春 | 3200/元 |
  16. | 张久军 | 4200/元 |
  17. + --------+-------------------+

多表查询

准备数据: 以下练习将使用db30库中的表及表记录,请先进入db30数据库!!!

44、

 

 

 

 

 

 

 

 

 

 

 

 

 

 


转载:https://blog.csdn.net/qq_37649504/article/details/115539131
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场