• 发如雪SQL Based on practice(二)


    发如雪 - 周杰伦

    作词:方文山

    作曲:周杰伦

    编曲:林迈可

    狼牙月 伊人憔悴

    我举杯 饮尽了风雪

    是谁打翻前世柜 惹尘埃是非

    缘字诀 几番轮回

    你锁眉 哭红颜唤不回

    纵然青史已经成灰 我爱不灭

    繁华如三千东流水

    我只取一瓢爱了解

    只恋你化身的蝶

    你发如雪 凄美了离别

    我焚香感动了谁

    邀明月 让回忆皎洁

    爱在月光下完美

    你发如雪 纷飞了眼泪

    我等待苍老了谁

    红尘醉 微醺的岁月

    我用无悔 刻永世爱你的碑

    你发如雪 凄美了离别

    我焚香感动了谁

    邀明月 让回忆皎洁

    爱在月光下完美

    你发如雪 纷飞了眼泪

    我等待苍老了谁

    红尘醉 微醺的岁月

    狼牙月 伊人憔悴

    我举杯 饮尽了风雪

    是谁打翻前世柜 惹尘埃是非

    缘字诀 几番轮回

    你锁眉 哭红颜唤不回

    纵然青史已经成灰 我爱不灭

    繁华如三千东流水

    我只取一瓢爱了解

    只恋你化身的蝶

    你发如雪 凄美了离别

    我焚香感动了谁

    邀明月 让回忆皎洁

    爱在月光下完美

    你发如雪 纷飞了眼泪

    我等待苍老了谁

    红尘醉 微醺的岁月

    我用无悔 刻永世爱你的碑

    你发如雪 凄美了离别

    我焚香感动了谁

    邀明月 让回忆皎洁

    爱在月光下完美

    你发如雪 纷飞了眼泪

    我等待苍老了谁

    红尘醉 微醺的岁月

    你发如雪 凄美了离别

    我焚香感动了谁

    邀明月 让回忆皎洁

    爱在月光下完美

    你发如雪 纷飞了眼泪

    我等待苍老了谁

    红尘醉 微醺的岁月

    我用无悔 刻永世爱你的碑

    啦儿啦儿啦

    啦儿啦 啦儿啦 啦儿啦儿啊

    铜镜映无邪 扎马尾

    你若撒野 今生我把酒奉陪

    啦儿啦 啦儿啦 啦儿啦儿啦

    啦儿啦 啦儿啦 啦儿啦儿啊

    铜镜映无邪 扎马尾

    你若撒野 今生我把酒奉陪


    1. /*学生表:student [学号,学生姓名,出生年月,性别]
    2. 成绩表:score [学号,课程号,成绩]
    3. 课程表:course [课程号,课程名称,教师号]
    4. 教师表:teacher [教师号,教师姓名)*/
    1. -- ----------------------------
    2. -- Table structure for teacher
    3. -- ----------------------------
    4. DROP TABLE IF EXISTS `teacher`;
    5. CREATE TABLE `teacher` (
    6. `t_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    7. `t_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
    8. PRIMARY KEY (`t_id`) USING BTREE
    9. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    10. -- ----------------------------
    11. -- Records of teacher
    12. -- ----------------------------
    13. INSERT INTO `teacher` VALUES ('01', '数学老师-杰斯');
    14. INSERT INTO `teacher` VALUES ('02', '语文老师-盲僧');
    15. INSERT INTO `teacher` VALUES ('03', '英语老师-菲欧娜');
    16. -- ----------------------------
    17. -- Table structure for student
    18. -- ----------------------------
    19. DROP TABLE IF EXISTS `student`;
    20. CREATE TABLE `student` (
    21. `s_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    22. `s_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
    23. `s_birth` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
    24. `s_sex` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
    25. PRIMARY KEY (`s_id`) USING BTREE
    26. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    27. -- ----------------------------
    28. -- Records of student
    29. -- ----------------------------
    30. INSERT INTO `student` VALUES ('01', '流浪法师-瑞兹', '1990-01-01', '男');
    31. INSERT INTO `student` VALUES ('02', '探险家-EZ', '1990-12-21', '男');
    32. INSERT INTO `student` VALUES ('03', '疾风剑豪-亚瑟', '1990-05-20', '男');
    33. INSERT INTO `student` VALUES ('04', '迅捷斥候-提莫', '1990-08-06', '男');
    34. INSERT INTO `student` VALUES ('05', '黑暗之女-安妮', '1991-12-01', '女');
    35. INSERT INTO `student` VALUES ('06', '战争女神-希维尔', '1992-03-01', '女');
    36. INSERT INTO `student` VALUES ('07', '光辉女郎-拉克丝', '1989-07-01', '女');
    37. INSERT INTO `student` VALUES ('08', '放逐之刃-锐雯', '1990-01-20', '女');
    38. -- ----------------------------
    39. -- Table structure for score
    40. -- ----------------------------
    41. DROP TABLE IF EXISTS `score`;
    42. CREATE TABLE `score` (
    43. `s_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    44. `c_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    45. `s_score` int(0) NULL DEFAULT NULL,
    46. PRIMARY KEY (`s_id`, `c_id`) USING BTREE
    47. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    48. -- ----------------------------
    49. -- Records of score
    50. -- ----------------------------
    51. INSERT INTO `score` VALUES ('01', '01', 80);
    52. INSERT INTO `score` VALUES ('01', '02', 90);
    53. INSERT INTO `score` VALUES ('01', '03', 99);
    54. INSERT INTO `score` VALUES ('02', '01', 70);
    55. INSERT INTO `score` VALUES ('02', '02', 60);
    56. INSERT INTO `score` VALUES ('02', '03', 80);
    57. INSERT INTO `score` VALUES ('03', '01', 80);
    58. INSERT INTO `score` VALUES ('03', '02', 80);
    59. INSERT INTO `score` VALUES ('03', '03', 80);
    60. INSERT INTO `score` VALUES ('04', '01', 50);
    61. INSERT INTO `score` VALUES ('04', '02', 30);
    62. INSERT INTO `score` VALUES ('04', '03', 20);
    63. INSERT INTO `score` VALUES ('05', '01', 76);
    64. INSERT INTO `score` VALUES ('05', '02', 87);
    65. INSERT INTO `score` VALUES ('06', '01', 31);
    66. INSERT INTO `score` VALUES ('06', '03', 34);
    67. INSERT INTO `score` VALUES ('07', '02', 89);
    68. INSERT INTO `score` VALUES ('07', '03', 98);
    69. -- ----------------------------
    70. -- Table structure for course
    71. -- ----------------------------
    72. DROP TABLE IF EXISTS `course`;
    73. CREATE TABLE `course` (
    74. `c_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    75. `c_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '',
    76. `t_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
    77. PRIMARY KEY (`c_id`) USING BTREE
    78. ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
    79. -- ----------------------------
    80. -- Records of course
    81. -- ----------------------------
    82. INSERT INTO `course` VALUES ('01', '语文', '02');
    83. INSERT INTO `course` VALUES ('02', '数学', '01');
    84. INSERT INTO `course` VALUES ('03', '英语', '03');

    -- 6道SQL面试题
    -- 1、查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号

    -- 2、查询平均成绩大于60分的学生的学号和平均成绩

    -- 3、查询所有学生的学号、姓名、选课数、总成绩

    -- 4、查询姓“刘”的老师的个数

    -- 5、查询没学过“数学老师-杰斯”老师课的学生的学号、姓名

    -- 6、查询课程编号为“02”的总成绩

    1. --各个表的数据情况
    2. SELECT * from student;
    3. select * from score;
    4. SELECT * from course;
    5. select * from teacher;
    6. -- 先全数据关联一下看看
    7. select * from student stu,score sc,course c,teacher t
    8. where stu.s_id=sc.s_id and sc.c_id =c.c_id and c.t_id = t.t_id;
    1. 1.SELECT a.c_id from
    2. (select * from score where c_id ='01') a,
    3. (select * from score where c_id ='02') b
    4. where a.s_id = b.s_id and a.s_score > b.s_score;
    5. 2.SELECT score.s_id,avg(s_score) from score group by s_id HAVING avg(s_score)>60;
    6. 3.SELECT b.s_name,sum(s_score),count(c_id) from score a, student b where a.s_id = b.s_id group by a.s_id
    7. 4.select count(*) from teacher where t_name like '刘%'
    8. 5.select * from student where s_id not in(
    9. select DISTINCT(stu.s_id) from student stu,score sc,course c,teacher t
    10. where stu.s_id=sc.s_id and sc.c_id =c.c_id and c.t_id = t.t_id and t.t_name != '数学老师-杰斯');
    11. 6.select SUM(sc.s_score) from score sc where c_id = '02';

     

    1. 1、SQL语句完整结构:
    2. SELECT...,...,...(存在聚合函数)
    3. FROM...(LEFT / RIGHT)JOIN ...ON 多表的连接条件
    4. (LEFT / RIGHT)JOIN ...ON
    5. WHERE ...(WHERE子句不能使用聚合函数)
    6. GROUP BY ...,...
    7. HAVING (HAVING子句可以包含聚合函数的过滤条件也可以不包含)
    8. ORDER BY ...,...(ASC / DESC)
    9. LIMIT ...,...;
    10. 2、SQL语句的执行顺序
    11. FROM …,…-> ON -> (LEFT/RIGHT JOIN) -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT->ORDER BY. -> LIMIT
    12. (1)from:从哪些表中筛选
    13. (2)on:关联多表查询时,去除笛卡尔积
    14. (3)where:从表中筛选的条件
    15. (4)group by:分组依据
    16. (5)having:在统计结果中再次筛选
    17. (6)select: 展示哪些字段列表
    18. (7)order by:排序
    19. (8)limit:分页
    20. 2.1 笛卡尔积产生的条件
    21. 1、省略了on的连接条件
    22. 2、所有表的所有行数据都相连
    23. 3、连接条件无效
    24. 3、WHERE和HAVING的区别
    25. HAVING
    26. 1、HAVING子句可以包含聚合函数的过滤条件也可以不包含,通常与GROUP BY连用。
    27. 2、HAVING先进行计算,然后再过滤。
    28. WHERE
    29. 1、WHERE子句不能使用聚合函数,可以与GROUP BY连用也可以不连用
    30. 2、WHERE是先进行约束,然后再进行计算。
    31. 3.1、优化HAVING的处理速度
    32. 当HAVING的逻辑中有可以使用WHERE筛选,优先使用WHERE筛选,这样可以减少HAVING的过滤查询。
    33. 4、ON和WHERE的区别
    34. 首先,内连接情况下,ON与WHERE子句是等效的。
    35. 外连接情况下有以下区别:
    36. 1、ON限制条件的发生时间比WHERE早。
    37. 2、ON在进行外部连接前,根据约束条件筛选数据。
    38. 3、WHERE在外部连接后,根据约束条件筛选数据。

  • 相关阅读:
    基于jeecgboot的flowable驳回修改以及发起人设置
    8个关于 Promise.then 和 Promise.catch 的面试题,一定要掌握
    Spring中IOC容器的基本配置使用
    【面试专栏】java线程第二篇:Java线程/并发编程带来的问题(含线程题解答)
    Debian系APT源通用镜像加速配置
    【测试面试】20K测试工程师会考察哪些能力?
    LeetCode练习4——删除有序数组中的重复项
    数据库监控:关键指标和注意事项
    申报高企的条件你真的满足了吗?
    内修昇思MindSpore AI框架,外重行业汇聚,华为大模型的不平凡之路
  • 原文地址:https://blog.csdn.net/s_sos0/article/details/127037914