数据库概论实验二 SQL语句使用

数据库概论实验二 SQL语句使用

  • 使用create创建数据表语法
  • 实验

使用create创建数据表语法

CREATE TABLE table_name(
 column_name column_type [not null],
 column_name column_type [not null],
 ...
 [constraint]
)

语法说明:

  • table_name:数据表名,在一个数据库中数据表名不能重复
  • column_name:表中的列名(字段名),一个表中的列名也是不能重复的
  • column_type:数据类型,设置当前列中允许存放的数据的数据类型
  • [not null]:设置该列插入数据时不能为空,如果不指定则默认表示该列允许为空
  • [constraint] :为表中的列设置约束(主键、外键、检查等)

实例:

学生表 tb_S(Snum, Sname, sex, birthday, dept)
课程表 tb_C(Cnum, Cname, Credit, Tnum)
选修表 tb_SC(Snum, Cnum, grade)
教师表 tb_T(Tnum, Tname, sex, birthday, dept, title)
  1. 学生表
字段名 数据类型 是否为空 中文说明
Snum char(5) not null 学号
Sname varchar(10) not null 学生姓名
sex char(2) not null 学生性别
birthday number(2) not null 学生年龄
dept varchar(20) not null 系别
CREATE TABLE tb_S(
	Snum char(5) not null,
	Sname varchar(10) not null,
	sex char(2) not null,
	birthday number(2) not null,
	dept varchar(20) not null
);

数据库概论实验二 SQL语句使用_第1张图片
2. 课程表

字段名 数据类型 是否为空 中文说明
Cnum char(2) not null 课程号
Cname varchar(20) not null 课程名
Credit number(1) not null 学分
Tnum char(5) not null 教师号
CREATE TABLE tb_C(
	Cnum char(2) not null,
	Cname varchar(20) not null,
	Credit number(1) not null,
	Tnum char(5) not null
);

数据库概论实验二 SQL语句使用_第2张图片

  1. 选修表
字段名 数据类型 是否为空 中文说明
Snum char(5) not null 学号
Cnum char(2) not null 课程号
grade varchar(3) null 成绩
CREATE TABLE tb_SC(
	Snum char(5) not null,
	Cnum char(2) not null,
	grade varchar(3) null
);
ALTER TABLE tb_SC RENAME COLUMN Sname TO Snum;

数据库概论实验二 SQL语句使用_第3张图片

  1. 教师表
字段名 数据类型 是否为空 中文说明
Tnum char(5) not null 教师号
Tname varchar(10) not null 教师姓名
sex char(2) not null 教师性别
birthday number(2) not null 教师年龄
dept varchar(20) not null 系别
title varchar(20) not null 职位
CREATE TABLE tb_T(
	Tnum char(5) not null,
	Tname varchar(10) not null,
	sex char(2),
	birthday number(2),
	dept varchar(20) not null,
	title varchar(20) not null
);

数据库概论实验二 SQL语句使用_第4张图片

实验

  1. 建立上述四个表
    数据库概论实验二 SQL语句使用_第5张图片

创建以下学生信息

--学生表
97301, 刘三, M, 21, 99101
97302, 王利, W, 20, 99101
97303, 刘磊, M, 22, 99102
97304, 张二, W, 22, 99101
97305, 陈四, M, 21, 99102

使用SQL语句将信息依次插入到tb_S表中:

INSERT INTO tb_S
VALUES(
	'97301',
	'刘三',
	'M',
	'21',
	'99101'
);

创建以下课程信息

--课程表
C1, 高等数学, 5, T1
C2, 计算机网络, 3, T2
C3, 线性代数, 4, T1
C4, 数据库原理, 3, T3
C5, 程序设计, 3, T4

使用SQL语句将信息依次插入到tb_C表中:

INSERT INTO tb_C
VALUES(
	'C1',
	'高等数学',
	'5',
	'T1'
);

创建以下选课信息

97301, C1, 78
97301, C2, 82
97301, C3, 70
97301, C4, 58
97301, C5, 94
97302, C1, 66
97302, C2, 78
97302, C3, 60
97302, C4, NULL
97303, C1, 90
97303, C5, 88
97304, C1, 70
97304, C2, 74
97304, C4, 98

