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 & 显示器
iPad pro 显示器 iPad Pro 如何当做外接屏幕使用 XDisplay https://www.splashtop.com/wiredxdisplay https://play.googl ...
- Ethical Hacking Tutorials
Ethical Hacking Tutorials Free Ethical Hacking Tutorials https://www.guru99.com/ethical-hacking-tuto ...
- H5 APP 页面移动端适配方案
H5 APP 页面移动端适配方案 https://segmentfault.com/a/1190000011586301 https://juejin.im/post/5cbdee71f265da03 ...
- 翻译:《实用的Python编程》01_06_Files
目录| 上一节(1.5 列表) | 下一节 (1.7 函数) 1.6 文件管理 大多数的程序需要从某处读取输入.本节讨论文件访问. 文件输入和输出 打开一个文件: f = open('foo.txt' ...
- 必知必会之Java注解
必知必会之Java注解 目录 不定期更新中-- 元注解 @Documented @Indexed @Retention @Target 常用注解 @Deprecated @FunctionalInte ...
- Vue学习笔记-vue-element-admin 按装报错再按装
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- Linux安装jdk(两种方式)
最近在研究大数据方面的东西,业务场景是从设备采集数据经过处理然后存放DB. 建设上面的环境第一步肯定是安装jdk,所以和大家一起学一下基本知识centos7.5安装jdk1.8. 安装jdk有两种方法 ...
- ServiceMesh
传统微服务架构 在微服务模式下,企业内部服务少则几个到几十个,多则上百个,每个服务一般都以集群方式部署,这时自然产生两个问题: 一.服务发现:服务的消费方(Consumer)如何发现服务的提供方(Pr ...
- CSS的定位布局(position)
定位 static(默认值) 没有开启定位 relative 相对定位的性质 包含块(containing block)概念 没有开启定位时包含块就是当前元素最近的祖先块元素 开启绝对定位后的元素包含 ...
- 【DB宝41】监控利器PMM的使用--监控MySQL、PG、MongoDB、ProxySQL等
目录 一.PMM简介 二.安装使用 三.监控MySQL数据库 MySQL慢查询分析 四.监控PG数据库 五.监控MongoDB数据库 六.监控ProxySQL中间件 一.PMM简介 之前发布过一篇Pr ...