注:基于(https://blog.csdn.net/xiaosa_kun/article/details/84868547)所修改,修改查询语句的第16,27。

1.新建数据库

CREATE DATABASE school;

设有一个数据库school,包括四个表:学生表(student)、课程表(course)、成绩表(score)以及教师信息表(teacher)。用SQL语句创建四个表并完成相关题目。
创建学生表

CREATE TABLE student (sno varchar(20) NOT NULL PRIMARY KEY, sname varchar(20) NOT NULL, ssex varchar(20) NOT NULL, sbirthday datetime, class varchar(20)
) ENGINE = innodb CHARSET = utf8;

创建教师表

CREATE TABLE teacher (tno varchar(20) NOT NULL PRIMARY KEY, tname varchar(20) NOT NULL, tsex varchar(20) NOT NULL, tbirthday datetime, prof varchar(20), depart varchar(20) NOT NULL
) ENGINE = innodb CHARSET = utf8;

创建课程表

CREATE TABLE course (cno varchar(20) NOT NULL PRIMARY KEY, cname varchar(20) NOT NULL, tno varchar(20) NOT NULL, FOREIGN KEY (tno) REFERENCES teacher (tno)
) ENGINE = innodb CHARSET = utf8;

创建成绩表

CREATE TABLE score (sno varchar(20) NOT NULL, FOREIGN KEY (sno) REFERENCES student (sno), cno varchar(20) NOT NULL, FOREIGN KEY (cno) REFERENCES course (cno), degree decimal NOT NULL
) ENGINE = innodb CHARSET = utf8;

2.插入数据库

插入学生表数据

use student;
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);

插入教师表数据

use teacher;
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (804,'李诚','男','1958-12-02','副教授','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (856,'张旭','男','1969-03-12','讲师','电子工程系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (825,'王萍','女','1972-05-05','助教','计算机系');
INSERT INTO TEACHER(TNO,TNAME,TSEX,TBIRTHDAY,PROF,DEPART) VALUES (831,'刘冰','女','1977-08-14','助教','电子工程系');

插入课程表数据

use course;
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' ,'高等数学' ,831);

插入成绩表数据

use score;
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 INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'3-105',78);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (101,'6-166',85);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (107,'9-888',79);
INSERT INTO SCORE(SNO,CNO,DEGREE)VALUES (108,'6-166',81);

3.查询数据

1、 查询Student表中的所有记录的Sname、Ssex和Class列。

SELECT sname, ssex, class
FROM student;

2、 查询教师所有的单位即不重复的Depart列。

SELECT depart
FROM teacher
GROUP BY depart;

3、 查询Student表的所有记录。

SELECT *
FROM student;

4、 查询Score表中成绩在60到80之间的所有记录。(between)

SELECT *
FROM score
WHERE degree BETWEEN 60 AND 80;

5、 查询Score表中成绩为85,86或88的记录。(in)

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 COUNT(*)
FROM student
WHERE class = '95031';

10、查询Score表中的最高分的学生学号和课程号。(排序)

SELECT sno, cno
FROM score
ORDER BY degree DESC;

11、查询每门课的平均成绩。(group by)

SELECT cname, AVG(degree)
FROM scoreINNER JOIN course
WHERE course.cno = score.cno
GROUP BY course.cname;

12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。(group by having)

SELECT cno, AVG(degree)
FROM score
WHERE cno LIKE '3%'
GROUP BY cno
HAVING COUNT(sno) >= 5;

13、查询最低分大于70,最高分小于90的Sno列。

SELECT sno
FROM score
GROUP BY sno
HAVING MAX(degree) < 90
AND MIN(degree) > 70;

14、查询所有学生的Sname、Cno和Degree列。

SELECT sname, score.cno, degree
FROM studentINNER JOIN score
WHERE student.sno = score.sno;

15、查询所有学生的Sno、Cname和Degree列。

SELECT student.sno, sname, degree
FROM studentINNER JOIN score
WHERE student.sno = score.sno;

16、查询所有学生的Sname、Cname和Degree列。

select sname,cname,degree
from student
inner join score,course
where
course.cno = score.cno and student.sno = score.sno;

17、查询“95033”班学生的平均分。(选)

SELECT AVG(degree)
FROM studentINNER JOIN score
WHERE class = '95033'AND student.sno = score.sno;

18、假设使用如下命令建立了一个grade表,并查询所有同学的Sno、Cno和rank列。

create table grade(low int(3),high int(3),rank varchar(20));
insert into grade values(90,100,'A');
insert into grade values(80,89,'B');
insert into grade values(70,79,'C');
insert into grade values(60,69,'D');
insert into grade values(0,59,'E');
commit;
select sno,cno,rank
from score
inner join grade
where degree < high and degree >low;

19、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。(选)

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

20、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。(选)

SELECT sno, sname, sbirthday
FROM student, (SELECT year(sbirthday) AS birthyearFROM studentWHERE sno = 108) s1
WHERE year(sbirthday) = s1.birthyear;

21、查询“张旭“教师任课的学生成绩。(选)

SELECT tname, cname, sname, degree
FROM teacher, course, student, score
WHERE teacher.tno = course.tnoAND course.cno = score.cnoAND score.sno = student.snoAND teacher.tname = '张旭';

22、查询95033班和95031班全体学生的记录。(in)

SELECT *
FROM student
WHERE class IN ('95033', '95031');

23、查询存在有85分以上成绩的课程cno.

SELECT cno
FROM score
GROUP BY cno
HAVING MAX(degree) >= 85;

24、查询出“计算机系“教师所教课程的成绩表。(选)

SELECT score.sno, sname, degree
FROM teacher, score, course, student
WHERE teacher.tno = course.tnoAND course.cno = score.cnoAND score.sno = student.snoAND teacher.depart = '计算机系';

