SQL语句练习(基础版)
最近在学习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);
SQL语句练习(基础版)的更多相关文章
- 常用经典SQL语句大全(基础)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sqlserver --- 创 ...
- sql语句复习(基础-提升-技巧-经典数据开发案例-sql server配置)
1 基础 1.说明:创建数据库 CREATE DATABASE database-name charset=utf8 2.说明:删除数据库 drop database dbname 3.说明:备份sq ...
- 数据库之SQL语句查询基础
人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想. 人没有梦想是荒废的,是漫无目的的,拥有梦想你会飞的更远. 下面我就来为大家介绍一下SQL语句的查询基础,以下使用MySchool数据 ...
- mysql基本sql语句大全(基础用语篇)
1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...
- SQL语句的基础
注释语法:#注释语 一.T-SQL语句注意:1.语句写完后用"分号:"代表这一句结束2.列结束用逗号,最后一列写完不用写逗号3.符号一定是英文的 关键字:主键:primary ke ...
- sql语句练习-基础篇
本文内容源自改编http://blog.csdn.net/ochangwen/article/details/51297893, 针对mysql数据库做了语法更改 个人觉得原版有些不合理之处,改了部分 ...
- SQL语句总结基础篇
创建数据库 CREATE DATABASE 数据库名称; 删除数据库 DROP DATABASE 数据库名称; 创建新表 create table 表名(列 类型 ,列 类型 ,..); 根据已有的表 ...
- SQL语句练习(进阶版)
学生数据库中有三个基本表(关系)如下: 学生表S(Sno,Sname,Age,Sex,SD) 课程表C(Cno,Cname, Teacher) 选课表SC(Sno,Cno,Grade) 请用SQL语言 ...
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
随机推荐
- iPad Pro 如何通过 USB-C 接口外接机械键盘
iPad Pro 如何通过 USB-C 接口外接机械键盘 外接机械键盘 Type-C Dock OK,cnblogs 图片文件不能超过20M https://support.apple.com/zh- ...
- API protocols All In One
API protocols All In One SOAP vs. REST vs. JSON-RPC vs. gRPC vs. GraphQL vs. Thrift https://www.mert ...
- RT-Thread学习笔记3-线程间通信 & 定时器
目录 1. 事件集的使用 1.1 事件集控制块 1.2 事件集操作 2. 邮箱的使用 2.1 邮箱控制块 2.2 邮箱的操作 3. 消息队列 3.1 消息队列控制块 3.2 消息队列的操作 4. 软件 ...
- Linux零拷贝技术
本文转载自Linux零拷贝技术 导语 本文讲解 Linux 的零拷贝技术,云计算是一门很庞大的技术学科,融合了很多技术,Linux 算是比较基础的技术,所以,学好 Linux 对于云计算的学习会有比较 ...
- 【SpringMVC】 4.3 拦截器
SpringMVC学习记录 注意:以下内容是学习 北京动力节点 的SpringMVC视频后所记录的笔记.源码以及个人的理解等,记录下来仅供学习 第4章 SpringMVC 核心技术 4.3 拦截器 ...
- Java基础语法:final修饰符
一.final类 描述: 用'final'修饰的类不能被继承,没有子类. 例如,我们是无法写一个类去继承String类,然后对String类型扩展的,因为API中已经将String类定义为'final ...
- 用代码来实践Web缓存
Web缓存是可以自动保存常见文档副本的HTTP设备.当Web请求抵达缓存时,如果本地有"已缓存的副本",就可以从本地存储设备而不是原始服务器中提取这个文档. 上面是<HTTP ...
- 如何删除Image元素下面的空白行及为什么行内元素有底线
翻译练习 原博客地址:Removing White Space Below Image Elements, or Why Inline Elements Have Descenders HTML中Im ...
- Django Static与Media
关于Django中Static和Media的设置问题(尤其是css和js静态文件加载的问题),网上有很多回答,但是发现有相当一部分回答并不能解决问题.有的可能是Django版本问题,有的是把media ...
- CSS的定位布局(position)
定位 static(默认值) 没有开启定位 relative 相对定位的性质 包含块(containing block)概念 没有开启定位时包含块就是当前元素最近的祖先块元素 开启绝对定位后的元素包含 ...