SQL语句练习(基础版)

最近在学习SQL基本语句的练习,在此分享一下笔者做过的练习以及个人的解决教程:

首先是基本练习表格的搭建,具体内容如下表所示:

SnumSnameSsexSageSphoneDname
S001王明1986824571数学系
S002李勇2389454321物理系
S003刘燕21计算机系
S004王萍23电子系
S005王佳2413098765892计算机系
S006赵婷20物理系

学生表

SnumCnumScore
S001C183
S001C289
S001C3NULL
S001C485
S001C569
S002C378
S002C475
S003C185
S004C2NULL
S005C192
S005C376

选课表

CnumCnameCfreq
C1数据库系统原理4
C2C程序设计4
C3计算机体系结构3
C4自动控制原理2
C5数据结构4

课程表

建立以上表格及数据的代码如下:

--创建数据表的基本数据--

USE 学生选课; 
CREATE TABLE 学生(Snum CHAR(4) NOT NULL UNIQUE,
Sname VARCHAR(8) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT DEFAULT 21,
Sphone VARCHAR(20),
Dname VARCHAR(20),
PRIMARY KEY(Snum),
CONSTRAINT C1 CHECK(Ssex IN ('男','女')));

CREATE TABLE 课程(Cnum CHAR(2) PRIMARY KEY,
Cname VARCHAR(20) NOT NULL,
Cfreq NUMERIC(2,1)
CONSTRAINT C2 CHECK(Cfreq BETWEEN 0 AND 10));

CREATE TABLE 选课(Snum CHAR(4),
Cnum CHAR(2),
Score SMALLINT,
PRIMARY KEY(Snum,Cnum),
CONSTRAINT C3 CHECK(Score BETWEEN 0 AND 100),
CONSTRAINT C4 FOREIGN KEY(Snum) REFERENCES 学生(Snum),
CONSTRAINT C5 FOREIGN KEY(Cnum) REFERENCES 课程(Cnum));

给出相应的INSERT语句来完成题中给出的数据的插入,如:

--INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)--
INSERT INTO 学生 (Snum, Sname,Ssex,Sage,Sphone,Dname) 
VALUES ('S001','王明','男','19','86824571','数学系');

具体完成以下例题。将它们转换为SQL语句表示,在学生选课库中实现其数据更新操作。
1)将一新学生记录(‘S007’,’陈冬’,’男’,’18’,’13600524567’,’计算机系’)插入学生表中。

2)插入一条选课记录(‘S002’,’C1’)到选课表中。

3)对每一个系,求学生的平均年龄,并把结果存入数据库。

4)将学生S001的年龄改为22岁。

5)将所有学生的年龄增加一岁。

6)将计算机系全体学生的成绩置零。

7)删除学号为S006的学生记录。

8)删除所有的学生选课记录。

9)删除计算机系所有学生的选课记录。

10)在已经存在的学生表中增加一个邮件地址“Email”的新属性列,允许为空。

11)修改学生表中“姓名”的数据类型为VARCHAR(20)。

以下为示例代码,仅供参考:

--(1)--
Insert Into 学生(Snum,Sname,Ssex,Sage,Sphone,Dname)
values('S007','陈冬','男','18','13600524567','计算机系');

--(2)--
Insert Into 选课(Snum,Cnum)
values('S002','C1');

--(3)--
Create Table 院系(Dname Varchar(20),AverageAge Smallint);
Insert into 院系 select Dname,avg(Sage) as AverageAge from 学生 group by Dname;

--(4)--
update 学生 set Sage = 22 where Snum = 'S001';

--(5)--
update 学生 set Sage = Sage + 1;

--(6)--
update 选课 set Score = 0 
where Snum in (select Snum from 学生 where Dname = '计算机系')

--(7)--
Delete from 学生 where Snum = 'S006';

--(8)--
Delete from 学生;

--(9)--
Delete from 学生 where Dname = '计算机系';

--(10)--
alter table 学生 alter column Email varchar(20) null;

--(11)--
alter table 学生 alter column Sname varchar(20);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值