博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqylog 50道练习题
阅读量:5878 次
发布时间:2019-06-19

本文共 7116 字,大约阅读时间需要 23 分钟。

CREATE TABLE student /*第一个表*/

(

sno INT,

sname VARCHAR(5),

ssex VARCHAR(4),

sbirthday DATE,

class VARCHAR(5)

)

INSERT INTO student VALUES (108,'曾华','男','1977-9-1',95033);

INSERT INTO student VALUES (105,'匡明','男','1975-10-2',95031);

INSERT INTO student VALUES (107,'王丽','女','1976-1-23',95033);

INSERT INTO student VALUES (101,'李军','男','1976-2-20',95033);

INSERT INTO student VALUES (109,'王芳','女','1975-2-10',95031);

INSERT INTO student VALUES (103,'陆君','男','1974-6-3',95031);

SELECT * FROM student

CREATE TABLE course/*第二个表*/
(
cno VARCHAR(5) NOT NULL,
cname VARCHAR(10) NOT NULL,
tno VARCHAR(5) NOT NULL
)
INSERT INTO course VALUES ('3-105','计算机导论','825');

INSERT INTO course VALUES ('3-245','操作系统','804');

INSERT INTO course VALUES ('6-166','数字电路','856');

INSERT INTO course VALUES ('9-888','高等数学','831');

SELECT * FROM course

CREATE TABLE score /*第三个表*/

(

sno INT,

cno VARCHAR(10),

degree INT

)

INSERT INTO score VALUES ('103','3-245',86);

INSERT INTO score VALUES ('105','3-245',75);

INSERT INTO score VALUES ('109','3-245',68);

INSERT INTO score VALUES ('103','3-105',92);

INSERT INTO score VALUES ('105','3-105',88);

INSERT INTO score VALUES ('109','3-105',76);

INSERT INTO score VALUES ('101','3-105',64);

INSERT INTO score VALUES ('107','3-105',91);

INSERT INTO score VALUES ('108','3-105',78);

INSERT INTO score VALUES ('101','6-166',85);

INSERT INTO score VALUES ('107','6-166',79);

INSERT INTO score VALUES ('108','6-166',81);

SELECT * FROM score

 

CREATE TABLE teacher/*第四个表*/

(

tno INT,

tname VARCHAR(10),

tsex VARCHAR(5),

tbirthday DATE,

Prof VARCHAR(5),

depart VARCHAR(10)

)

INSERT INTO teacher VALUES (804,'李成','男','1958-12-2','副教授','计算机系');

INSERT INTO teacher VALUES (856,'张旭','男','1969-3-12','讲师','电子工程系');

INSERT INTO teacher VALUES (825,'王萍','女','1972-5-5','助教','计算机系');

INSERT INTO teacher VALUES (831,'刘冰','女','1977-8-14','助教','电子工程系');

 

SELECT * FROM score

SELECT * FROM course

SELECT * FROM student

SELECT * FROM teacher

/*1、查询Student表中的所有记录的Sname、Ssex和Class列。*/
SELECT sname,ssex,class FROM student;

/*2、 查询教师所有的单位即不重复的Depart列。*/
SELECT * FROM teacher;
SELECT DISTINCT depart FROM teacher;

/*3、 查询Student表的所有记录。*/
SELECT * FROM student;

/*4、 查询Score表中成绩在60到80之间的所有记录。。*/
SELECT * FROM score WHERE degree>60 AND degree<80;

/*5、 查询Score表中成绩为85,86或88的记录。*/
SELECT * FROM score WHERE degree IN(85,86,88);

/*6、查询Student表中“95031”班或性别为“女”的同学记录。*/
SELECT * FROM student WHERE class="95031" OR ssex='女';

/*7、以Class降序查询Student表的所有记录。*/
SELECT * FROM student ORDER BY class DESC;

/*8、以Cno升序、Degree降序查询Score表的所有记录。*/
SELECT * FROM score ORDER BY cno ASC, degree DESC;

/*9、查询“95031”班的学生人数。*/
SELECT * FROM student WHERE class='95031';
SELECT COUNT(*) AS '95031班的人数' FROM student WHERE class="95031";

/*10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)*/
SELECT sno,cno,MAX(degree) FROM score /*最高分的学生号课程号*/
GROUP BY sno,cno;/*排序*/

/*11、查询每门课的平均成绩*/
SELECT cno,AVG(degree) AS 平均分 FROM score GROUP BY cno;

/*12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。*/
SELECT cno,AVG(degree) FROM score GROUP BY cno HAVING COUNT(sno)>5 AND cno LIKE '3%';

/*13、查询分数大于70,小于90的Sno列。*/
SELECT sno FROM score WHERE degree>70 AND degree<90;

/*14、查询所有学生的Sname、Cno和Degree列。*/
SELECT sname,cno,degree FROM score

JOIN student ON student.sno=score.sno;

/*15、查询所有学生的Sno、Cname和Degree列。*/
SELECT * FROM course;

SELECT * FROM score;

SELECT sno,cname,degree FROM score

JOIN course ON course.cno=score.sno;

 

/*16、查询所有学生的Sname、Cname和Degree列。*/
SELECT cname,sname,degree FROM score

JOIN course ON course.cno=score.cno

JOIN student ON student.sno=score.sno;

/*17、 查询“95033”班学生的平均分。*/
SELECT * FROM course;

SELECT * FROM student;

SELECT * FROM score;

