数据库基础SQL知识面试题二

                                作者:尹正杰 

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.选课系统SQL语法练习

  1. course数据库中有以下四张表:
  2. students表(学生表):
  3.     sid整型自增主键,sname字符串64位,gender字符串12位,dept_id整型并外键到dept表的id字段。
  4.  
  5. dept表(系表):
  6.     id整型自增主键,dept_name字符串64位。
  7.  
  8. course表(课程表):
  9.     id整型自增字段主键,course_name字符串64位,teacher_id整型外键到teacher表的id字段。
  10.  
  11. teacher表(老师表):
  12.     id整型自增字段主键,name字符串64位,dept_id整型外键到dept表的id字段。
  13.  
  14. score表(选课成绩表):
  15. sid整型自增主键,course_id整型,score整型。
  16.  
  17. 各表的预置数据如下所示:
  18. students表:
  19.   (,’Jason Yin’,,),(,’Andy’,,),(,’Bob’,,),(,’Ruth’,,),(,’Mike’,,),(,’John’, ,),(,’Cindy’,,),(,’Susan’,,)
  20.  
  21. dept表:
  22.   (,’Education’),(,’Computer Science’),(,’Mathematics’)
  23.  
  24. course表:
  25.   (,‘math’,),(,’english’,),(,’chinese’,),(,’history’,),(,’biology’,)
  26.  
  27. teacher表:
  28.   (,’Zhang san’,),(,’Li si’,),(,’Wang wu’,),(,’Liu liu’,),(,’Ding qi’,)
  29.  
  30. score表:
  31.   (,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(, ,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,)

1>.请根据上述的信息创建出相应的表和插入预置数据

  1. mysql> CREATE DATABASE course CHARACTER SET = utf8;
  2. Query OK, row affected, warning (0.00 sec)
  3.  
  4. mysql>
  5. mysql> USE course;
  6. Database changed
  7. mysql>
  8. mysql> SELECT DATABASE();
  9. +------------+
  10. | DATABASE() |
  11. +------------+
  12. | course |
  13. +------------+
  14. row in set (0.00 sec)
  15.  
  16. mysql>
  17. mysql> CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,demt_name VARCHAR());
  18. Query OK, rows affected (0.01 sec)
  19.  
  20. mysql>
  21. mysql> CREATE TABLE students(
  22. -> sid INT PRIMARY KEY AUTO_INCREMENT,
  23. -> sname VARCHAR(),
  24. -> gender VARCHAR(),
  25. -> dept_id INT NOT NULL,
  26. -> CONSTRAINT student_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
  27. -> );
  28. Query OK, rows affected (0.02 sec)
  29.  
  30. mysql>
  31. mysql>
  32. mysql> CREATE TABLE teacher(
  33. -> id INT PRIMARY KEY AUTO_INCREMENT,
  34. -> name VARCHAR(),
  35. -> dept_id INT NOT NULL,
  36. -> CONSTRAINT teacher_dept FOREIGN KEY(dept_id) REFERENCES dept(id)
  37. -> );
  38. Query OK, rows affected (0.01 sec)
  39.  
  40. mysql>
  41. mysql> CREATE TABLE course(
  42. -> id INT PRIMARY KEY AUTO_INCREMENT,
  43. -> course_name VARCHAR(),
  44. -> teacher_id INT,
  45. -> CONSTRAINT course_teacher FOREIGN KEY(teacher_id) REFERENCES teacher(id)
  46. -> );
  47. Query OK, rows affected (0.01 sec)
  48.  
  49. mysql>
  50. mysql> CREATE TABLE score(sid INT,course_id INT,score INT,PRIMARY KEY(sid,course_id));
  51. Query OK, rows affected (0.01 sec)
  52.  
  53. mysql>

