sql经典练习题n.0版

本文提供了一系列SQL查询题目,涵盖学生、教师、课程和成绩表的数据操作,包括查询特定列、过滤条件、排序、聚合函数等,旨在帮助读者巩固和提升SQL技能。
摘要由CSDN通过智能技术生成

####原文章:https://blog.csdn.net/qaz13177_58_/article/details/5575711/
####因为时间过去了八年,所以当时的一些语法在现在的sql数据库中已经不适用了,在原文章的基础上做了一些改进。


###第一步:在数据库中创建四个表并插入数据

CREATE TABLE STUDENT
(SNO VARCHAR(3) NOT NULL,
SNAME VARCHAR(4) NOT NULL,
SSEX VARCHAR(2) NOT NULL,
SBIRTHDAY DATETIME,
CLASS VARCHAR(5))

CREATE TABLE COURSE
(CNO VARCHAR(5) NOT NULL,
CNAME VARCHAR(10) NOT NULL,
TNO VARCHAR(10) NOT NULL)

CREATE TABLE SCORE
(SNO VARCHAR(3) NOT NULL,
CNO VARCHAR(5) NOT NULL,
DEGREE NUMERIC(10, 1) NOT NULL)

 CREATE TABLE TEACHER
(TNO VARCHAR(3) NOT NULL,
TNAME VARCHAR(4) NOT NULL, TSEX VARCHAR(2) NOT NULL,
TBIRTHDAY DATETIME NOT NULL, PROF VARCHAR(6),
DEPART VARCHAR(10) NOT NULL)


INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (108 ,'曾华'
,'男' ,'1977-09-01',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (105 ,'匡明'
,'男' ,'1975-10-02',95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (107 ,'王丽'
,'女' ,'1976-01-23',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (101 ,'李军'
,'男' ,'1976-02-20',95033);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (109 ,'王芳'
,'女' ,'1975-02-10',95031);
INSERT INTO STUDENT (SNO,SNAME,SSEX,SBIRTHDAY,CLASS) VALUES (103 ,'陆君'
,'男' ,'1974-06-03',95031);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-105' ,'计算机导论',825)
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('3-245' ,'操作系统' ,804);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('6-166' ,'数据电路' ,856);
INSERT INTO COURSE(CNO,CNAME,TNO)VALUES ('9-888' ,'高等数学' ,100);

INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-245',86);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-245',75);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-245',68);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (103,'3-105',92);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (105,'3-105',88);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (109,'3-105',76);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'3-105',64);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'3-105',91);
INSERT 
好的,以下是经典的51道SQL查询练习题: 1. 查询表中所有记录 ``` SELECT * FROM table_name; ``` 2. 查询表中的某些列 ``` SELECT column_name1, column_name2 FROM table_name; ``` 3. 查询表中不重复的某些列 ``` SELECT DISTINCT column_name1, column_name2 FROM table_name; ``` 4. 按条件查询表中的记录 ``` SELECT * FROM table_name WHERE condition; ``` 5. 对查询结果进行排序 ``` SELECT * FROM table_name ORDER BY column_name; ``` 6. 对查询结果进行倒序排序 ``` SELECT * FROM table_name ORDER BY column_name DESC; ``` 7. 查询表中前 n 条记录 ``` SELECT * FROM table_name LIMIT n; ``` 8. 查询表中第 m 条到第 n 条记录 ``` SELECT * FROM table_name LIMIT m, n-m+1; ``` 9. 对查询结果进行计数 ``` SELECT COUNT(*) FROM table_name; ``` 10. 对查询结果进行求和 ``` SELECT SUM(column_name) FROM table_name; ``` 11. 对查询结果进行平均值计算 ``` SELECT AVG(column_name) FROM table_name; ``` 12. 对查询结果进行最大值计算 ``` SELECT MAX(column_name) FROM table_name; ``` 13. 对查询结果进行最小值计算 ``` SELECT MIN(column_name) FROM table_name; ``` 14. 对查询结果进行分组计算 ``` SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; ``` 15. 对查询结果进行分组计算并进行排序 ``` SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY COUNT(*) DESC; ``` 16. 对查询结果进行多条件查询 ``` SELECT * FROM table_name WHERE condition1 AND condition2; ``` 17. 对查询结果进行模糊查询 ``` SELECT * FROM table_name WHERE column_name LIKE '%keyword%'; ``` 18. 对查询结果进行通配符查询 ``` SELECT * FROM table_name WHERE column_name LIKE '_keyword'; ``` 19. 对查询结果进行多表查询 ``` SELECT * FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 20. 对查询结果进行多表联合查询 ``` SELECT * FROM table_name1 UNION SELECT * FROM table_name2; ``` 21. 对查询结果进行多表交集查询 ``` SELECT * FROM table_name1 INTERSECT SELECT * FROM table_name2; ``` 22. 对查询结果进行多表差集查询 ``` SELECT * FROM table_name1 EXCEPT SELECT * FROM table_name2; ``` 23. 对查询结果进行子查询 ``` SELECT * FROM table_name WHERE column_name IN (SELECT column_name FROM another_table WHERE condition); ``` 24. 对查询结果进行连接查询 ``` SELECT * FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 25. 对查询结果进行左连接查询 ``` SELECT * FROM table_name1 LEFT OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 26. 对查询结果进行右连接查询 ``` SELECT * FROM table_name1 RIGHT OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 27. 对查询结果进行全连接查询 ``` SELECT * FROM table_name1 FULL OUTER JOIN table_name2 ON table_name1.column_name=table_name2.column_name; ``` 28. 对查询结果进行自连接查询 ``` SELECT * FROM table_name t1, table_name t2 WHERE t1.column_name=t2.column_name; ``` 29. 对查询结果进行临时表查询 ``` CREATE TEMPORARY TABLE temp_table_name AS SELECT * FROM table_name WHERE condition; SELECT * FROM temp_table_name; ``` 30. 对查询结果进行自定义列名 ``` SELECT column_name1 AS name1, column_name2 AS name2 FROM table_name; ``` 31. 对查询结果进行多条件排序 ``` SELECT * FROM table_name ORDER BY column_name1 ASC, column_name2 DESC; ``` 32. 对查询结果进行多表连接查询并进行分组计算 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1; ``` 33. 对查询结果进行多表连接查询并进行聚合计算 ``` SELECT table_name1.column_name1, SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1; ``` 34. 对查询结果进行多表连接查询并进行统计计算 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1; ``` 35. 对查询结果进行分页查询 ``` SELECT * FROM table_name LIMIT m, n-m+1; ``` 36. 对查询结果进行日期计算 ``` SELECT DATE_ADD(date_column, INTERVAL 1 MONTH) FROM table_name; ``` 37. 对查询结果进行日期格式化 ``` SELECT DATE_FORMAT(date_column, '%Y-%m-%d') FROM table_name; ``` 38. 对查询结果进行日期比较 ``` SELECT * FROM table_name WHERE DATEDIFF(date_column1, date_column2) > 30; ``` 39. 对查询结果进行日期范围查询 ``` SELECT * FROM table_name WHERE date_column BETWEEN 'start_date' AND 'end_date'; ``` 40. 对查询结果进行日期部分提取 ``` SELECT YEAR(date_column), MONTH(date_column), DAY(date_column) FROM table_name; ``` 41. 对查询结果进行多表连接查询并进行分组计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC; ``` 42. 对查询结果进行多表连接查询并进行多条件排序 ``` SELECT * FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name ORDER BY table_name1.column_name1 ASC, table_name2.column_name2 DESC; ``` 43. 对查询结果进行多表连接查询并进行多条件分组计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC; ``` 44. 对查询结果进行多表连接查询并进行多条件聚合计算和排序 ``` SELECT table_name1.column_name1, SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY SUM(table_name2.column_name2) DESC; ``` 45. 对查询结果进行多表连接查询并进行多条件统计计算和排序 ``` SELECT table_name1.column_name1, COUNT(*) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) ASC; ``` 46. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC; ``` 47. 对查询结果进行多表连接查询并进行多条件统计计算、聚合计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) ASC, SUM(table_name2.column_name2) DESC; ``` 48. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算和排序 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC; ``` 49. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序和分页查询 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1; ``` 50. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序、分页查询和列过滤 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1 OFFSET k ROWS FETCH NEXT l ROWS ONLY; ``` 51. 对查询结果进行多表连接查询并进行多条件分组计算、聚合计算、统计计算、排序、分页查询、列过滤和条件过滤 ``` SELECT table_name1.column_name1, COUNT(*), SUM(table_name2.column_name2), AVG(table_name2.column_name2) FROM table_name1 JOIN table_name2 ON table_name1.column_name=table_name2.column_name WHERE condition GROUP BY table_name1.column_name1 HAVING COUNT(*) > 10 ORDER BY COUNT(*) DESC, SUM(table_name2.column_name2) ASC LIMIT m, n-m+1 OFFSET k ROWS FETCH NEXT l ROWS ONLY; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值