使用SQL语句将信息依次插入到tb_SC表中:

INSERT INTO tb_SC
VALUES(
	'97301',
	'C1',
	'78'
);

创建以下教师表

--教师表
T1, 李教, M, 50, 99101, 教授
T2, 陈四, W, 60, 99101, 教授
T3, 李华, M, 34, 99102, 讲师
T4, 刘丽, W, 44, 99102, 讲师

使用SQL语句将信息依次插入到tb_T表中:

INSERT INTO tb_T
VALUES(
	'T1',
	'李教',
	'M',
	'50',
	'99101',
	'教授'
);

:添加完数据库信息后,要执行commit;命令以提交修改。

  1. 查询每个学生的姓名和年龄,并按年龄降序排列
SELECT Sname, birthday 
FROM tb_S 
ORDER BY birthday DESC;

数据库概论实验二 SQL语句使用_第6张图片

  1. 查询学生表中不姓‘王’的学生的情况
SELECT * FROM tb_S 
WHERE NOT Sname LIKE '王%';

数据库概论实验二 SQL语句使用_第7张图片

  1. 查询选修了课程的学生姓名
SELECT DISTINCT Sname 
FROM tb_S, tb_SC 
WHERE tb_S.Snum=tb_SC.Snum;

数据库概论实验二 SQL语句使用_第8张图片

  1. 查询所有有成绩的学生的学号、姓名、及课程名
SELECT tb_S.Snum, Sname, Cname 
FROM tb_S, tb_SC, tb_C 
WHERE tb_S.Snum=tb_SC.Snum 
AND tb_SC.Cnum=tb_C.Cnum 
AND tb_SC.grade>0;

数据库概论实验二 SQL语句使用_第9张图片

  1. 查询所有女教师及其所上课程
SELECT Tname, Cname
FROM tb_T, tb_C
WHERE tb_T.Tnum=tb_C.Tnum
AND tb_T.sex='W';

数据库概论实验二 SQL语句使用_第10张图片

  1. 查询职称为教授的教师人数
SELECT COUNT(Tnum)
FROM tb_T
WHERE title='教授';

数据库概论实验二 SQL语句使用_第11张图片

  1. 查询与‘刘三’同一系的学生
SELECT Sname
FROM tb_S
WHERE dept
IN (
	SELECT dept 
	FROM tb_S 
	WHERE Sname='刘三'
	);

数据库概论实验二 SQL语句使用_第12张图片

  1. 查询各个课程号及其相应的选课人数
SELECT DISTINCT Cnum, COUNT(Snum)
FROM tb_SC
GROUP BY Cnum
ORDER BY Cnum;

数据库概论实验二 SQL语句使用_第13张图片

  1. 查询选修了‘数据库原理’的学生的姓名和成绩
SELECT Sname, grade
FROM tb_S, tb_SC, tb_C
WHERE tb_S.Snum=tb_SC.Snum
AND tb_SC.Cnum=tb_C.Cnum
AND Cname='数据库原理';

数据库概论实验二 SQL语句使用_第14张图片

  1. 查询教师‘李教’所上的所有课程及其平均成绩
SELECT Cname, AVG(grade)
FROM tb_T, tb_SC, tb_C
WHERE tb_T.Tnum = tb_C.Tnum
AND tb_C.Cnum=tb_SC.Cnum
AND Tname='李教'
GROUP BY Cname;

数据库概论实验二 SQL语句使用_第15张图片

  1. 查询学生姓名及所选修的课程名和成绩
SELECT Sname, Cname, grade
FROM tb_S, tb_C, tb_SC
WHERE tb_S.Snum=tb_SC.Snum
AND tb_SC.Cnum=tb_C.Cnum;

数据库概论实验二 SQL语句使用_第16张图片

  1. 查询选修了3门及以上课程的学生姓名及平均成绩(不统计不及格课程),并按照平均成绩降序排列
