自己珍藏的数据库SQL基础练习题答案
一,基本表的定义与删除. 题1:
用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1-3所示。 表1- Student表结构
列名 说明 数据类型 约束
Sno 学号 字符串,长度为7 主码
Sname 姓名 字符串,长度为10 非空
Ssex 性别 字符串,长度为2 取‘男’或‘女’
Sage 年龄 整数 取值15~
Sdept 所在系 字符串,长度为20 默认为‘计算机系’ create table Student(
Sno char() primarykey,
Sname char() not null,
Ssex char() check(Ssex='男' or Ssex='女') ,
Sage number() check(Sage>= and Sage<=),
Sdept char() default('计算机系'));
------------------------------------------------------------------------------------------------------------------- 表1-2Course表结构
列名 说明 数据类型 约束
Cno 课程号 字符串,长度为10 主码
Cname 课程名 字符串,长度为20 非空
Ccredit 学分 整数 取值大于0
Semster 学期 整数 取值大于0
Period 学时 整数 取值大于0 create table Course(
Cno char() primarykey,
Cname char() not null,
Ccredit nuber() check(Ccredit>) ,
Cemster number() check(Cemster>),
Period number() check(Period>));
----------------------------------------------------------------------------------------------------------------- 表1- SC表结构
列名 说明 数据类型 约束
Sno 学号 字符串,长度为7 主码,引用Student的外码
Cno 课程名 字符串,长度为10 主码,引用Course
Grade 成绩 整数 取值0~ create table SC(
Sno char(),
Cno char(), primary key(Sno,Cno), foreign key (Sno) references Student(Sno),
foreign key (Cno) references. Course(Cno), Grade number() check(Grade>= and Grade<=)); ------------------------------------------------------------------------------------------------------------------- 二,修改表结构 题2:
为SC表添加“选课类别”列,此列的定义为XKLB char().
alter SC set add XLB char() null; 题3:
将新添加的XKLB的类型改为char()。
alter table SC alter column XKLB char(); 题4:
删除Course表的Period列。
alter from drop column Period; 三,数据查询功能 表3- Student表数据
Sno Sname Ssex Sage Sdept
李勇 男 计算机系
刘晨 男 计算机系
王敏 女 计算机系
张立 男 信息系
吴宾 女 信息系
张海 男 信息系
钱小平 女 数学系
王大力 男 数学系 insert into Student(Sno,Sname,Ssex,Sage,Sdept)
values(
'','李勇','男',,'计算机系';
'','刘晨','男',,'计算机系';
'','王敏','女',,'计算机系';
'','张立','男',,'信息系';
'','吴宾','女','','信息系';
'','张海','男',,'信息系';
'','钱小平','女',,'数学系';
'','王大力','男',,'数学系')
------------------------------------------------------------------------------------------------------------------- 表3- Course表数据
Cno Cname Ccredit Cemester
C01 计算机文化学
C02 VB
C03 计算机网络
C04 数据库基础
C05 高等数学
C06 数据结构 insert into Course(Cno,Cname,Ccredit,Cemester) values(
'C01','计算机文化学',,;
'C02','VB',,;
'C03','计算机网络',,;
'数据库基础',,;
'C05','高等数学',,;
'C06','数据结构',,)
------------------------------------------------------------------------------------------------------------------- 表 - SC表数据
Sno Cno Grade XKLB
c01 必修
c02 选修
c06 <NULL> 必修
c02 选修
c04 必修
c01 选修
c02 选修
c04 必修
c05 必修
c02 选修
c06 <NULL> 必修
c01 选修
c05 必修
c05 必修 insert into SC values(
'','c01',,'必修';
'','c02',,'选修';
'','c06',NULL,'必修';
'','c02',,'选修';
'','c04',,'必修';
'','c01',,'选修';
'','c02',,'选修';
'','c04',,'必修';
'','c05',,'必修';
'','c02',,'选修';
'','c06',NULL,'必修';
'','c01',,'选修';
'','c05',,'必修';
'','c05',,'必修') insert into SC(Sno,Cno,Grade) values('','C02',,'选修')
insert into SC values('','C04',,'必修')
insert into SC values('','C05',,'必修')
insert into SC values('','C02',,'选修')
insert into SC values('','C06',NULL,'必修')
insert into SC values('','C01',,'选修')
insert into SC values('','C05',,'必修')
insert into SC values('','C05',,'必修') ------------------------------------------------------------------------------------------------------------------- 题5:
用sql语句填写以上(表3- Student表数据、表3- Course表数据、表 - SC表数据)数据。 题6:
查询全体学生的学号与姓名。
select Sno,Sname from Student; 题7:
查询全体学生的姓名,学号和所在系。
select Sno,Sname,Sdept from Student; 题8:
查询全体学生的记录。 select * from SC join Student on Student.Sno=SC.Sno; 题9:
查询全体学生的姓名及其出生年份。
select Sname,-Sage as '出生年份'; 题10:
查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为“Year of Birth”常量值。
select Sname,'出生年份',-Sage from Student; 题11:
在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号。
select distingct Sno from SC; 题12:
查询计算机系全体学生的姓名。
select Sname from Student where Sdept='计算机系'; 题13:
查询所有年龄在20岁以下的学生的姓名及年龄。
slect Sname,Sage from Student where Sage<; 题14:
查询考试成绩不及格的学生的学号。
select distingct Sno from SC where Grade <; 题15:
查询年龄在20~23岁之间的学生的姓名,所在系和年龄。
select Sname,Sdept,Sage from Student where Sage between and ; 题16:
查询年龄不在20~23之间的学生的姓名,所在系和年龄。
select Sname,Sdept,Sage from Student where Sage not between and ; 题17:
查询信息系,数学系和计算机系学生的姓名和性别。
select Sname,Ssex from Student where Sdept in ('信息系','数学系','计算机系'); 题18:
查询既不属于信息系,数学系,也不属于计算机系的学生的姓名和性别。
select Sname,Ssex from Student where Sdept not in ('信息系','数学系','计算机系'); 题19:
查询姓“张”的学生的详细信息。
select * from Student where Sname like '张%'; 题20:
查询学生表中姓“张”,姓“李”和姓“刘”的学生的情况。
select * from Student where Sname like '[张李刘]%'; 题21:
查询名字中第2个字为“小”或“大”字的学生的姓名和学号。
select Sname,Sno from Student where Snme like '_[小大]%'; 题22:
查询所有不姓“刘”的学生。
select Sname from Student where Sname not like '刘%'; 题23:
从学生表中查询学号的最后一位不是2,,5的学生的情况。
select * from where Sno not like '%[235]'; 题24:
查询无考试成绩的学生的学号和相应的课程号。
select Sno,Cno from SC where Grade is null; 题25:
查询所有有考试成绩的学生的学号和课程号。
select Sno,Cno from SC where Grade is not null; 题26:
查询计算机系年龄在20岁以下的学生的姓名。
select Sname from Student where Sdept = '计算机系' and Sage < ; 题27:
将学生按年龄升序排序。
select * from Student order by Sage; 题28:
查询选修了课程“c02”的学生的学号及其成绩,查询结果按成绩降序排列。
select Sno,Grade from SC where Cno='c02' order by Grade desc; 题29:
查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。
select * from Student order by Sdept,Sage desc; 题30:
统计学生总人数。
select count(*) from Student; 题31:
统计选修了课程的学生的人数。
select count(distingct Sno) from SC; 题32 :
计算学号为9512101的学生的考试总成绩之和。
select sum(Grade) from SC where Sno=''; 题33:
计算课程“c01”的学生的考试平均成绩。
select avg(Grade) from SC where Cno='c01'; 题34:
查询选修了课程“c01”的学生的最高分和最低分。
select max(Grade),min(Grade) from SC where Cno='c01'; 题35:
统计每门课程的选课人数,列出课程号和人数。
select Cno as '课程号',count(Sno) as '选课人数' from SC group by Cno; 题36:
查询每名学生的选课们数和平均成绩。
select Sno as '学号',count(*) as '选课门数',avg(Grade) as '平均成绩' from SC group by SNo; 题37:
查询选修了3门以上课程的学生的学号。
select Sno from SC group by Sno having count(*) > ; 题38:
查询选课门数等于或大于4门的学生的平均成绩和选课门数。
select Sno,avg(Grade) '平均成绩',count(*) '选课门数' from SC group by Sno having count(*) >= ; 四,多表连接查询。 题39:
查询每个学生的情况及其选课的情况。
select * from Student join SC on Student.Sno=SC.Sno 题40:
去掉例38中的重复列。
select Sno,avg(Grade) '平均成绩',count(distingct Sno) '选课门数' from SC group by Sno having count(*) >= ; 题41:
查询计算机系学生的选课情况,要求列出学生的名字,所修课的课程号和成绩。
select Sname,Cno,Grade from Student join SC on Student.Sno=SC.Sno where Sdept = '计算机系'; 题42:
查询信息系选修VB课程的学生的成绩,要求列出学生姓名,课程名和成绩。
select Sname,Cname,Grade from Student s join SC on s.Sno=SC.Sno join Course c on c.Cno=SC.Cno
where Sdept = '信息系' and Cname = 'VB'; 题43:
查询所有选修了VB课程的学生的情况,要求列出学生姓名和所在的系。
select Sname,Cname,Grade from Student s join SC on s.Sno=SC.Sno join Course c on c.Cno=SC.Cno
where Cname = 'VB'; 题44:
查询与刘晨在同一个系学习的学生的姓名和所在系。
select S2.Sname,S2.Sdept from Student S1 join Student S2 on S1.Sdept = S2.Sdept
where S1.Sname = '刘晨' and S2.Sname !='刘晨'; 题45:
查询学生的选课情况,包括选修课程的学生和没有修课的学生。
select Student.Sno,Sname,Cno,Grade from Student left outer join SC on Student.Sno = SC.Sno; 五,自查询。 题46:
查询与刘晨在同一个系的学生。
select Sno,Sname,Sdept from Student where Sdept in (
select Sdept from Student
where Sname='刘晨') and Sname='刘晨'; 题47:
查询成绩大于90分的学生的学号和姓名。
select Sno,Sname from Student
where Sno in (select Sno from SC where Grade > ); 题48:
查询选修了“数据库基础”课程的学生的学号和姓名。
select Sno,Sname from Student where Sno in
(
select Sno from SC where Cno in
(
select Cno from Course
where Cname='数据库基础'
)
); 题49:
查询选修了课程“c02”且成绩高于次课程的平均成绩的学生的学号和成绩。
select Sno,Grade from SC where Cno='c02' and
Grade >(select avg(Grade) from SC where Cno = 'c02'); 题50:
查询选修了课程“c01”的学生姓名。
select Sname from Student
where exists ( select * from SC where Sno = Student.Sno and Cno='c01'); 题51:
查询没有选修课程“c01”的学生姓名和所在系。
select Sname,Sdept from Student
where not exists ( select * from SC where Sno = Student.Sno and Cno='c01'); 六,自查询。 题52:
查询选修了课程“c01”的学生的姓名和所在系。
select Sname,Sdept from Student
where exists ( select * from SC where Sno = Student.Sno and Cno='c01'); 题53:
查询数学系成绩在80分以上的学生的学号,姓名。
select Sname,Sno from Student
where exists ( select * from SC where Sno = Student.Sno and Grade>=); 题54:
查询计算机系考试成绩最高的学生的姓名。
select Sname from Student
where exists ( select * from SC where Sno = Student.Sno and max(Grade)); 七,插入数据
题55:
将新生纪录(,陈冬,男,信息系,18岁)插入到Student表中。
insert into Student values('','陈冬','男',,'信息系'); 题56:
在SC表中插入一新记录(,c01),成绩暂缺。
insert into SC values('','c01',null,'必修'); 八,更新数据。 题57:
将所有学生的年龄加1。
update Student set Sage = Sage+; 题58:
将“”学生的年龄改为21岁。
update Student Sage= where Sno=''; 题59:
将计算机系学生的成绩加5分。
update SC set Grade = Grade + where Sno in (select Sno from Student where Sdept='计算机系'); 九,删除数据。 题60:
删除所有学生的选课记录。
delete from SC; 题61:
删除所有不及格学生的选课记录。
delete from SC where Grade < ; 题62:
删除计算机系不及格学生的选课记录。
delete from SC where Grade < and Sno in (select Sno from Student where Sdept = '计算机系');
珍藏的数据库SQL基础练习题答案的更多相关文章
-
自己珍藏的数据库SQL基础练习题答案
一,基本表的定义与删除. 题1: 用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1-3所示. 表1-1 Student表 ...
-
数据库SQL语句练习题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
-
数据库 SQL基础
数据库是用来存取数据的. 数据库类型: ACESS(比较小,存储少) SQL SERVER (.net) MySQL Oracle(java) 数据库:服务.界面 服务是可以操作的后台的程序. 界面是 ...
-
sql 基础练习题
select * from Student;select * from Courseselect ;select* from Teacherselect ;select * from SC;--创建测 ...
-
数据库SQL基础知识
数据库: 结构化查询语言(Structured Query Language)简称SQL: 数据库管理系统(Database Management System)简称DBMS: 数据库管理 ...
-
20_学生选课数据库SQL语句练习题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
-
学生选课数据库SQL语句练习题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
-
选课数据库SQL语句练习题
表(一)Student (学生表) 属性名 数据类型 可否为空 含 义 Sno varchar (20) 否 学号(主码) Sname varchar (20) 否 学生姓名 Ssex varchar ...
-
20_学生选课数据库SQL语句练习题1
25.查询95033班和95031班全体学生的记录. select * from STUDENT t,SCORE s where t.sclass=95033 or t.sclass=95031 26 ...
随机推荐
-
去哪儿搜索引擎QSearch设计与实现
本次演讲主要介绍的是QSearch的具体设计和应用场景,并分别解答以下几个问题:QSearch与开源垂直软件Lucene的区别:具体业务的实现技巧.以及QSearch的具体设计:如何通过Partial ...
-
monkeyrunner API接口文档内容
用python编写脚本 1.导入模块: MonkeyRunner MonkeyDevice MonkeyImage ps:如果给导入模块起别名,就应该使用别名,而不能使用原名,否则会出现错误. f ...
-
openwrt的交叉编译
默认情况下,openwrt编译脚本会自动从Internet上获取所需要的软件包源代码,并把下载的源码包存放在当前目录的 dl/ 目录中: 在 build_dir/ 目录中存放编译中使用的软件包, ...
-
Codeforces Beta Round #29 (Div. 2, Codeforces format) C. Mail Stamps 离散化拓扑排序
C. Mail Stamps Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem ...
-
Java 内存区域和GC机制--备用
Java垃圾回收概况 Java GC(Garbage Collection,垃圾收集,垃圾回收)机制,是Java与C++/C的主要区别之一,作为Java开发者,一般不需要专门编写内存回收和垃圾清理代 ...
-
python----------进程、线程、协程
进程与线程 什么是进程(process)? An executing instance of a program is called a process. Each process provides ...
-
QQ空间如何显示相片
QQ空间如何显示相片 前言 此篇文章估计不会太长,有移除首页的风险,但是老夫(称老夫是因为我们真正的叶小钗其实都100多岁啦)是不会怕滴.所以,我来了哟! 题外话:今天我们一起还看了一道前端的面试题, ...
-
关于c语言变量的内存分布测试程序
#include <stdio.h> #include <stdlib.h> ; // 常全局变量 ; // 初始化全局变量 int uninit_global; // 未初始 ...
-
eclipse+git
最近朋友都推荐使用github管理自己的项目,而且免费用户可以有5个仓库,恰好我也想了解下git,借此机会学习一下.github官方指南使用独立第三方git工具来进行版本控制,并不借助于eclipse ...
-
Linux下防御ddos攻击
导读 Linux服务器在运营过程中可能会受到黑客攻击,常见的攻击方式有SYN,DDOS等.通过更换IP,查找被攻击的站点可能避开攻击,但是中断服务的时间比较长.比较彻底的解决方法是添置硬件防火墙.不过 ...