创建数据库与对应的表结构

  1. mysql> INSERT INTO dept VALUES(,'Education'),(,'Computer Science'),(,'Mathematics');
  2. Query OK, rows affected (0.01 sec)
  3. Records: Duplicates: Warnings:
  4.  
  5. mysql>
  6. mysql> INSERT INTO teacher VALUES(,'Zhang san',),(,'Li si',),(,'Wang wu',),(,'Liu liu',),(,'Ding qi',);
  7. Query OK, rows affected (0.00 sec)
  8. Records: Duplicates: Warnings:
  9.  
  10. mysql>
  11. mysql> INSERT INTO students VALUES(,'Jason Yin',,),(,'Andy',,),(,'Bob',,),(,'Ruth',,),(,'Mike',,),(,'John',,),(,'Cindy',,),(,'Susan',,);
  12. Query OK, rows affected (0.00 sec)
  13. Records: Duplicates: Warnings:
  14.  
  15. mysql>
  16. mysql> INSERT INTO course VALUES(,'math',),(,'english',),(,'chinese',),(,'history',),(,'biology',);
  17. Query OK, rows affected (0.00 sec)
  18. Records: Duplicates: Warnings:
  19.  
  20. mysql>
  21. mysql> INSERT INTO score VALUES(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,),(,,);
  22. Query OK, rows affected (0.01 sec)
  23. Records: Duplicates: Warnings:
  24.  
  25. mysql>
  26. mysql>

插入预置数据

2>.查看所有英语成绩超过数学成绩的学生的学号和姓名

  1. mysql> SELECT aa.sid,aa.sname FROM (SELECT a1.sid,sname,score FROM students a1 INNER JOIN score b1 ON a1.sid=b1.sid WHERE course_id=) aa INNER JOIN (SELECT a2.sid,sname, score FROM students a2 INNER JOIN score b2 ON a2.sid=b2.sid WHERE course_id=) bb ON aa.sid=bb.sid WHERE aa.score>bb.score;
  2. +-----+-----------+
  3. | sid | sname |
  4. +-----+-----------+
  5. | | Jason Yin |
  6. | | Bob |
  7. | | Cindy |
  8. +-----+-----------+
  9. rows in set (0.00 sec)
  10.  
  11. mysql>
  12. mysql>

mysql> SELECT aa.sid,aa.sname FROM (SELECT a1.sid,sname,score FROM students a1 INNER JOIN score b1 ON a1.sid=b1.sid WHERE course_id=2) aa INNER JOIN (SELECT a2.sid,sname, score FROM students a2 INNER JOIN score b2 ON a2.sid=b2.sid WHERE course_id=1) bb ON aa.sid=bb.sid WHERE aa.score>bb.score;

3>.查看平均成绩大于等于60的所有学生的姓名和平均成绩

  1. mysql> SELECT a.sid,a.sname,AVG(b.score) FROM students a INNER JOIN score b ON a.sid=b.sid GROUP BY a.sid,a.sname HAVING AVG(b.score)>=;
  2. +-----+-----------+--------------+
  3. | sid | sname | AVG(b.score) |
  4. +-----+-----------+--------------+
  5. | | Jason Yin | 76.0000 |
  6. | | Andy | 78.0000 |
  7. | | Bob | 79.8000 |
  8. | | Ruth | 72.5000 |
  9. | | Mike | 82.3333 |
  10. | | John | 73.0000 |
  11. | | Cindy | 64.2000 |
  12. | | Susan | 94.0000 |
  13. +-----+-----------+--------------+
  14. rows in set (0.00 sec)
  15.  
  16. mysql>
  17. mysql>

mysql> SELECT a.sid,a.sname,AVG(b.score) FROM students a INNER JOIN score b ON a.sid=b.sid GROUP BY a.sid,a.sname HAVING AVG(b.score)>=60;

4>.查询所有同学的学号,姓名,选课数和总成绩

  1. mysql> SELECT a.sid,a.sname,COUNT(*),SUM(score) FROM students a INNER JOIN score b ON a.sid=b.sid GROUP BY a.sid,a.sname;
  2. +-----+-----------+----------+------------+
  3. | sid | sname | COUNT(*) | SUM(score) |
  4. +-----+-----------+----------+------------+
  5. | | Jason Yin | | |
  6. | | Andy | | |
  7. | | Bob | | |
  8. | | Ruth | | |
  9. | | Mike | | |
  10. | | John | | |
  11. | | Cindy | | |
  12. | | Susan | | |
  13. +-----+-----------+----------+------------+
  14. rows in set (0.00 sec)
  15.  
  16. mysql>
  17. mysql>

mysql> SELECT a.sid,a.sname,COUNT(*),SUM(score) FROM students a INNER JOIN score b ON a.sid=b.sid GROUP BY a.sid,a.sname;