25、查询成绩比该课程平均成绩低的同学的成绩表。(选)

SELECT s.sno, s.cno, s.degree
FROM score AS s, (SELECT cno, AVG(degree) AS avgdFROM scoreGROUP BY cno) avgs
WHERE s.cno = avgs.cnoAND s.degree < avgs.avgd;

26、查询所有任课教师的Tname和Depart.(选)

SELECT tname, depart
FROM teacher;

27、查询至少有2名男生的班号。(group by having)

SELECT class, COUNT(sname)
FROM student
GROUP BY class
HAVING COUNT(sname) >= 2;

28、查询Student表中不姓“王”的同学记录。(not like)

SELECT *
FROM student
WHERE sname NOT LIKE '王%';

29、查询Student表中每个学生的姓名和年龄。

SELECT sname, 2018 - year(sbirthday) AS age
FROM student;

30、查询Student表中最大和最小的Sbirthday日期值。

SELECT MAX(sbirthday), MIN(sbirthday)
FROM student;

31、以班号和年龄从大到小的顺序查询Student表中的全部记录。
下面两种SQL语句一样的效果,年龄大则出生日期小

SELECT *
FROM student
ORDER BY class DESC, sbirthday ASC;
SELECT *
FROM student
ORDER BY class DESC, sbirthday;

32、查询“男”教师及其所上的课程。

SELECT tname, cname
FROM teacher, course
WHERE teacher.tno = course.tnoAND tsex = '男';

33、查询每一门科目最高分同学的Sno、Cno和Degree列。(选)

SELECT sno, cno, MAX(degree)
FROM score
GROUP BY cno;

mysql日常基本语句相关推荐

  1. MySQL日常应用操作记录

    1.知道一个字段名,怎样查到它在数据库里的哪张表里? USE Information_schema; SELECT TABLE_NAME FROM COLUMNS WHERE COLUMN_NAME= ...

  2. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

  3. mysql监控---慢语句查询

      慢语句查询.  1,开启慢sql日志查询功能.  2,用show full processlist :查询执行的sql语句,然后看哪些语句有问题.  3,将有问题的语句拿出来,前面放上explai ...

  4. mysql 查看 dml,MySQL系列-DML语句

    MySQL系列-DML语句 运维少年 运维少年 系列文章说明 MySQL系列文章包含了软件安装.具体使用.备份恢复等内容,主要用于记录个人的学习笔记,主要使用的MySQL版本为5.7.28,服务器系统 ...

  5. MySQL日常维护(超级大杂烩)

    MySQL 日常维护 其中第一至第六, 每天都需要执行, 第七到第九定期执行(1周或者2周一次?) 一  检查数据库运行状态 1 通过putty.exe登录远程数据库服务器,在shell命令行里面执行 ...

  6. windows下bat处理执行Mysql的sql语句

    这篇文章主要介绍了windows下bat批处理执行Mysql的sql语句,需要的朋友可以参考下 有时候我们需要用bat来定时执行mysql那么就可以参考下面的代码 直接上代码: @ECHO OFF S ...

  7. shell实行mysql语句_【Mysql】shell运行mysql的sql语句_MySQL

    bitsCN.com [Mysql]shell运行mysql的sql语句 shell本身是一种脚本语言,所以不能像java一样通过api去连接数据库.shell还是要借助mysql本身的一些运行脚本才 ...

  8. mysql里条件语句和循环语句_MySQL与Oracle 差异比较之四条件循环语句

    循环语句 编号 类别 oracle Mysql 注释 1 IF语句使用不同 IFiv_weekly_day = 'MON'THEN ii_weekly_day := 'MON'; ELSIFiv_we ...

  9. mysql 查询语句 参数,mysql参数化查询语句有关问题

    mysql参数化查询语句问题 部分代码如下: using (MySqlConnection conn = new MySqlConnection(connectionString)) { conn.O ...

最新文章

  1. 你不知道的console
  2. C++ 统计字符串中某字符出现的次数
  3. UA MATH563 概率论的数学基础 中心极限定理22 度量概率空间中的弱收敛 Portmanteau定理
  4. 数据结构和算法 —— 谈谈算法
  5. 洛谷 - P2770 航空路线问题(最大费用最大流+路径打印)
  6. mysql中的各种join整理
  7. android 自定义emoji表情包,emoji表情制作
  8. MinGW在线安装包下载失败的解决办法
  9. 网课题库接口搭建步骤
  10. AIL(Android init Language)
  11. 使用telnet和ssh登录linux
  12. 【BZOJ4199】品酒大会(NOI2015)-后缀数组+并查集
  13. zigbee抓包实验过程
  14. vue中使用video标签插入视频并自动播放
  15. 《iOS移动开发从入门到精通》图书连载4:iOS应用的生命周期
  16. picturebox显示服务器图片大小,WinForm中实现picturebox自适应图片大小的方法
  17. 快速幂详解(通俗易懂!)
  18. 蓝牙模块通信c语言,求一个蓝牙模块发送数据的例子
  19. 如何让你的阿里博客排在百度的首页
  20. PowerDesigner数据建模

热门文章

  1. Audiobook Builder 2.0.1 中文特别版 Mac 有声读物制作软件
  2. 周星驰电影全集完整电影在线播放
  3. 爬取百度百科周星驰页面电影名称并生成词云图
  4. 跨文化管理 ——霍夫斯泰德的四个维度
  5. Java 解析纯真IP库
  6. Packet Tracer 学习笔记(一)简单使用
  7. DOM智能营销封禁QQ群强制私聊
  8. Python学习笔记-Python 条件语句
  9. mysql进阶-(六)锁
  10. 从零开始打造一个Android 3D立体旋转容器