一、表关系

请创建如下表,并创建相关约束

二、操作表

1、自行创建测试数据

  1. /*
  2. Navicat MySQL Data Transfer
  3.  
  4. Source Server : mysql5.7.1
  5. Source Server Version : 50717
  6. Source Host : localhost:3306
  7. Source Database : crm
  8.  
  9. Target Server Type : MYSQL
  10. Target Server Version : 50717
  11. File Encoding : 65001
  12.  
  13. Date: 2017-02-24 09:50:15
  14. */
  15.  
  16. SET FOREIGN_KEY_CHECKS=0;
  17.  
  18. -- ----------------------------
  19. -- Table structure for class
  20. -- ----------------------------
  21. DROP TABLE IF EXISTS `class`;
  22. CREATE TABLE `class` (
  23. `cid` int(11) NOT NULL AUTO_INCREMENT,
  24. `caption` varchar(32) NOT NULL,
  25. PRIMARY KEY (`cid`)
  26. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
  27.  
  28. -- ----------------------------
  29. -- Records of class
  30. -- ----------------------------
  31. INSERT INTO `class` VALUES ('', '三年二班');
  32. INSERT INTO `class` VALUES ('', '三年三班');
  33. INSERT INTO `class` VALUES ('', '一年二班');
  34. INSERT INTO `class` VALUES ('', '二年九班');
  35.  
  36. -- ----------------------------
  37. -- Table structure for course
  38. -- ----------------------------
  39. DROP TABLE IF EXISTS `course`;
  40. CREATE TABLE `course` (
  41. `cid` int(11) NOT NULL AUTO_INCREMENT,
  42. `cname` varchar(32) NOT NULL,
  43. `teacher_id` int(11) NOT NULL,
  44. PRIMARY KEY (`cid`),
  45. KEY `fk_course_teacher` (`teacher_id`),
  46. CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
  47. ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
  48.  
  49. -- ----------------------------
  50. -- Records of course
  51. -- ----------------------------
  52. INSERT INTO `course` VALUES ('', '生物', '');
  53. INSERT INTO `course` VALUES ('', '物理', '');
  54. INSERT INTO `course` VALUES ('', '体育', '');
  55. INSERT INTO `course` VALUES ('', '美术', '');
  56.  
  57. -- ----------------------------
  58. -- Table structure for score
  59. -- ----------------------------
  60. DROP TABLE IF EXISTS `score`;
  61. CREATE TABLE `score` (
  62. `sid` int(11) NOT NULL AUTO_INCREMENT,
  63. `student_id` int(11) NOT NULL,
  64. `course_id` int(11) NOT NULL,
  65. `num` int(11) NOT NULL,
  66. PRIMARY KEY (`sid`),
  67. KEY `fk_score_student` (`student_id`),
  68. KEY `fk_score_course` (`course_id`),
  69. CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
  70. CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
  71. ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;
  72.  
  73. -- ----------------------------
  74. -- Records of score
  75. -- ----------------------------
  76. INSERT INTO `score` VALUES ('', '', '', '');
  77. INSERT INTO `score` VALUES ('', '', '', '');
  78. INSERT INTO `score` VALUES ('', '', '', '');
  79. INSERT INTO `score` VALUES ('', '', '', '');
  80. INSERT INTO `score` VALUES ('', '', '', '');
  81. INSERT INTO `score` VALUES ('', '', '', '');
  82. INSERT INTO `score` VALUES ('', '', '', '');
  83. INSERT INTO `score` VALUES ('', '', '', '');
  84. INSERT INTO `score` VALUES ('', '', '', '');
  85. INSERT INTO `score` VALUES ('', '', '', '');
  86. INSERT INTO `score` VALUES ('', '', '', '');
  87. INSERT INTO `score` VALUES ('', '', '', '');
  88. INSERT INTO `score` VALUES ('', '', '', '');
  89. INSERT INTO `score` VALUES ('', '', '', '');
  90. INSERT INTO `score` VALUES ('', '', '', '');
  91. INSERT INTO `score` VALUES ('', '', '', '');
  92. INSERT INTO `score` VALUES ('', '', '', '');
  93. INSERT INTO `score` VALUES ('', '', '', '');
  94. INSERT INTO `score` VALUES ('', '', '', '');
  95. INSERT INTO `score` VALUES ('', '', '', '');
  96. INSERT INTO `score` VALUES ('', '', '', '');
  97. INSERT INTO `score` VALUES ('', '', '', '');
  98. INSERT INTO `score` VALUES ('', '', '', '');
  99. INSERT INTO `score` VALUES ('', '', '', '');
  100. INSERT INTO `score` VALUES ('', '', '', '');
  101. INSERT INTO `score` VALUES ('', '', '', '');
  102. INSERT INTO `score` VALUES ('', '', '', '');
  103. INSERT INTO `score` VALUES ('', '', '', '');
  104. INSERT INTO `score` VALUES ('', '', '', '');
  105. INSERT INTO `score` VALUES ('', '', '', '');
  106. INSERT INTO `score` VALUES ('', '', '', '');
  107. INSERT INTO `score` VALUES ('', '', '', '');
  108. INSERT INTO `score` VALUES ('', '', '', '');
  109. INSERT INTO `score` VALUES ('', '', '', '');
  110. INSERT INTO `score` VALUES ('', '', '', '');
  111. INSERT INTO `score` VALUES ('', '', '', '');
  112. INSERT INTO `score` VALUES ('', '', '', '');
  113. INSERT INTO `score` VALUES ('', '', '', '');
  114. INSERT INTO `score` VALUES ('', '', '', '');
  115. INSERT INTO `score` VALUES ('', '', '', '');
  116. INSERT INTO `score` VALUES ('', '', '', '');
  117. INSERT INTO `score` VALUES ('', '', '', '');
  118. INSERT INTO `score` VALUES ('', '', '', '');
  119. INSERT INTO `score` VALUES ('', '', '', '');
  120. INSERT INTO `score` VALUES ('', '', '', '');
  121. INSERT INTO `score` VALUES ('', '', '', '');
  122. INSERT INTO `score` VALUES ('', '', '', '');
  123.  
  124. -- ----------------------------
  125. -- Table structure for student
  126. -- ----------------------------
  127. DROP TABLE IF EXISTS `student`;
  128. CREATE TABLE `student` (
  129. `sid` int(11) NOT NULL AUTO_INCREMENT,
  130. `gender` char(1) NOT NULL,
  131. `class_id` int(11) NOT NULL,
  132. `sname` varchar(32) NOT NULL,
  133. PRIMARY KEY (`sid`),
  134. KEY `fk_class` (`class_id`),
  135. CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
  136. ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
  137.  
  138. -- ----------------------------
  139. -- Records of student
  140. -- ----------------------------
  141. INSERT INTO `student` VALUES ('', '男', '', '刘洋');
  142. INSERT INTO `student` VALUES ('', '女', '', '钢蛋');
  143. INSERT INTO `student` VALUES ('', '男', '', '刘泽栋');
  144. INSERT INTO `student` VALUES ('', '男', '', '张少博');
  145. INSERT INTO `student` VALUES ('', '女', '', '张少强');
  146. INSERT INTO `student` VALUES ('', '男', '', '王飞');
  147. INSERT INTO `student` VALUES ('', '女', '', '铁锤');
  148. INSERT INTO `student` VALUES ('', '男', '', '李三');
  149. INSERT INTO `student` VALUES ('', '男', '', '李一');
  150. INSERT INTO `student` VALUES ('', '女', '', '李二');
  151. INSERT INTO `student` VALUES ('', '男', '', '李四');
  152. INSERT INTO `student` VALUES ('', '女', '', '王鹏');
  153. INSERT INTO `student` VALUES ('', '男', '', '刘明');
  154. INSERT INTO `student` VALUES ('', '男', '', '刘刚');
  155. INSERT INTO `student` VALUES ('', '女', '', '刘二');
  156. INSERT INTO `student` VALUES ('', '男', '', '刘四');
  157.  
  158. -- ----------------------------
  159. -- Table structure for teacher
  160. -- ----------------------------
  161. DROP TABLE IF EXISTS `teacher`;
  162. CREATE TABLE `teacher` (
  163. `tid` int(11) NOT NULL AUTO_INCREMENT,
  164. `tname` varchar(32) NOT NULL,
  165. PRIMARY KEY (`tid`)
  166. ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
  167.  
  168. -- ----------------------------
  169. -- Records of teacher
  170. -- ----------------------------
  171. INSERT INTO `teacher` VALUES ('', '马云老师');
  172. INSERT INTO `teacher` VALUES ('', '刘强东老师');
  173. INSERT INTO `teacher` VALUES ('', '马化腾老师');
  174. INSERT INTO `teacher` VALUES ('', '丁磊老师');
  175. INSERT INTO `teacher` VALUES ('', '王建宁老师');
  176. INSERT INTO `teacher` VALUES ('', '李杰老师');

2、操作

  1. --
  2. -- 1、自行创建测试数据
  3. --
  4. -- 2、查询“生物”课程比“物理”课程成绩高的所有学生的学号;
  5. -- SELECT
  6. -- A.student_id,A.num
  7. -- FROM
  8. -- (
  9. -- SELECT
  10. -- score.sid,
  11. -- score.student_id,
  12. -- course.cname,
  13. -- score.num
  14. -- FROM
  15. -- score
  16. -- LEFT JOIN course ON score.course_id = course.cid
  17. -- WHERE
  18. -- course.cname = "生物"
  19. -- ) AS A
  20. --
  21. -- INNER JOIN (
  22. --
  23. -- SELECT
  24. -- score.sid,
  25. -- score.student_id,
  26. -- course.cname,
  27. -- score.num
  28. -- FROM
  29. -- score
  30. -- LEFT JOIN course ON score.course_id = course.cid
  31. -- WHERE
  32. -- course.cname = "物理"
  33. -- ) AS B ON A.student_id = B.student_id
  34. -- WHERE
  35. -- A.num > B.num --
  36.  
  37. -- 3、查询平均成绩大于60分的同学的学号和平均成绩;
  38. -- SELECT
  39. -- B.student_id,
  40. -- student.sname,
  41. -- B.aa
  42. -- FROM
  43. -- (
  44. -- SELECT
  45. -- student_id,
  46. -- avg(num) AS aa
  47. -- FROM
  48. -- score
  49. -- GROUP BY
  50. -- student_id
  51. -- HAVING
  52. -- avg(num) > 60
  53. -- ) AS B
  54. -- LEFT JOIN student ON B.student_id = student.sid
  55.  
  56. -- 4、查询所有同学的学号、姓名、选课数、总成绩;
  57. -- SELECT
  58. -- score.student_id,
  59. -- count(course_id),
  60. -- student.sname,
  61. -- sum(num)
  62. -- FROM
  63. -- score
  64. -- LEFT JOIN student ON score.student_id = student.sid
  65. -- GROUP BY
  66. -- score.student_id;
  67. --
  68. --
  69. -- 5、查询姓“李”的老师的个数;
  70. -- select tid from teacher where tname like '李%';
  71. --
  72. -- 6、查询没学过“李平”老师课的同学的学号、姓名;
  73. -- SELECT
  74. -- student.sid,
  75. -- student.sname
  76. -- FROM
  77. -- student
  78. -- WHERE
  79. -- sid NOT IN (
  80. -- SELECT
  81. -- student_id
  82. -- FROM
  83. -- score
  84. -- WHERE
  85. -- course_id IN (
  86. -- SELECT
  87. -- course.cid
  88. -- FROM
  89. -- course
  90. -- LEFT JOIN teacher ON course.teacher_id = teacher.tid
  91. -- WHERE
  92. -- teacher.tname = "李平老师"
  93. -- )
  94. -- GROUP BY
  95. -- student_id
  96. -- )
  97. --
  98. --
  99. -- 7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
  100. -- SELECT
  101. -- student_id,
  102. -- student.sname
  103. -- FROM
  104. -- (
  105. -- SELECT
  106. -- student_id,
  107. -- course_id
  108. -- FROM
  109. -- score
  110. -- WHERE
  111. -- score.course_id = 1
  112. -- OR score.course_id = 2
  113. -- ) AS A
  114. -- LEFT JOIN student ON A.student_id = student.sid
  115. -- GROUP BY
  116. -- student_id
  117. -- HAVING
  118. -- count(student_id) > 1;
  119. --
  120.  
  121. -- 8、查询学过“李平”老师所教的所有课的同学的学号、姓名;
  122.  
  123. -- SELECT
  124. -- student_id
  125. -- FROM
  126. -- score
  127. -- WHERE
  128. -- course_id IN (
  129. -- SELECT
  130. -- cid
  131. -- FROM
  132. -- course
  133. -- LEFT JOIN teacher ON teacher_id = teacher.tid
  134. -- WHERE
  135. -- teacher.tname = "李平老师"
  136. -- )
  137. -- GROUP BY
  138. -- student_id
  139. -- HAVING
  140. -- count(course_id) = (
  141. -- SELECT
  142. -- count(cid)
  143. -- FROM
  144. -- course
  145. -- LEFT JOIN teacher ON teacher_id = teacher.tid
  146. -- WHERE
  147. -- teacher.tname = "李平老师"
  148. -- )
  149. --
  150.  
  151. -- 9、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
  152. -- SELECT
  153. --
  154. -- A.student_id,A.num
  155. -- FROM
  156. -- (
  157. -- SELECT
  158. -- score.sid,
  159. -- score.student_id,
  160. -- score.course_id,
  161. -- score.num
  162. -- FROM
  163. -- score
  164. -- LEFT JOIN course ON score.course_id = course.cid
  165. -- WHERE
  166. -- score.course_id = 1
  167. -- ) AS A
  168. --
  169. -- INNER JOIN
  170. --
  171. -- (
  172. -- SELECT
  173. -- score.sid,
  174. -- score.student_id,
  175. -- score.course_id,
  176. -- score.num
  177. -- FROM
  178. -- score
  179. -- LEFT JOIN course ON score.course_id = course.cid
  180. -- WHERE
  181. -- score.course_id = 2)
  182. --
  183. -- AS B ON A.student_id = B.student_id
  184. -- WHERE
  185. -- A.num > B.num
  186. --
  187.  
  188. -- 10、查询有课程成绩小于60分的同学的学号、姓名;
  189. --
  190. -- SELECT
  191. -- score.student_id,
  192. -- student.sname
  193. -- FROM
  194. -- score
  195. -- LEFT JOIN student ON score.student_id = student.sid
  196. -- WHERE
  197. -- score.num < 60
  198. -- GROUP BY
  199. -- student_id;
  200.  
  201. --
  202. -- 11、查询没有学全所有课的同学的学号、姓名;
  203. -- select
  204. -- student_id,
  205. -- student.sname
  206. -- FROM
  207. -- score
  208. -- LEFT JOIN student ON score.student_id = student.sid
  209. -- GROUP BY
  210. -- score.student_id
  211. -- HAVING count(1) < (select count(cid) from course);
  212. --
  213. --
  214. -- 12、查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;
  215. -- SELECT
  216. -- student_id,
  217. -- student.sname
  218. -- FROM
  219. -- score
  220. -- LEFT JOIN student ON score.student_id = student.sid
  221. -- WHERE
  222. -- student_id != 1
  223. -- AND course_id IN (
  224. -- SELECT
  225. -- course_id
  226. -- FROM
  227. -- score
  228. -- WHERE
  229. -- student_id = 1
  230. -- )
  231. -- GROUP BY
  232. -- student_id
  233.  
  234. -- 13、查询至少学过学号为“001”同学所选课程中任意一门课的其他同学学号和姓名;
  235. -- select course_id from score where student_id=1;
  236.  
  237. -- SELECT
  238. -- student_id,
  239. -- count(1)
  240. -- FROM
  241. -- score
  242. -- WHERE
  243. -- student_id != 1
  244. -- AND course_id IN (
  245. -- SELECT
  246. -- course_id
  247. -- FROM
  248. -- score
  249. -- WHERE
  250. -- student_id = 1
  251. -- )
  252. -- GROUP BY
  253. -- student_id
  254. -- HAVING
  255. -- count(1) = (
  256. -- SELECT
  257. -- count(course_id)
  258. -- FROM
  259. -- score
  260. -- WHERE
  261. -- student_id = 1
  262. -- )
  263. --
  264.  
  265. -- 14、查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名;
  266.  
  267. -- select count(1) from score where student_id=1;
  268.  
  269. -- select student_id,sname from score LEFT JOIN student on score.student_id=student.sid where student_id in (
  270. --
  271. -- select student_id from score where student_id !=1 GROUP BY student_id HAVING count(1)=(select count(1) from score where student_id=1)
  272. --
  273. -- )and course_id in(select course_id from score where student_id=1) GROUP BY student_id having count(1) =(select count(1) from score where student_id=1);
  274. --
  275. --
  276.  
  277. -- 15、删除学习“李平”老师课的SC表记录;
  278. -- DELETE
  279. -- FROM
  280. -- score
  281. -- WHERE
  282. -- course_id IN (
  283. -- SELECT
  284. -- cid
  285. -- FROM
  286. -- course
  287. -- LEFT JOIN teacher ON course.teacher_id = teacher.tid
  288. -- WHERE
  289. -- teacher.tname = "李平"
  290. -- )
  291. --
  292. --
  293. -- 16、向SC表中插入一些记录,这些记录 要求符合以下条件:①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩;
  294.  
  295. -- 插入表格 insert into tb(student_id,course_id,num) 映射里面加动态值
  296.  
  297. -- select student_id from score where course_id!=2
  298.  
  299. -- SELECT
  300. -- student_id,
  301. -- 2,
  302. -- (
  303. -- SELECT
  304. -- AVG(num)
  305. -- FROM
  306. -- score
  307. -- WHERE
  308. -- course_id = 2
  309. -- )
  310. -- FROM
  311. -- score
  312. -- WHERE
  313. -- course_id != 2
  314.  
  315. -- 17、按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;
  316.  
  317. -- select student_id,
  318. -- (select num from score as s2 where s2.student_id=s1.student_id and course_id=1)as 语文,
  319. -- (select num from score as s2 where s2.student_id=s1.student_id and course_id=1)as 数学,
  320. -- (select num from score as s2 where s2.student_id=s1.student_id and course_id=1)as 英语
  321. -- from score as s1;
  322. --
  323. --
  324. -- 18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
  325.  
  326. -- SELECT
  327. -- course_id,
  328. -- MAX(num),
  329. -- min(num)
  330. -- FROM
  331. -- score
  332. -- GROUP BY
  333. -- course_id
  334. --
  335.  
  336. -- 19、按各科平均成绩从低到高和及格率的百分数从高到低顺序;
  337. -- 运用了 case when xx then xx else xx 判断语句
  338.  
  339. -- SELECT
  340. -- course_id,
  341. -- avg(num),
  342. -- sum(
  343. -- CASE
  344. -- WHEN num < 60 THEN
  345. -- 0
  346. -- ELSE
  347. -- 1
  348. -- END
  349. -- ),
  350. -- sum(1),
  351. -- sum(
  352. -- CASE
  353. -- WHEN num < 60 THEN
  354. -- 0
  355. -- ELSE
  356. -- 1
  357. -- END
  358. -- ) / sum(1) AS jgl
  359. -- FROM
  360. -- score
  361. -- GROUP BY
  362. -- course_id
  363. -- ORDER BY
  364. -- avg(num) ASC,
  365. -- jgl DESC;
  366. --
  367.  
  368. --
  369. -- 20、课程平均分从高到低显示(现实任课老师);
  370. -- 知识点 if(ISNULL(score.num),0,(score.num)) 三元运算
  371.  
  372. -- select score.course_id,avg(num),teacher.tname
  373. -- from score LEFT JOIN course on score.course_id=course.cid
  374. -- LEFT JOIN teacher on teacher.tid=course.teacher_id
  375. -- GROUP BY score.course_id ORDER BY avg(num)desc;
  376.  
  377. --
  378. --
  379. -- 21、查询各科成绩前三名的记录:(不考虑成绩并列情况)
  380. -- select num from score where course_id =1 ORDER BY num desc LIMIT 0,1;
  381. -- select num from score where course_id =1 ORDER BY num desc LIMIT 1,1;
  382. -- select num from score where course_id =1 ORDER BY num desc LIMIT 2,1;
  383. -- select *from
  384. -- (
  385. -- select student_id,course_id,num,1,
  386. -- (select num from score as s2 where s2.course_id=s1.course_id GROUP BY s2.num ORDER BY s2.num desc LIMIT 0,1),
  387. -- (select num from score as s2 where s2.course_id=s1.course_id GROUP BY s2.num ORDER BY s2.num desc LIMIT 3,1)as cc
  388. --
  389. -- from score as s1
  390. -- )as B
  391. -- where B.num >B.cc
  392. --
  393.  
  394. --
  395. -- 22、查询每门课程被选修的学生数;
  396. -- select course_id,count(1) from score GROUP BY score.course_id
  397.  
  398. -- 23、查询出只选修了一门课程的全部学生的学号和姓名;
  399. -- SELECT
  400. -- A.student_id,
  401. -- student.sname
  402. -- FROM
  403. -- (
  404. -- SELECT
  405. -- student_id,
  406. -- count(1)
  407. -- FROM
  408. -- score
  409. -- GROUP BY
  410. -- student_id
  411. -- HAVING
  412. -- count(1) = 1
  413. -- ) AS A
  414. -- LEFT JOIN student ON A.student_id = student.sid
  415. --
  416.  
  417. --
  418. -- 24、查询男生、女生的人数;
  419. -- SELECT
  420. -- *
  421. -- FROM
  422. -- (
  423. -- SELECT
  424. -- count(gender) AS F
  425. -- FROM
  426. -- student
  427. -- WHERE
  428. -- gender = "男"
  429. -- ) AS A,
  430. -- (
  431. -- SELECT
  432. -- count(gender) AS M
  433. -- FROM
  434. -- student
  435. -- WHERE
  436. -- gender = "女"
  437. -- ) AS B
  438. --
  439. --
  440. -- 25、查询姓“张”的学生名单;
  441. -- select *from student where sname like "张%"
  442. --
  443. -- 26、查询同名同姓学生名单,并统计同名人数;
  444.  
  445. -- SELECT
  446. -- sname,
  447. -- count(sname)
  448. -- FROM
  449. -- student
  450. -- GROUP BY
  451. -- sname
  452.  
  453. -- 27、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
  454. -- select course_id,avg(if(isnull(num),0,num))as avg from score GROUP BY course_id ORDER BY avg asc,course_id desc;
  455.  
  456. --
  457. -- 28、查询平均成绩大于85的所有学生的学号、姓名和平均成绩;
  458.  
  459. -- SELECT
  460. -- student_id,
  461. -- sname,
  462. -- avg(IF(isnull(num), 0, num))
  463. -- FROM
  464. -- score
  465. -- LEFT JOIN student ON score.student_id = student.sid
  466. -- GROUP BY
  467. -- student_id
  468. --
  469.  
  470. --
  471. -- 29、查询课程名称为“生物”,且分数低于60的学生姓名和分数;
  472. -- select *from score where num<60 and course_id=(select cid from course where cname="生物")
  473.  
  474. -- select student.sname,score.num from score LEFT JOIN course on score.course_id=course.cid
  475. -- LEFT JOIN student on score.student_id=student.sid where score.num <60 and course.cname="生物"
  476. --
  477. --
  478.  
  479. -- 30、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;
  480. -- SELECT
  481. -- A.student_id,
  482. -- student.sname
  483. -- FROM
  484. -- (
  485. -- SELECT
  486. -- *
  487. -- FROM
  488. -- score
  489. -- WHERE
  490. -- course_id = 3
  491. -- AND score.num > 80
  492. -- ) AS A
  493. -- LEFT JOIN student ON A.student_id = student.sid
  494. --
  495. --
  496. -- 31、求选了课程的学生人数
  497. -- select student_id from score GROUP BY student_id
  498.  
  499. --
  500. -- 32、查询选修“张磊”老师所授课程的学生中,成绩最高的学生姓名及其成绩;
  501.  
  502. -- SELECT
  503. -- sname,
  504. -- num
  505. -- FROM
  506. -- score
  507. -- LEFT JOIN student ON score.student_id = student.sid
  508. -- WHERE
  509. -- score.course_id IN (
  510. -- SELECT
  511. -- course.cid
  512. -- FROM
  513. -- course
  514. -- LEFT JOIN teacher ON course.teacher_id = teacher.tid
  515. -- WHERE
  516. -- tname = '张磊老师'
  517. -- )
  518. -- ORDER BY
  519. -- num DESC
  520. -- LIMIT 1;
  521.  
  522. --
  523. --
  524. -- 33、查询各个课程及相应的选修人数;
  525. -- select course.cname,count(1)from score LEFT JOIN course on score.course_id=course.cid GROUP BY course_id;
  526. --
  527.  
  528. --
  529. -- 34、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
  530.  
  531. -- SELECT DISTINCT
  532. -- s1.course_id,
  533. -- s2.course_id,
  534. -- s1.num,
  535. -- s2.num
  536. -- FROM
  537. -- score AS s1,
  538. -- score AS s2
  539. -- WHERE
  540. -- s1.num = s2.num
  541. -- AND s1.course_id != s2.course_id;
  542. --
  543. --
  544. --
  545. --
  546. -- 35、查询每门课程成绩最好的前两名;
  547.  
  548. -- select *from
  549. -- (
  550. -- select student_id,course_id,num,1,
  551. -- (select num from score as s2 where s2.course_id=s1.course_id GROUP BY s2.num ORDER BY s2.num desc LIMIT 0,1),
  552. -- (select num from score as s2 where s2.course_id=s1.course_id GROUP BY s2.num ORDER BY s2.num desc LIMIT 2,1)as cc
  553. --
  554. -- from score as s1
  555. -- )as B
  556. -- where B.num >B.cc
  557. --
  558.  
  559. -- 36、检索至少选修两门课程的学生学号;
  560.  
  561. -- SELECT
  562. -- student_id,
  563. -- count(1)
  564. -- FROM
  565. -- score
  566. -- GROUP BY
  567. -- student_id
  568. -- HAVING
  569. -- count(1) > 1;
  570.  
  571. -- 37、查询全部学生都选修的课程的课程号和课程名;
  572.  
  573. -- SELECT
  574. -- course_id,
  575. -- count(1)
  576. -- FROM
  577. -- score
  578. -- GROUP BY
  579. -- course_id
  580. -- HAVING
  581. -- count(1) = (SELECT count(1) FROM student);
  582.  
  583. -- 38、查询没学过“李平”老师讲授的任一门课程的学生姓名;
  584.  
  585. -- SELECT
  586. -- *
  587. -- FROM
  588. -- student
  589. -- WHERE
  590. -- sid NOT IN (
  591. -- SELECT
  592. -- student_id
  593. -- FROM
  594. -- score
  595. -- WHERE
  596. -- course_id IN (
  597. -- SELECT
  598. -- cid
  599. -- FROM
  600. -- course
  601. -- LEFT JOIN teacher ON course.teacher_id = teacher.tid
  602. -- WHERE
  603. -- teacher.tname = "李平老师"
  604. -- )
  605. -- )
  606.  
  607. -- 39、查询两门以上不及格课程的同学的学号及其平均成绩;
  608.  
  609. -- 先对学生进行分组 对课程数进行统计,筛选分数小于60
  610. -- SELECT
  611. -- student_id,
  612. -- count(1)
  613. -- FROM
  614. -- score
  615. -- WHERE
  616. -- num < 60
  617. -- GROUP BY
  618. -- student_id
  619. -- HAVING
  620. -- count(1) > 2;
  621.  
  622. -- 40、检索“004”课程分数小于60,按分数降序排列的同学学号;
  623.  
  624. -- 运用了排序方法,order by xx desc方法排序
  625. --
  626. -- SELECT
  627. -- student_id
  628. -- FROM
  629. -- score
  630. -- WHERE
  631. -- course_id = 4
  632. -- AND num < 60
  633. -- ORDER BY
  634. -- num DESC
  635. --
  636.  
  637. -- 41、删除“002”同学的“001”课程的成绩;
  638.  
  639. -- 运用了表格的删除功能 delete from score表格;
  640. -- DELETE
  641. -- FROM
  642. -- score
  643. -- WHERE
  644. -- score.course_id = 1
  645. -- AND score.student_id = 2

mysql基础练习题的更多相关文章

  1. mysql 基础练习题(一)

    一.先创建几个要用的库表 create database zuoye; -- 创建数据库 use zuoye; -- 使用数据库 #创建几个库表 create table Student -- 学生表 ...

  2. Mysql基础教程:(七)MySQL基础练习

    MySQL基础练习 一.创建student和score表 CREATE TABLE student (id INT(10) NOT NULL PRIMARY KEY ,name VARCHAR(20) ...

  3. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  4. Linux基础练习题(二)

    Linux基础练习题(二) 1.复制/etc/skel目录为/home/tuer1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限. [root@www ~]# cp -r ...

  5. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  6. 【夯实Mysql基础】记一次mysql语句的优化过程

    1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使 ...

  7. MySQL基础(非常全)

    MySQL基础 一.MySQL概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access ...

  8. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  9. MySQL 基础语句

    MySQL 基础语句 多个知识点 ----------------------------------------------------------------------------------- ...

随机推荐

  1. selenium 基础(一)

    selenium安装 pip install selenium selenium操作浏览器原理 早期selenium 1.0 用的selenium RC, 后来selenum2集合了selenium1 ...

  2. 51ak带你看MYSQL5.7源码3:修改代码实现你的第一个Mysql版本

    从事DBA工作多年 MYSQL源码也是头一次接触 尝试记录下自己看MYSQL5.7源码的历程 目录: 51ak带你看MYSQL5.7源码1:main入口函数 51ak带你看MYSQL5.7源码2:编译 ...

  3. 如何使用svn命令行更新想要的目录?

    内容来自网络. 一 某些原因想在svn co的时候排除某些目录,可以绕个圈子,分三步来完成:co外层目录:svn checkout --depth empty URL[URL[LOCATION]完成之 ...

  4. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  5. MySQL数据库学习二 MSQL安装和配置

    2.1 下载和安装MySQL软件 2.1.1 基于客户端/服务器(C/S)的数据库管理系统 服务器:MySQL数据库管理系统 客户端:操作MySQL服务器 2.1.2 MySQL的各种版本 社区版(C ...

  6. easyUi五个常用插件

    1.对话框(Dialog) 对话框(dialog)是一个特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏.默认情况下,对话框(dialog)只有一个显示在头部右侧的关闭工具.用户可以配置对话框 ...

  7. 关于使用Unity开发Kinect时出现的Runtime Error错误的解决方式

    一.开发环境: 1. 硬件:Kinect 2.0 2. 操作系统:Windows10 3. Unity版本:5.x以上 4. Kinect SDK:KinectSDK-v2.0_1409 5. Kin ...

  8. ORACLE 11G R2 RAC classical install OGG12.1(LINUX) 经典抽取模式单项同步配置OGG12.1

    博文结构图如下: 一.环境描述以及注意事项 1.1 环境简介 IP 系统 Oracle版本 OGG版本 源端 172.16.10.16/36 RHEL6.5 oracle11204 12.1 目标端 ...

  9. Java基础学习笔记三 Java基础语法

    Scanner类 Scanner类属于引用数据类型,先了解下引用数据类型. 引用数据类型的使用 与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式. 数据类型 变量名 ...

  10. 第十四,十五周PTA作业

    1.第十四周part1 7-3 #include<stdio.h> int main() { int n; scanf("%d",&n); int a[n]; ...