SQL语句练习(基础版)
2024-10-19 08:29:49
最近在学习SQL基本语句的练习,在此分享一下笔者做过的练习以及个人的解决教程:
首先是基本练习表格的搭建,具体内容如下表所示:
Snum | Sname | Ssex | Sage | Sphone | Dname |
---|---|---|---|---|---|
S001 | 王明 | 男 | 19 | 86824571 | 数学系 |
S002 | 李勇 | 男 | 23 | 89454321 | 物理系 |
S003 | 刘燕 | 女 | 21 | 计算机系 | |
S004 | 王萍 | 女 | 23 | 电子系 | |
S005 | 王佳 | 男 | 24 | 13098765892 | 计算机系 |
S006 | 赵婷 | 女 | 20 | 物理系 |
学生表
Snum | Cnum | Score |
---|---|---|
S001 | C1 | 83 |
S001 | C2 | 89 |
S001 | C3 | NULL |
S001 | C4 | 85 |
S001 | C5 | 69 |
S002 | C3 | 78 |
S002 | C4 | 75 |
S003 | C1 | 85 |
S004 | C2 | NULL |
S005 | C1 | 92 |
S005 | C3 | 76 |
选课表
Cnum | Cname | Cfreq |
---|---|---|
C1 | 数据库系统原理 | 4 |
C2 | C程序设计 | 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);
最新文章
- 《Head First Servlet JSP》学习笔记
- HTML 表格垂直对齐方式
- 读javascript高级程序设计16-几条函数小技巧
- 链表面试题Java实现【重要】
- CSS选择器、优先级与匹配原理(转)
- 25个完美的Opencart模板,让顾客无法抗拒!
- NSRange
- delphi调用 java 的 WebService服务端.
- iOS各种系统通知Name
- hdu 1078(记忆化搜索)
- Even Parity uva11464 模拟
- nginx笔记4-负载均衡带来的问题以及解决办法
- 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
- 小账本APP——软件项目风险管理及解决办法案例
- bae64编码
- Java笔记Spring(二)
- Swift5 语言指南(九) 闭包
- NserviceBus:消息Message、Command、Event(2)
- 为Flex Builder设置测试服务器
- 首篇 sdk 之 AlertDialog
热门文章
- taro 如何展示多行文本 省略号
- Node.js &; ES modules &; .mjs
- PM2 in depth
- 比特币大涨之际,VAST空投火爆来袭!
- BGV等 DeFi产品暴涨背后隐藏着什么?
- Codeforces Round #703 (Div. 2) (A~E)
- Python数据结构与算法_反转字符串(08)
- java安全管理器SecurityManager
- ElasticSearch DSL 查询
- Excel小技巧之VLOOKUP()使用简单说明