![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SQL
ZhuCheng Xie
人生苦短,我已不用Python 了!
展开
-
SQL : 练习题-18题
查询各科成绩前三名的记录大坑比。mysql不能group by 了以后取limit,所以不要想着讨巧了,我快被这一题气死了。思路有两种,第一种比较暴力,计算比自己分数大的记录有几条,如果小于3 就select,因为对前三名来说不会有3个及以上的分数比自己大了,最后再对所有select到的结果按照分数和课程编号排名即可。select * from scwhere (select count(...原创 2019-07-14 12:44:52 · 134 阅读 · 0 评论 -
SQL : 练习题-30题
查询存在不及格的课程可以用group by 来取唯一,也可以用distinctselect cid from scwhere score< 60group by cid;select DISTINCT sc.CIdfrom scwhere sc.score <60;原创 2019-07-15 12:37:56 · 178 阅读 · 0 评论 -
SQL : 练习题-31题
查询课程编号为 01 且课程成绩在 80 分及以上的学生的学号和姓名select student.sid,student.sname from student,scwhere cid="01"and score>=80and student.sid = sc.sid;原创 2019-07-15 12:39:04 · 86 阅读 · 0 评论 -
SQL : 数据库表
一个数据库通常包含一个或多个表。每个表有一个名字标识(例如:“Websites”),表包含带有数据的记录(行)。在本教程中,我们在 MySQL 的 RUNOOB 数据库中创建了 Websites 表,用于存储网站记录。我们可以通过以下命令查看 “Websites” 表的数据:mysql> use RUNOOB;Database changedmysql> set names ...原创 2019-07-07 11:12:42 · 322 阅读 · 1 评论 -
SQL :一些最重要的 SQL 命令
SELECT - 从数据库中提取数据UPDATE - 更新数据库中的数据DELETE - 从数据库中删除数据INSERT INTO - 向数据库中插入新数据CREATE DATABASE - 创建新数据库ALTER DATABASE - 修改数据库CREATE TABLE - 创建新表ALTER TABLE - 变更(改变)数据库表DROP TABLE - 删除表CREATE I...原创 2019-07-07 11:14:46 · 133 阅读 · 0 评论 -
SQL :SELECT 语句
SQL SELECT 语法SELECT column_name,column_nameFROM table_name;SELECT * FROM table_name;原创 2019-07-07 11:17:53 · 95 阅读 · 0 评论 -
SQL :SELECT DISTINCT 语句
SQL SELECT DISTINCT 语句在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。DISTINCT 关键词用于返回唯一不同的值SQL SELECT DISTINCT 语法SELECT DISTINCT column_name,column_nameFROM table_name;...原创 2019-07-07 11:19:46 · 200 阅读 · 0 评论 -
SQL :WHERE 子句
SQL WHERE 子句WHERE 子句用于提取那些满足指定条件的记录。SQL WHERE 语法SELECT column_name,column_nameFROM table_nameWHERE column_name operator value;原创 2019-07-07 11:20:51 · 114 阅读 · 0 评论 -
SQL :WHERE 子句中的运算符
下面的运算符可以在 WHERE 子句中使用:运算符 描述 = 等于 <> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != > 大于 < 小于 >= 大于等于 <= 小于等于BETWEEN 在某个范围内...原创 2019-07-07 11:23:49 · 2847 阅读 · 1 评论 -
SQL : 练习题-29题
查询任何一门课程成绩在 70 分以上的姓名、课程名称和分数select student.sname, course.cname,sc.score from student,course,scwhere sc.score>70and student.sid = sc.sidand sc.cid = course.cid;...原创 2019-07-15 12:37:21 · 131 阅读 · 0 评论 -
SQL : 练习题-28题
查询所有学生的课程及分数情况(存在学生没成绩,没选课的情况)select student.sname, cid, score from studentleft join scon student.sid = sc.sid;原创 2019-07-15 12:36:46 · 171 阅读 · 0 评论 -
SQL : 练习题-27题
查询课程名称为「数学」,且分数低于 60 的学生姓名和分数select student.sname, sc.score from student, sc, coursewhere student.sid = sc.sidand course.cid = sc.cidand course.cname = "数学"and sc.score < 60;...原创 2019-07-15 12:36:18 · 146 阅读 · 0 评论 -
SQL : 练习题-19题
每门课程被选修的学生数select cid, count(sid) from sc group by cid;原创 2019-07-14 12:45:34 · 117 阅读 · 0 评论 -
SQL : 练习题-20题
查询出只选修两门课程的学生学号和姓名嵌套查询select student.sid, student.sname from studentwhere student.sid in(select sc.sid from scgroup by sc.sidhaving count(sc.cid)=2);...原创 2019-07-14 12:47:32 · 121 阅读 · 0 评论 -
SQL : 练习题-21题
查询男生、女生人数select ssex, count(*) from studentgroup by ssex;原创 2019-07-14 12:48:10 · 126 阅读 · 0 评论 -
SQL : 练习题-22题
查询名字中含有「风」字的学生信息select *from student where student.Sname like '%风%'原创 2019-07-15 12:30:11 · 160 阅读 · 0 评论 -
SQL : 练习题-23题
查询同名学生名单,并统计同名人数找到同名的名字并统计个数select sname, count(*) from studentgroup by snamehaving count(*)>1;嵌套查询列出同名的全部学生的信息select * from studentwhere sname in (select sname from studentgroup by sname...原创 2019-07-15 12:31:19 · 175 阅读 · 0 评论 -
SQL : 练习题-24题
查询 1990 年出生的学生名单select *from studentwhere YEAR(student.Sage)=1990;原创 2019-07-15 12:32:23 · 130 阅读 · 0 评论 -
SQL : 练习题-25题
查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列select sc.cid, course.cname, AVG(SC.SCORE) as average from sc, coursewhere sc.cid = course.cidgroup by sc.cid order by average desc,cid asc;...原创 2019-07-15 12:33:01 · 162 阅读 · 0 评论 -
SQL : 练习题-26题
查询平均成绩大于等于 85 的所有学生的学号、姓名和平均成绩having也可以用来截取结果表,在这里就先得到平均成绩总表,再截取AVG大于85的即可.select student.sid, student.sname, AVG(sc.score) as aver from student, scwhere student.sid = sc.sidgroup by sc.sidhaving...原创 2019-07-15 12:33:45 · 110 阅读 · 0 评论 -
SQL :Where 子句
Where 子句搜索 empno 等于 7900 的数据:Select * from emp where empno=7900;Where +条件(筛选行)条件:列,比较运算符,值比较运算符包涵:= > < >= ,<=, !=,<> 表示(不等于)Select * from emp where ename='SMITH';例子中的 SMITH...原创 2019-07-07 11:27:53 · 280 阅读 · 0 评论 -
SQL :ORDER BY 关键字
SQL ORDER BY 关键字ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。SQL ORDER BY 语法SELECT column_name,column_nameFROM table_nameORDER BY column_name,column_...原创 2019-07-07 11:29:57 · 664 阅读 · 0 评论 -
SQL : 练习题-41题
查询本周过生日的学生select *from student where WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE());原创 2019-07-16 15:39:52 · 178 阅读 · 0 评论 -
SQL : 练习题-42题
查询下周过生日的学生select *from student where WEEKOFYEAR(student.Sage)=WEEKOFYEAR(CURDATE())+1;原创 2019-07-16 15:40:38 · 117 阅读 · 0 评论 -
SQL : 练习题-43题
查询本月过生日的学生select *from student where MONTH(student.Sage)=MONTH(CURDATE());原创 2019-07-17 17:42:24 · 162 阅读 · 0 评论 -
SQL : 练习题-44题
查询下月过生日的学生select *from student where MONTH(student.Sage)=MONTH(CURDATE())+1;原创 2019-07-17 17:42:33 · 172 阅读 · 0 评论 -
SQL:触发器
触发器是数据库应用中的重用工具,它的应用很广泛,这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器。下面我摘录了SQL Server官方教程中的一段关于触发器的文字,确实有用的一点文字描述。可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。insert...原创 2019-07-19 16:50:19 · 255 阅读 · 0 评论 -
SQL:触发器DELETE触发器的工作过程
当触发DELETE触发器后,从受影响的表中删除的行将被放置到一个特殊的deleted表中。deleted表是一个逻辑表,它保留已被删除数据行的一个副本。deleted表还允许引用由初始化DELETE语句产生的日志数据。使用DELETE触发器时,需要考虑以下的事项和原则:l 当某行被添加到deleted表中时,它就不再存在于数据库表中;因此,deleted表和数据库表没有相同的行...原创 2019-07-19 16:51:04 · 5381 阅读 · 0 评论 -
SQL: UPDATE触发器的工作过程
可将UPDATE语句看成两步操作:即捕获数据前像(before image)的DELETE语句,和捕获数据后像(after image)的INSERT语句。当在定义有触发器的表上执行UPDATE语句时,原始行(前像)被移入到deleted表,更新行(后像)被移入到inserted表。触发器检查deleted表和inserted表以及被更新的表,来确定是否更新了多行以及如何执行触发器动作。可以使...原创 2019-07-19 16:56:19 · 3319 阅读 · 0 评论 -
SQL : INSTEAD OF触发器的工作过程
可以在表或视图上指定INSTEAD OF触发器。执行这种触发器就能够替代原始的触发动作。INSTEAD OF触发器扩展了视图更新的类型。对于每一种触发动作(INSERT、UPDATE或 DELETE),每一个表或视图只能有一个INSTEAD OF触发器。INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。例如,通常不能在一个基于连接的视图上进行DELETE操作。然而,可以编写...原创 2019-07-19 16:57:29 · 2506 阅读 · 1 评论 -
SQL : 练习题-40题
按照出生日期来算,当前月日 < 出生年月的月日则,年龄减一select student.SId as 学生编号,student.Sname as 学生姓名,TIMESTAMPDIFF(YEAR,student.Sage,CURDATE()) as 学生年龄from student...原创 2019-07-16 15:39:12 · 389 阅读 · 0 评论 -
SQL : 练习题-39题
查询选修了全部课程的学生信息select student.*from sc ,student where sc.SId=student.SIdGROUP BY sc.SIdHAVING count(*) = (select DISTINCT count(*) from course )原创 2019-07-16 15:38:24 · 131 阅读 · 0 评论 -
SQL : 练习题-38题
检索至少选修两门课程的学生学号select sid, count(cid) as cc from scgroup by sidhaving cc>=2;原创 2019-07-16 15:37:51 · 162 阅读 · 0 评论 -
SQL :INSERT INTO 语句
SQL INSERT INTO 语句INSERT INTO 语句用于向表中插入新记录。SQL INSERT INTO 语法INSERT INTO 语句可以有两种编写形式。第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:INSERT INTO table_nameVALUES (value1,value2,value3,...);第二种形式需要指定列名及被插入的值:IN...原创 2019-07-07 11:59:38 · 1369 阅读 · 0 评论 -
SQL : UPDATE 语句
SQL UPDATE 语句UPDATE 语句用于更新表中已存在的记录。SQL UPDATE 语法UPDATE table_nameSET column1=value1,column2=value2,...WHERE some_column=some_value;Update 警告!在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:UPDATE W...原创 2019-07-07 12:04:43 · 1295 阅读 · 0 评论 -
SQL : 练习题-32题
求每门课程的学生人数select sc.CId,count(*) as 学生人数from scGROUP BY sc.CId;原创 2019-07-16 15:33:37 · 110 阅读 · 0 评论 -
SQL : 练习题-33题
成绩不重复,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩用having max()理论上也是对的,但是下面那种按分数排序然后取limit 1的更直观可靠select student.*, sc.score, sc.cid from student, teacher, course,sc where teacher.tid = course.tidand sc.sid =...原创 2019-07-16 15:34:35 · 145 阅读 · 0 评论 -
SQL : 练习题-34题
成绩有重复的情况下,查询选修「张三」老师所授课程的学生中,成绩最高的学生信息及其成绩为了验证这一题,先修改原始数据UPDATE sc SET score=90where sid = "07"and cid ="02";这样张三老师教的02号课就有两个学生同时获得90的最高分了。这道题的思路继续上一题,我们已经查询到了符合限定条件的最高分了,这个时候只用比较这张表,找到全部score等...原创 2019-07-16 15:35:30 · 438 阅读 · 0 评论 -
SQL : 练习题-35题
查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩同上,在这里用了inner join后会有概念是重复的记录:“01 课与 03课”=“03 课与 01 课”,所以这里取唯一可以直接用group byselect a.cid, a.sid, a.score from sc as ainner join sc as bon a.sid = b.sidand a.cid != b...原创 2019-07-16 15:36:08 · 207 阅读 · 0 评论 -
SQL : 练习题-36题
查询每门功成绩最好的前两名select a.sid,a.cid,a.score from sc as a left join sc as b on a.cid = b.cid and a.score<b.scoregroup by a.cid, a.sidhaving count(b.cid)<2order by a.cid;...原创 2019-07-16 15:36:46 · 186 阅读 · 0 评论