5>.查询姓zhang的老师的个数

  1. mysql> SELECT count(*) FROM teacher WHERE name LIKE 'zhang%';
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | |
  6. +----------+
  7. row in set (0.00 sec)
  8.  
  9. mysql>
  10. mysql>

mysql> SELECT count(*) FROM teacher WHERE name LIKE 'zhang%';

6>.查询没学过zhangsan老师课程的学生的学号和姓名

  1. mysql> SELECT sid,sname FROM students WHERE Sid NOT IN (SELECT b.sid FROM course a INNER JOIN score b ON a.id=b.course_id INNER JOIN teacher c ON a.teacher_id=c.id WHERE c.name='Zhang san');
  2. +-----+-----------+
  3. | sid | sname |
  4. +-----+-----------+
  5. | | Jason Yin |
  6. +-----+-----------+
  7. row in set (0.00 sec)
  8.  
  9. mysql>

mysql> SELECT sid,sname FROM students WHERE Sid NOT IN (SELECT b.sid FROM course a INNER JOIN score b ON a.id=b.course_id INNER JOIN teacher c ON a.teacher_id=c.id WHERE c.name='Zhang san');

7>.查询既学过英语也学过语文的学生的学号和姓名

  1. mysql> SELECT a.sid,sname,count(*) FROM students a INNER JOIN score b ON a.sid=b.sid INNER JOIN course c ON b.course_id=c.id AND c.course_name in ('english', 'chinese') GROUP BY Sid,sname HAVING COUNT(*)>=;
  2. +-----+-----------+----------+
  3. | sid | sname | count(*) |
  4. +-----+-----------+----------+
  5. | | Jason Yin | |
  6. | | Andy | |
  7. | | Bob | |
  8. | | Cindy | |
  9. +-----+-----------+----------+
  10. rows in set (0.00 sec)
  11.  
  12. mysql>

mysql> SELECT a.sid,sname,count(*) FROM students a INNER JOIN score b ON a.sid=b.sid INNER JOIN course c ON b.course_id=c.id AND c.course_name in ('english', 'chinese') GROUP BY Sid,sname HAVING COUNT(*)>=2;

