【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
【MySQL】数据库原理复习——SQL语言
对基本的SQL语句编写的练习题,其中的题目的答案可能会有多种书写方式。
1、题目1
1.1 关系模式
学生student:SNO:学号,SNAME:姓名,AGE:年龄 SEX:性别
|
SNO |
SNAME |
AGE |
SEX |
|
1 |
李强 |
23 |
男 |
|
2 |
刘丽 |
22 |
女 |
|
5 |
张友 |
22 |
男 |
课程course:CNO:课程代码,CNAME:课程名称,TEACHER:教师
|
CNO |
CNAME |
TEACHER |
|
K1 |
C语言 |
王华 |
|
K5 |
数据库原理 |
程军 |
|
K8 |
编译原理 |
程军 |
学生成绩SC:SNO:学号,CNO:课程代码,SCORE:成绩
|
SNO |
CNO |
SCORE |
|
1 |
K1 |
83 |
|
2 |
K1 |
85 |
|
5 |
K1 |
92 |
|
2 |
K5 |
90 |
|
5 |
K5 |
84 |
|
5 |
K8 |
80 |
1.2 要求一
用SQL语言完成表的创建以及数据的插入:
- use test;
- create table if not exists student
- (
- SNO varchar(20) primary key,
- SNAME varchar(20) character set gbk,
- AGE int,
- SEX char(2) character set gbk CHECK(SEX IN('男','女'))
- );
- insert into student values('1','李强',23,'男');
- insert into student values('2','刘丽',22,'女');
- insert into student values('5','张友',22,'男');
- create table if not exists course
- (
- CNO varchar(20) primary key,
- CNAME varchar(20) character set gbk,
- TEACHER varchar(20) character set gbk
- );
- insert into course values('K1','C语言','王华');
- insert into course values('K5','数据库原理','程军');
- insert into course values('K8','编译原理','程军');
- create table if not exists sc
- (
- SNO varchar(20) NOT NULL,
- CNO varchar(20) NOT NULL,
- SCORE int NOT NULL,
- primary key (SNO,CNO),
- foreign key (SNO) references student(SNO),
- foreign key (CNO) references course(CNO)
- );
- insert into sc values('1','K1',83);
- insert into sc values('2','K1',85);
- insert into sc values('5','K1',92);
- insert into sc values('2','K5',90);
- insert into sc values('5','K5',84);
- insert into sc values('5','K8',80);
1.3 要求二
用SQL语言完成如下要求:
(1) 检索至少选修"程军"老师所授全部课程的学生姓名(SNAME);
本题的另外一种说法就是,检索选修了“程军”老师所授全部课程的学生姓名
- select sname from student
- where not exists
- (
- select * from course
- where teacher='程军' and not exists
- (
- select * from sc
- where sc.sno=student.sno and sc.cno=course.cno
- )
- );
这里的检索结果是:
+-------+
| sname |
+-------+
| 张友 |
+-------+
1 row in set (0.00 sec)
(2) 检索"李强"同学不学课程的课程号(CNO);
- select course.cno from course
- where course.cno not in
- (
- select sc.cno from sc,student
- where student.sname='李强' and student.sno=sc.sno
- );
+-----+
| cno |
+-----+
| K5 |
| K8 |
+-----+
2 rows in set (0.22 sec)
(3) 检索选修不少于3门课程的学生学号(SNO);
- SELECT sc.sno
- FROM sc
- GROUP BY sc.sno HAVING count(*)>=3
- ;
+-----+
| sno |
+-----+
| 5 |
+-----+
1 row in set (0.09 sec)
(4) 检索选修全部课程的学生姓名(SNAME)。
- SELECT sname FROM student
- WHERE NOT EXISTS
- (
- SELECT * FROM course
- WHERE NOT EXISTS
- (
- SELECT * FROM sc
- WHERE course.cno=sc.cno and student.sno=sc.sno
- )
- );
+-------+
| sname |
+-------+
| 张友 |
+-------+
1 row in set (0.02 sec)
(5) 检索不学"C语言"的学生信息
- SELECT * FROM student
- WHERE sno not in
- (
- SELECT sc.sno FROM sc,course
- WHERE course.cno=sc.cno
- );
1.4 要求三
请用SQL语言完成如下查询:
(1)查询“程军”老师所教授的所有课程;
- SELECT * FROM course
- WHERE teacher='程军';
(2)查询“李强”同学所有课程的成绩;
- SELECT score FROM student,sc
- WHERE student.sname='李强' AND student.sno=sc.sno
(3)查询课程名为“C语言”的平均成绩;
- SELECT AVG(score) FROM sc,course
- WHERE course.cname='C语言' AND course.cno=sc.cno
(4)查询选修了所有课程的同学信息。
- SELECT * FROM student
- WHERE NOT EXISTS
- (
- SELECT * FROM course
- WHERE NOT EXISTS
- (
- SELECT * FROM sc
- WHERE course.cno=sc.cno AND student.sno=sc.sno
- )
- );
1.5 要求四
(1)检索王老师所授课程的课程号和课程名。
- SELECT cno,cname FROM course WHERE teacher LIKE '王%';
(2)检索年龄大于23岁的男学生的学号和姓名。
- SELECT sno,sname FROM student
- WHERE age>23;
(3)检索至少选修王老师所授课程中一门课程的女学生姓名。
- SELECT sname FROM student
- WHERE sex='女' AND sno IN
- (
- SELECT distinct sno FROM sc,course
- WHERE teacher LIKE '王%' AND sc.cno=course.cno
- );
(4)检索李同学不学的课程的课程号。
- SELECT course.cno FROM course
- WHERE course.cno NOT IN
- (
- SELECT sc.cno FROM sc,student
- WHERE student.sname LIKE '李%' AND sc.sno=student.sno
- );
(5)检索至少选修两门课程的学生学号。
- SELECT sno FROM sc
- GROUP BY sno HAVING (count(*)>=2);
(6)检索全部学生都选修的课程的课程号与课程名。
- SELECT course.cno,course.cname FROM course
- WHERE course.cno IN
- (
- SELECT cno FROM sc
- GROUP BY cno HAVing count(*)=(SELECT count(*) FROM student)
- );
(7)检索选修课程包含王老师所授课的学生学号。
- SELECT DISTINCT sno FROM sc
- WHERE cno IN
- (
- SELECT cno FROM course
- WHERE teacher LIKE '王%'
- );
(8)统计有学生选修的课程门数。
- SELECT count(*) NumberOfCourse
- FROM
- (
- SELECT DISTINCT cno FROM sc
- GROUP BY cno
- ) AS testTab;
(9)求选修K1课程的学生的平均年龄。
- SELECT AVG(age) AverageOfAge
- FROM student
- WHERE sno IN
- (
- SELECT sno FROM sc
- WHERE cno='K1'
- );
(10)求王老师所授课程的每门课程的学生平均成绩。
- SELECT sc.cno,AVG(sc.score)
- FROM sc
- WHERE sc.cno IN
- (
- SELECT course.cno FROM course
- WHERE course.teacher LIKE '王%'
- )
- GROUP BY sc.cno
(11)统计每门课程的学生选修人数(超过2人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
- SELECT cno,Num
- FROM
- (
- SELECT cno,count(*) as Num
- FROM sc
- GROUP BY cno HAVING (count(*) >= 2)
- ) tb_temp
- ORDER BY Num DESC,cno ASC
- ;
(12)检索学号比李同学大,而年龄比他小的学生姓名。
- SELECT stu1.sname
- FROM student stu1,
- (
- SELECT max(sno) snoLi,min(age) ageLi FROM student
- WHERE sname LIKE '李%'
- ) AS stuLi
- WHERE (stu1.age < stuLi.ageLi) AND (stu1.sno>stuLi.snoLi)
- ;
(13)检索姓名以李打头的所有学生的姓名和年龄。
- SELECT sname,age FROM student
- WHERE sname LIKE '李%'
- ;
(14)在SC中检索成绩为空值的学生学号和课程号。
- SELECT sno,cno FROM sc
- WHERE score IS NULL;
(15)求年龄大于女同学平均年龄的男学生姓名和年龄。
- SELECT sname,age FROM student
- WHERE
- sex='男' AND age > (
- SELECT AVG(age)
- FROM student
- WHERE sex='女'
- )
- ;
(16)求年龄大于所有女同学年龄的男学生姓名和年龄。
- SELECT sname,age
- FROM student
- WHERE sex='男' AND age > (
- SELECT max(age)
- FROM student
- WHERE sex='女'
- )
- ;
【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲的更多相关文章
- Mysql初识数据库《五》初识sql语句
初识sql语句 有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写 mysql服务端软件即mysqld帮我们管理好文件夹以及文件,前提是作为使用者的我们,需要 ...
- MySQL查看数据库表容量大小
本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用. 1.查看所有数据库容量大小 select table_schema as '数据库', sum(table ...
- 数据库MySQL经典面试题之SQL语句
数据库MySQL经典面试题之SQL语句 1.需要数据库表1.学生表Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学 ...
- mysqls,为node.js而编写的sql语句生成插件 (crud for mysql).
It is written in JavaScript,crud for mysql.You can also use transactions very easily. mysqls 一款专为nod ...
- MYSQL之数据库初识、安装详解、sql语句基本操作
目录 MYSQL之数据库初识及安装详解 1.什么是数据库? 1.什么是数据?(data) 2.什么是数据库?(databases,简称DB) 2.为什要用数据库? 3.什么是数据库管理系统?(Data ...
- MySQL学习-数据库设计以及sql的进阶语句
1.数据库设计 关系型数据库建议在E-R模型的基础上,我们需要根据产品经理的设计策划,抽取出来模型与关系,制定出表结构,这是项目开始的第一步 在开发中有很多设计数据库的软件,常用的如power des ...
- php面试专题---17、MySQL的SQL语句编写考点
php面试专题---17.MySQL的SQL语句编写考点 一.总结 一句话总结: 注意:只写精品 1.MySQL的关联UPDATE语句? 关键UPDATE A,B:UPDATE A,B SET A.c ...
- PHP面试 MySQL的SQL语句编写
MySQL的SQL语句编写 面试题一 有A表(id,sex,par,c1,c2),B(id,age,c1,c2)两张表,其中A.id与B.id关联,现在要求写出一条SQL语句,将B中age>50 ...
- mysql 对数据库操作的常用sql语句
1.查看创建某个数据库的 创建语句 show create database mysql 这个sql语句的意思是 展示创建名为mysql的数据库的 语句.执行之后如下图所示 仿造上面这个创建语句 创建 ...
随机推荐
- Eclipse Tomcat插件的使用
目录 Eclipse Tomcat插件的使用 Eclipse Tomcat插件的使用 我使用的Eclipse版本是:4.6.3 Eclipse已经自带Tomcat插件,不需要再自己进行安装 1.新建T ...
- LaTeX:Question & Answer
tikz 宏包中循环 foreach 的使用方法 矩阵环境输入 displaystyle 分式与垂直间距的设置 在 LaTeX 中使用 mathrsfs 宏包遇到 "rsfs7.tfm&qu ...
- leetcode之Maximal Square
Given a 2D binary matrix filled with 0's and 1's, find the largest square containing all 1's and ret ...
- Python开发【项目】:博客后台
概述 通过自己写的博客后台代码.思路,来与武sir的代码进行一个差异化的比较,记录之间的差距,改善以后写代码的思路 博客后台这个项目,对之前Django学习的各个知识点都有涉及到,非常重要 用户登录验 ...
- day08:软件系统的体系结构&Tomcat详解&Web应用&http协议
day08 软件系统体系结构 常见软件系统体系结构B/S.C/S 1.1 C/S C/S结构即客户端/服务器(Client/Server),例如QQ: 需要编写服务器端程序,以及客户端 ...
- mysql主从复制(简单直观)
mysql主从复制 mysql主从复制(超简单) 怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下: 1.主从服务器分别作以下操作: 1.1.版本一致 1.2.初始化表,并在后 ...
- mysql 约束条件 auto_increment 自动增长目录
mysql 约束条件 auto_increment 自动增长 mysql 约束条件 auto_increment 自动增长起始值 布长 起始偏移量 mysql 约束条件 auto_increment ...
- 004-ant design -dispatch、request、fetch
一.dispatch 函数 typedispatch = (a: Action) => Action dispatching function 是一个用于触发 action 的函数,action ...
- python高级之Flask框架
目录: Flask基本使用 Flask配置文件 Flask路由系统 Flask模版 Flask请求与响应 Flask之Session Flask之蓝图 Flask之message 中间件 Flask插 ...
- Hadoop 编写WordCount
本文发表于本人博客. 前面几次讲了关于Hadoop的环境搭建.HDFS操作,今天接着继续.本来Hadoop源码中就有一个例子WordCount,但是今天我们来自己实现一个加深对这个Mapper.Red ...