SELECT Sname, AVG(grade)
FROM tb_S, tb_SC
WHERE tb_S.Snum=tb_SC.Snum
AND grade>=60
GROUP BY Sname
HAVING COUNT(Cnum)>=3
ORDER BY AVG(grade) DESC;

数据库概论实验二 SQL语句使用_第17张图片

  1. 查询99101班中所有课程的成绩都在60分以上的学生姓名
SELECT DISTINCT Sname
FROM tb_S, tb_SC
WHERE tb_S.Snum NOT IN (
	SELECT tb_SC.Snum
	FROM tb_SC
	WHERE tb_S.Snum=tb_SC.Snum
	AND grade<60)
AND dept='99101';
  1. 查询每个学生已选修课程的门数及平均成绩
SELECT Sname, COUNT(Cnum), AVG(grade)
FROM tb_S, tb_SC
WHERE tb_S.Snum=tb_SC.Snum
GROUP BY Sname;

数据库概论实验二 SQL语句使用_第18张图片

  1. 查询每门课程的选修人数、最高分、最低分及平均成绩
SELECT tb_SC.Cnum, Cname, COUNT(tb_SC.Snum), MAX(grade), MIN(grade), AVG(grade)
FROM tb_SC,tb_C
WHERE tb_C.Cnum=tb_SC.Cnum
GROUP BY tb_SC.Cnum, Cname
ORDER BY tb_SC.Cnum;

数据库概论实验二 SQL语句使用_第19张图片

  1. 查询选修但没参加考试(缺成绩)的学生姓名、课程及学分
SELECT Sname, Cname, Credit
FROM tb_S, tb_C, tb_SC
WHERE tb_S.Snum=tb_SC.Snum
AND tb_SC.Cnum=tb_C.Cnum
AND grade IS NULL;

数据库概论实验二 SQL语句使用_第20张图片

  1. 查询选修了所有课程的学生学号、姓名
SELECT Snum, Sname
FROM tb_S
WHERE NOT EXISTS(
	SELECT * 
	FROM tb_C
	WHERE NOT EXISTS(
		SELECT *
		FROM tb_SC
		WHERE tb_SC.Snum=tb_S.Snum
		AND tb_SC.Cnum = tb_C.Cnum
	)
);

数据库概论实验二 SQL语句使用_第21张图片

  1. 将学生刘磊新选修的数据库原理插入选修课表中
INSERT INTO tb_SC
VALUES(
	(SELECT Snum FROM tb_S WHERE Sname='刘磊'),
	(SELECT Cnum FROM tb_C WHERE Cname='数据库原理'),
	NULL
);

数据库概论实验二 SQL语句使用_第22张图片

  1. 对每一个系,求学生的平均年龄并把结果存入数据库中
CREATE TABLE tb_Age(
	dept VARCHAR(20) NOT NULL,
	age NUMBER(2) NULL
);
SELECT dept, AVG(birthday)
INTO tb_Age
FROM tb_S
GROUP BY dept;
);
GROUP BY dept
  1. 将学生王利选修的C3课程的成绩加10分
UPDATE tb_SC
SET grade=grade+10
WHERE Snum IN (
	SELECT Snum
	FROM tb_S
	WHERE Sname='王利'
)
AND Cnum='C3';

数据库概论实验二 SQL语句使用_第23张图片

  1. 将‘数据库’的学分改成与‘高等数学’的学分相等
UPDATE tb_C
SET Credit=(
	SELECT Credit 
	FROM tb_C 
	WHERE Cname='高等数学'
)
WHERE Cname='数据库原理';

数据库概论实验二 SQL语句使用_第24张图片

  1. 将学生97301删除
DELETE FROM tb_S
WHERE Snum='97301';

在这里插入图片描述

  1. 将学生王利选修的‘数据库’删除
DELETE FROM tb_SC
WHERE Snum IN (
	SELECT Snum 
	FROM tb_S 
	WHERE Sname='王利'
)
AND Cnum IN (
	SELECT Cnum 
	FROM tb_C 
	WHERE Cname='数据库原理'
);

数据库概论实验二 SQL语句使用_第25张图片

你可能感兴趣的:(Web安全知识体系,数据库,oracle,sql,数据库概论)