SELECT AVG(degree) AS '95033平均分'FROM score WHERE sno IN(SELECT sno FROM student WHERE class="95033");

 

/*18、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。*/

/*20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。*/
SELECT * FROM student WHERE sno =

/*21、 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录*/

SELECT * FROM score WHERE degree > (SELECT degree FROM score WHERE sno='109' AND cno='3-105');

/*22、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。*/
SELECT * FROM student WHERE YEAR(Sbirthday) LIKE (SELECT YEAR(sbirthday) FROM student WHERE sno='108')AND sno=108;

/*查询“张旭“教师任课的学生成绩(姓名)。*/
SELECT * FROM score WHERE cno IN(SELECT cno FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tname='张旭'));

/*查询考计算机导论的学生成绩*/
SELECT * FROM student WHERE sno IN(SELECT sno FROM score WHERE cno IN(SELECT cno FROM course WHERE cname='计算机导论'));

/*查询李诚老师教的课程名称*/
SELECT * FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tname='李成');

/*教高等数学的老师是哪个系的*/
SELECT * FROM teacher WHERE tno IN(SELECT tno FROM course WHERE cname='高等数学');

/*24、查询选修某课程的同学人数多于5人的教师姓名。*/
SELECT * FROM teacher WHERE tno IN(SELECT tno FROM course WHERE cno IN(SELECT cno FROM score GROUP BY cno HAVING COUNT(sno>5)));

/*25、查询95033班和95031班全体学生的记录。*/
SELECT * FROM student WHERE class IN('95033','95031');

/*26、 查询存在有85分以上成绩的课程Cno.*/
SELECT * FROM score WHERE degree>85;

/*27、查询出“计算机系“教师所教课程的成绩表。*/
SELECT * FROM course WHERE tno IN (SELECT tno FROM teacher WHERE depart='计算机系');

/*29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学 的Cno、Sno和Degree,并按Degree从高到低次序排序。*/
SELECT * FROM score WHERE cno = '3-105' AND degree>(SELECT MAX(degree) FROM score WHERE cno = '3-245')ORDER BY degree DESC;

/*30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的 Cno、Sno和Degree.*/
SELECT cno,sno,degree FROM score WHERE cno='3-105' AND degree>(SELECT MAX(degree) FROM score WHERE cno='3-245')

/*31、 查询所有教师和同学的name、sex和birthday.*/
SELECT tname,tsex,tbirthday FROM teacher UNION SELECT sname,ssex,sbirthday FROM student;

/*32、查询所有“女”教师和“女”同学的name、sex和birthday.*/
SELECT tname,tsex,tbirthday FROM teacher WHERE tsex='女' UNION SELECT sname,ssex,sbirthday FROM student WHERE ssex='女';

/*33、 查询成绩比该课程平均成绩低的同学的成绩表。*/
SELECT * FROM score WHERE degree<(SELECT AVG(degree) FROM score)

/*34、 查询所有任课教师的Tname和Depart.*/
SELECT tname,depart FROM teacher

/*35、查询所有未讲课的教师的Tname和Depart. */
SELECT * FROM teacher WHERE tno NOT IN(SELECT tno FROM course);

/*36、查询至少有2名男生的班号。*/
SELECT class FROM student GROUP BY class HAVING COUNT(class)>=2

/*37、查询Student表中不姓“王”的同学记录。*/
SELECT * FROM student WHERE sname NOT LIKE'王%'

/*38、查询Student表中每个学生的姓名和年龄。*/
SELECT sname,DATEDIFF(MONTH,'2018.07-12',CURRENT_TIMESTAMP)/12 AS '年龄' FROM student

/*39、查询Student表中最大和最小的Sbirthday日期值。*/
SELECT MAX(sbirthday) AS 最大值,MIN(sbirthday) AS 最小值 FROM student

/*40、以班号和年龄从大到小的顺序查询Student表中的全部记录。*/
SELECT * FROM student GROUP BY class ASC,DATEDIFF(YEAR,sbirthday ,'2014-11-9') ASC

/*41、查询“男”教师及其所上的课程。*/
SELECT cname FROM course WHERE tno IN(SELECT tno FROM teacher WHERE tsex='男')

/*42、查询最高分同学的Sno、Cno和Degree列。*/
SELECT *FROM score WHERE degree IN(SELECT MAX(degree) FROM score )

/*43、查询和“李军”同性别的所有同学的Sname.*/
SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军')

/*44、查询和“李军”同性别并同班的同学Sname.*/
SELECT sname FROM student WHERE ssex=(SELECT ssex FROM student WHERE sname='李军') AND class=(SELECT class FROM student WHERE sname='李军');

/*45、查询所有选修“计算机导论”课程的“男”同学的成绩表。*/
SELECT * FROM student WHERE sno IN(SELECT sno FROM score WHERE cno IN(SELECT cno FROM course WHERE cname='计算机导论'))

 

 

 

其中有几个不对的。

转载于:https://www.cnblogs.com/a709898670/p/9303163.html

你可能感兴趣的文章
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
Python学习笔记
查看>>
java String
查看>>
renhook的使用
查看>>
Linux学习笔记(十二)--命令学习(用户创建、删除等)
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>
Zabbix汉化方法
查看>>
Java I/O系统基础知识
查看>>
Java多线程设计模式(2)生产者与消费者模式
查看>>
基于whoosh的flask全文搜索插件flask-msearch
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>
Ansible playbook 使用
查看>>
for/foreach/linq执行效率测试
查看>>