随笔分类 - 数据库sql
摘要:创建表: 1、显示所有职工的基本信息。 SELECT * FROM `employees`; 2、查询所有职工所属部门的部门号,不显示重复的部门号。 SELECT DISTINCT deptID FROM employees 3、求出所有职工的人数. SELECT COUNT(*) FROM emp
阅读全文
摘要:不用数据库连接池的写法: 使用 PooledDB 连接参数定义: 1. mincached,最少的空闲连接数,如果空闲连接数小于这个数,pool会创建一个新的连接2. maxcached,最大的空闲连接数,如果空闲连接数大于这个数,pool会关闭空闲连接3. maxconnections,最大的连接
阅读全文
摘要:1、CAST CAST:格式转换函数 用法:CAST (expression AS data_type) expression:任何有效的SQServer表达式。 AS:用于分隔两个参数,在AS之前的是要处理的数据,在AS之后是要转换的数据类型。 data_type:目标系统所提供的数据类型,包括b
阅读全文
摘要:题目41 :按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一(就是根据出生日期算,每个人的年龄) 分析:要引入时间差函数TIMESTAMPDIFF , 时间差函数TIMESTAMPDIFF 的用法: TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟
阅读全文
摘要:题目38:检索至少选修两门课程的学生学号 SELECT studentid ,COUNT(courseid) AS a FROM student_score GROUP BY studentid HAVING a >=2 题目39:查询选修了全部课程的学生信息 GROUP BY studentid
阅读全文
摘要:题目36:查询每门功成绩最好的前两名 分析:先用自己交自己,条件为a.courseid = b.courseid and a.score<b.score,其实就是列出同一门课内所有分数比较的情况。 通过a.studentid和a.courseid可以联合确定这个同学的这门课的这个分数究竟比多少个其他
阅读全文
摘要:题目34:成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 分析:上一题 33 是在成绩不重复的情况下 查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩 这两题有什么区别? 有区别! 33 题成绩不重复,得到的结果就是唯一的,可以直接limit 1
阅读全文
摘要:题目32:求每门课程的学生人数 分析: 这个直接是group by 然后 count SELECT courseid, COUNT(studentid) FROM student_score GROUP BY courseid 题目33:查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成
阅读全文
摘要:题目30:查询存在不及格的课程 分析:直接 查询 student_score score<60 得到courseid 这样的话 courseid会有很多重复的,要用到distinct 关键字、 SELECT DISTINCT student_course.coursename FROM studen
阅读全文
摘要:题目:查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况) 分析: 这个应该是student表 和 student_score表进行联合查询,因为存在学生没成绩,没选课的情况,所以要用left join SELECT student.*,student_score.courseid ,stu
阅读全文
摘要:题目:26:查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩 分析:这个应该是根据student 进行分组 group by 再根据 having >= 85 进行过滤,然后在关联student 信息表,拿到学生的基本信息 SELECT student.id, student.stden
阅读全文
摘要:题目:查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 刚开始写的sql 比较简单: SELECT courseid, AVG(score) as a FROM student_score GROUP BY courseid ORDER BY a DESC, cou
阅读全文
摘要:题目23:查询同名学生名单,并统计同名人数 找到同名的名字并统计个数 一开始这个sql 写不出来,看了答案后好简单,也更加加深了我多count 的用法 SELECT stdentname,COUNT(*) FROM student GROUP BY stdentname HAVING COUNT(*
阅读全文
摘要:题目21:查询男生、女生人数 这个题目我写出的sql 还是比较原始的,查询了3次,这样的话性能会比较差 SELECT c.a,d.b FROM (SELECT COUNT(*) AS a FROM student WHERE sex like '女')c, (SELECT COUNT(*) AS b
阅读全文
摘要:题目 19:查询每门课程被选修的学生数 SELECT courseid,COUNT(studentid) FROM student_score GROUP BY courseid; 运行: 练习题20 :查询出只选修两门课程的学生学号和姓名 SELECT student.*, r.a FROM st
阅读全文
摘要:题目:查询学生的总成绩,并进行排名,总分重复时不保留名次空缺 分析:查询学生的总成绩 并进行排序 写这个sql 简单,直接按照学生student分组 然后sum(成绩 score) SELECT studentid,SUM(score) AS a FROM student_score GROUP B
阅读全文
摘要:题目:按各科成绩进行排序,并显示排名 分析:这题目我自己不会做,看答案的 ,哈哈哈哈 sql: SELECT a.courseid,a.studentid,a.score,COUNT(b.score)+1 AS rank FROM student_score a LEFT JOIN student_
阅读全文