8>.查询有学生的单科成绩小于60的姓名和课程名称

  1. mysql>
  2. mysql> SELECT a.sname,c.course_name FROM students a INNER JOIN score b ON a.sid=b.sid INNER JOIN course c ON b.course_id=c.id WHERE b.score<;
  3. +-----------+-------------+
  4. | sname | course_name |
  5. +-----------+-------------+
  6. | Jason Yin | biology |
  7. | Bob | math |
  8. | John | english |
  9. | Cindy | math |
  10. +-----------+-------------+
  11. rows in set (0.01 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT a.sname,c.course_name FROM students a INNER JOIN score b ON a.sid=b.sid INNER JOIN course c ON b.course_id=c.id WHERE b.score<60;

9>.按平均成绩从高到低显示所有学生的姓名和语文,数学,英语 三科成绩

  1. mysql> SELECT a.sid,AVG(score) score_avg,SUM(CASE WHEN b.course_name='chinese' THEN a.score ELSE END) a1,SUM(CASE WHEN b.course_name='math' THEN a.score ELSE END) a2,SUM(CASE WHEN b.course_name='English' THEN a.score ELSE END) a3 FROM score a INNER JOIN course b ON a.course_id=b.id GROUP BY a.sid;
  2. +-----+-----------+------+------+------+
  3. | sid | score_avg | a1 | a2 | a3 |
  4. +-----+-----------+------+------+------+
  5. | | 76.0000 | | | |
  6. | | 78.0000 | | | |
  7. | | 79.8000 | | | |
  8. | | 72.5000 | | | |
  9. | | 82.3333 | | | |
  10. | | 73.0000 | | | |
  11. | | 64.2000 | | | |
  12. | | 94.0000 | | | |
  13. +-----+-----------+------+------+------+
  14. rows in set (0.00 sec)
  15.  
  16. mysql>

mysql> SELECT a.sid,AVG(score) score_avg,SUM(CASE WHEN b.course_name='chinese' THEN a.score ELSE 0 END) a1,SUM(CASE WHEN b.course_name='math' THEN a.score ELSE 0 END) a2,SUM(CASE WHEN b.course_name='English' THEN a.score ELSE 0 END) a3 FROM score a INNER JOIN course b ON a.course_id=b.id GROUP BY a.sid;

10>.查询各科成绩中的最高分和最低分

  1. mysql> SELECT course_id,MIN(score),MAX(score) FROM score GROUP BY course_id;
  2. +-----------+------------+------------+
  3. | course_id | MIN(score) | MAX(score) |
  4. +-----------+------------+------------+
  5. | | | |
  6. | | | |
  7. | | | |
  8. | | | |
  9. | | | |
  10. +-----------+------------+------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT course_id,MIN(score),MAX(score) FROM score GROUP BY course_id;

11>.计算各科平均成绩和及格率百分比

  1. mysql> SELECT course_id,AVG(score),SUM(CASE WHEN score>= THEN ELSE END)/COUNT(*)* FROM score GROUP BY course_id;
  2. +-----------+------------+---------------------------------------------------------+
  3. | course_id | AVG(score) | SUM(CASE WHEN score>= THEN ELSE END)/COUNT(*)* |
  4. +-----------+------------+---------------------------------------------------------+
  5. | | 63.5000 | 50.0000 |
  6. | | 77.2000 | 80.0000 |
  7. | | 77.5000 | 100.0000 |
  8. | | 76.6000 | 80.0000 |
  9. | | 82.0000 | 100.0000 |
  10. +-----------+------------+---------------------------------------------------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT course_id,AVG(score),SUM(CASE WHEN score>=60 THEN 1 ELSE 0 END)/COUNT(*)*100 FROM score GROUP BY course_id;

12>.查询不同老师所教不同课程平均分从高到低

  1. mysql> SELECT c.name,b.course_name,AVG(score) FROM score a INNER JOIN course b ON a.course_id=b.id INNER JOIN teacher c ON b.teacher_id=c.id GROUP BY c.name,b.course_name ORDER BY AVG(score) DESC;
  2. +-----------+-------------+------------+
  3. | name | course_name | AVG(score) |
  4. +-----------+-------------+------------+
  5. | Zhang san | history | 82.0000 |
  6. | Liu liu | chinese | 77.5000 |
  7. | Li si | english | 77.2000 |
  8. | Ding qi | biology | 76.6000 |
  9. | Wang wu | math | 63.5000 |
  10. +-----------+-------------+------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>

mysql> SELECT c.name,b.course_name,AVG(score) FROM score a INNER JOIN course b ON a.course_id=b.id INNER JOIN teacher c ON b.teacher_id=c.id GROUP BY c.name,b.course_name ORDER BY AVG(score) DESC;

13>.查询英语和数学课程成绩排名第5到第10位的学生姓名和成绩

  1. mysql> SELECT c.sname,a.score FROM score a INNER JOIN course b ON a.course_id=b.id INNER JOIN students c ON a.sid=c.sid WHERE b.course_name='English' ORDER BY a.score LIMIT ,;
  2. +-------+-------+
  3. | sname | score |
  4. +-------+-------+
  5. | Bob | |
  6. +-------+-------+
  7. row in set (0.00 sec)
  8.  
  9. mysql>
  10. mysql>

mysql> SELECT c.sname,a.score FROM score a INNER JOIN course b ON a.course_id=b.id INNER JOIN students c ON a.sid=c.sid WHERE b.course_name='English' ORDER BY a.score LIMIT 4,6;

14>.统计按照各科成绩,分段统计每个课程在90分以上、80-90的、60~80、低于60分的人数

  1. mysql> SELECT b.course_name,SUM(CASE WHEN score>= THEN ELSE END),SUM(CASE WHEN score< AND score>= THEN ELSE END),SUM(CASE WHEN score< AND score>= THEN ELSE END),SUM(CASE WHEN score< THEN ELSE END) FROM score a INNER JOIN course b ON a.course_id=b.id GROUP BY b.course_name;
  2. +-------------+--------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+-------------------------------------------+
  3. | course_name | SUM(CASE WHEN score>= THEN ELSE END) | SUM(CASE WHEN score< AND score>= THEN ELSE END) | SUM(CASE WHEN score< AND score>= THEN ELSE END) | SUM(CASE WHEN score< THEN ELSE END) |
  4. +-------------+--------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+-------------------------------------------+
  5. | math | | | | |
  6. | english | | | | |
  7. | chinese | | | | |
  8. | biology | | | | |
  9. | history | | | | |
  10. +-------------+--------------------------------------------+---------------------------------------------------------+---------------------------------------------------------+-------------------------------------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT b.course_name,SUM(CASE WHEN score>=90 THEN 1 ELSE 0 END),SUM(CASE WHEN score=80 THEN 1 ELSE 0 END),SUM(CASE WHEN score=60 THEN 1 ELSE 0 END),SUM(CASE WHEN score

15>.查看每门课程被选修的学生数

  1. mysql> SELECT course_id,COUNT(*) FROM score GROUP BY course_id;
  2. +-----------+----------+
  3. | course_id | COUNT(*) |
  4. +-----------+----------+
  5. | | |
  6. | | |
  7. | | |
  8. | | |
  9. | | |
  10. +-----------+----------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT course_id,COUNT(*) FROM score GROUP BY course_id;

16>.查看只学习了一门课程的学生的姓名和学号

  1. mysql> SELECT course_id,COUNT(*) FROM score GROUP BY course_id;
  2. +-----------+----------+
  3. | course_id | COUNT(*) |
  4. +-----------+----------+
  5. | | |
  6. | | |
  7. | | |
  8. | | |
  9. | | |
  10. +-----------+----------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT course_id,COUNT(*) FROM score GROUP BY course_id;

17>.查询名字相同的学生名单和个数

  1. mysql> SELECT sname,count(*) FROM students GROUP BY sname HAVING COUNT(*)>=;
  2. Empty set (0.00 sec)
  3.  
  4. mysql>

mysql> SELECT sname,count(*) FROM students GROUP BY sname HAVING COUNT(*)>=2;

18>.85年之后出生的学生人数

  1. mysql> alter table students add brithday datetime;
  2. Query OK, rows affected (0.01 sec)
  3. Records: Duplicates: Warnings:
  4.  
  5. mysql> update students set brithday='1983-01-01' where sid<;
  6. Query OK, rows affected (0.01 sec)
  7. Rows matched: Changed: Warnings:
  8.  
  9. mysql> update students set brithday='1986-01-01' where sid>=;
  10. Query OK, rows affected (0.01 sec)
  11. Rows matched: Changed: Warnings:
  12.  
  13. mysql>

添加字段并插入测试数据

  1. mysql> SELECT * FROM students WHERE brithday>='1985-01-01';
  2. +-----+-------+--------+---------+---------------------+
  3. | sid | sname | gender | dept_id | brithday |
  4. +-----+-------+--------+---------+---------------------+
  5. | | Mike | | | -- :: |
  6. | | John | | | -- :: |
  7. | | Cindy | | | -- :: |
  8. | | Susan | | | -- :: |
  9. +-----+-------+--------+---------+---------------------+
  10. rows in set (0.00 sec)
  11.  
  12. mysql>
  13. mysql>

mysql> SELECT * FROM students WHERE brithday>='1985-01-01';

19>.查询每门课程的平均成绩,按升序排序,如果平均成绩相同按ID降序排序

  1. mysql> SELECT course_id,AVG(score) FROM score GROUP BY course_id ORDER BY AVG(score),course_id DESC;
  2. +-----------+------------+
  3. | course_id | AVG(score) |
  4. +-----------+------------+
  5. | | 63.5000 |
  6. | | 76.6000 |
  7. | | 77.2000 |
  8. | | 77.5000 |
  9. | | 82.0000 |
  10. +-----------+------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>

mysql> SELECT course_id,AVG(score) FROM score GROUP BY course_id ORDER BY AVG(score),course_id DESC;

20>.查询有不及格学生的课程和不及格学生个数

  1. mysql> SELECT course_id,COUNT(*) FROM score WHERE score< GROUP BY course_id;
  2. +-----------+----------+
  3. | course_id | COUNT(*) |
  4. +-----------+----------+
  5. | | |
  6. | | |
  7. | | |
  8. +-----------+----------+
  9. rows in set (0.00 sec)
  10.  
  11. mysql>
  12. mysql>

mysql> SELECT course_id,COUNT(*) FROM score WHERE score

21>.将所有学生姓名中前后的空格去掉

  1. mysql> UPDATE students SET sname=LTRIM(RTRIM(sname));
  2. Query OK, rows affected (0.01 sec)
  3. Rows matched: Changed: Warnings:
  4.  
  5. mysql>
  6. mysql>

mysql> UPDATE students SET sname=LTRIM(RTRIM(sname));

22>.将所有学生的考试成绩展示为课程名:成绩样式

  1. mysql>
  2. mysql> SELECT a.sid,CONCAT(b.course_name,':',a.score)FROM score a INNER JOIN course b ON a.course_id=b.id;
  3. +-----+-----------------------------------+
  4. | sid | CONCAT(b.course_name,':',a.score) |
  5. +-----+-----------------------------------+
  6. | | math: |
  7. | | english: |
  8. | | chinese: |
  9. | | biology: |
  10. | | english: |
  11. | | chinese: |
  12. | | history: |
  13. | | biology: |
  14. | | math: |
  15. | | english: |
  16. | | chinese: |
  17. | | history: |
  18. | | biology: |
  19. | | chinese: |
  20. | | history: |
  21. | | math: |
  22. | | chinese: |
  23. | | history: |
  24. | | english: |
  25. | | history: |
  26. | | math: |
  27. | | english: |
  28. | | chinese: |
  29. | | history: |
  30. | | biology: |
  31. | | history: |
  32. | | biology: |
  33. +-----+-----------------------------------+
  34. rows in set (0.00 sec)
  35.  
  36. mysql>

mysql> SELECT a.sid,CONCAT(b.course_name,':',a.score)FROM score a INNER JOIN course b ON a.course_id=b.id;

23>.将所有老师的名字拆分成姓和名两个字段显示

  1. mysql> SELECT name, SUBSTRING(name,,LOCATE(' ',name)- ),SUBSTRING(name,LOCATE(' ',name)+,) FROM teacher;
  2. +-----------+---------------------------------------+---------------------------------------+
  3. | name | SUBSTRING(name,,LOCATE(' ',name)- ) | SUBSTRING(name,LOCATE(' ',name)+,) |
  4. +-----------+---------------------------------------+---------------------------------------+
  5. | Zhang san | Zhang | san |
  6. | Li si | Li | si |
  7. | Wang wu | Wang | wu |
  8. | Liu liu | Liu | liu |
  9. | Ding qi | Ding | qi |
  10. +-----------+---------------------------------------+---------------------------------------+
  11. rows in set (0.00 sec)
  12.  
  13. mysql>
  14. mysql>
  15. mysql>

mysql> SELECT name, SUBSTRING(name,1,LOCATE(' ',name)- 1),SUBSTRING(name,LOCATE(' ',name)+1,50) FROM teacher;

24>.把所有学生的生日格式转换成年月日的格式,并计算每个学生年龄

  1. mysql> SELECT sname,brithday,DATE_FORMAT(brithday, '%Y%m%d'),YEAR(NOW())- YEAR(brithday),FLOOR(DATEDIFF(NOW(),brithday)/) FROM students;
  2. +-----------+---------------------+---------------------------------+-----------------------------+-------------------------------------+
  3. | sname | brithday | DATE_FORMAT(brithday, '%Y%m%d') | YEAR(NOW())- YEAR(brithday) | FLOOR(DATEDIFF(NOW(),brithday)/) |
  4. +-----------+---------------------+---------------------------------+-----------------------------+-------------------------------------+
  5. | Jason Yin | -- :: | | | |
  6. | Andy | -- :: | | | |
  7. | Bob | -- :: | | | |
  8. | Ruth | -- :: | | | |
  9. | Mike | -- :: | | | |
  10. | John | -- :: | | | |
  11. | Cindy | -- :: | | | |
  12. | Susan | -- :: | | | |
  13. +-----------+---------------------+---------------------------------+-----------------------------+-------------------------------------+
  14. rows in set (0.00 sec)
  15.  
  16. mysql>
  17. mysql>
  18. mysql>

mysql> SELECT sname,brithday,DATE_FORMAT(brithday, '%Y%m%d'),YEAR(NOW())- YEAR(brithday),FLOOR(DATEDIFF(NOW(),brithday)/365) FROM students;

数据库基础SQL知识面试题二的更多相关文章

  1. 数据库基础SQL知识面试题一

    数据库基础SQL知识面试题一 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 如标题所示,本篇博客主要介绍基础知识的面试题.大家可以用来测试面试者的技术水平,由于个人水平所限,难免 ...

  2. Oracle数据库 基础SQL语句练习

    一.说明 第一次使用Oracle,想做一些练习,熟悉一些oracle. 表:使用的是scott用户,默认的表 具体表讲解,可以参考该文档:https://www.cnblogs.com/xjcheng ...

  3. 数据库和SQL面试题基础知识(持续更新)

    数据库方面基础知识复习 常问小问题: 一.like查询大小写问题: sql查询结果去重 SELECT distinct name FROM 表:平均数avg 一.like查询大小写问题: ①用bina ...

  4. [转载]Oracle数据库基础--SQL查询经典例题

    Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...

  5. Oracle数据库基础--SQL查询经典例题

    Oracle基础练习题,采用Oracle数据库自带的表,适合初学者,其中包括了一些简单的查询,已经具有Oracle自身特点的单行函数的应用 本文使用的实例表结构与表的数据如下: emp员工表结构如下: ...

  6. mysql数据库基础SQL语句总结篇

    常用的sql增删改查语句 创建数据库:create database db_name character set utf8;删除数据库:drop database db_name;切换数据库:use ...

  7. 数据库常用SQL语句(二):多表连接查询

    前面主要介绍了单表操作时的相关查询语句,接下来介绍一下多表之间的关系,这里主要是多表数据记录的查询,也就是如何在一个查询语句中显示多张表的数据,这也叫多表数据记录的连接查询. 在实现连接查询时,首先是 ...

  8. 【SQL必知必会笔记(1)】数据库基础、SQL、MySQL8.0.16下数据库、表的创建及数据插入

    文章目录 1.数据库基础 1.1 数据库(database) 1.2 表(table) 1.3 列和数据类型 1.4 行 1.5 主键 2.什么是SQL 3.创建后续练习所需数据库.表(MySQL8. ...

  9. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

随机推荐

  1. jsp页面中 <%%> <%! %>, <%=%> <%-- --%>有什么区别

    <%%> 可添加java代码片段   <%! %>       可添加java方法   <%=%>       变量或表达式值输出到页面 <%-- --%&g ...

  2. BZOJ2084[Poi2010]Antisymmetry——回文自动机

    题目描述 对于一个01字符串,如果将这个字符串0和1取反后,再将整个串反过来和原串一样,就称作“反对称”字符串.比如00001111和010101就是反对称的,1001就不是.现在给出一个长度为N的0 ...

  3. Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

    题意 给出一个1-n的集合   gcd 集合里面的所有数  得到的 一个 数   然后自己选择删去一个数   要使得到的数 构成的数列 的字典序最大 思路: gcd所有数 那gcd得到的数肯定要小于数 ...

  4. mac centos linux 安装PHP扩展 INTL(国际化) ———— error: 'ext/standard/php_smart_str.h'

    PHP简单源码安装扩展 五个步骤: 详细说明下: cd /fujieace/php7.0/ext/intl:#进入INTL扩展目录? 在编译扩展时候需要phpize准备环境,准备程序需要获取这个目录的 ...

  5. 【cf849ABC】

    849A - Odds and Ends 问能否将序列划分为奇数个长度奇数的奇数开头奇数结尾的子区间. 一开始想dp..不过没必要. const int N=201000; int n,a[N]; i ...

  6. hz2016的noip模拟赛(d1 + d2)

    QAQ怕不是真的凉凉 d1 205 + d2 170 = 375 感觉难度和noip差不多 那么这可是有够凉的 官方题解 D1 D2 D1 T1 某地的ENLIGHTENED总部总部有N个Agent, ...

  7. Leetcode 80.删除排序数组中的重复项 II By Python

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例 ...

  8. 【LOJ#2542】[PKUWC2018]随机游走(min-max容斥,动态规划)

    [LOJ#2542][PKUWC2018]随机游走(min-max容斥,动态规划) 题面 LOJ 题解 很明显,要求的东西可以很容易的进行\(min-max\)容斥,那么转为求集合的\(min\). ...

  9. [luogu3620][APIO/CTSC 2007]数据备份【贪心+堆+链表】

    题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同的办公楼彼此之间互相备份,而你则坐在家中尽享计算机游戏 ...

  10. Pycharm自动添加文件头注释

    1.选择File -> Settings 2.选择 File and Code Templates -> Files -> Python Script 3.设置 #!/usr/bin ...