SQL基本语句练习(基础版)
wptr33 2025-08-03 08:48 34 浏览
最近在学习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模板语句--
--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)
以下是SQL语句基本语法的使用
--SELECT 语句用于从表中选取数据--
--结果被存储在一个结果表中--
SELECT 列名称 FROM 表名称
SELECT * FROM 表名称
--WHERE 子句作为SELECT 语句的条件标准--
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值下面的运算符可在 WHERE 子句中使用,同时WHERE语句中还可以配合AND&OR运算符进行进一步地设置条件条件
操作符  | 描述  | 
=  | 等于  | 
<>  | 不等于  | 
>  | 大于  | 
<  | 小于  | 
>=  | 大于等于  | 
<=  | 小于等于  | 
BETWEEN  | 在某个范围内  | 
LIKE  | 搜索某种模式  | 
以下是增删改的基本语法
--INSERT INTO 语句用于向表格中插入新的行--
INSERT INTO 表名称 VALUES (值1, 值2,....)
--也可以指定所要插入数据的列--
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
--DELETE 语句用于删除表中的行--
DELETE FROM 表名称 WHERE 列名称 = 值
--Update 语句用于修改表中的数据--
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
--ALTER TABLE 语句用于在已有的表中添加、修改或删除列--
--在表中添加列--
ALTER TABLE table_name
 ADD column_name datatype
--删除表中的列--
ALTER TABLE table_name 
DROP COLUMN column_name
-部分不支持DROP操作系统请这样操作--
ALTER TABLE table_name ALTER COLUMN column_name datatype最后为笔者的示例代码,仅供参考:
--(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);相关推荐
- oracle数据导入导出_oracle数据导入导出工具
 - 
                        
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
 
- 继续学习Python中的while true/break语句
 - 
                        
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
 
- python continue和break的区别_python中break语句和continue语句的区别
 - 
                        
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
 
- 简单学Python——关键字6——break和continue
 - 
                        
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
 
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - 
                        
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
 
- Python 中 break 和 continue 傻傻分不清
 - 
                        
大家好啊,我是大田。...
 
- python中的流程控制语句:continue、break 和 return使用方法
 - 
                        
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
 
- L017:continue和break - 教程文案
 - 
                        
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
 
- 作为前端开发者,你都经历过怎样的面试?
 - 
                        
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
 
- 面试被问 const 是否不可变?这样回答才显功底
 - 
                        
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
 
- 2023金九银十必看前端面试题!2w字精品!
 - 
                        
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
 
- 前端面试总结_前端面试题整理
 - 
                        
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
 
- 由浅入深,66条JavaScript面试知识点(七)
 - 
                        
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
 
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
 - 
                        
添加图片注释,不超过140字(可选)...
 
- 今年最常见的前端面试题,你会做几道?
 - 
                        
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
 
- 一周热门
 
- 最近发表
 - 
- oracle数据导入导出_oracle数据导入导出工具
 - 继续学习Python中的while true/break语句
 - python continue和break的区别_python中break语句和continue语句的区别
 - 简单学Python——关键字6——break和continue
 - 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
 - Python 中 break 和 continue 傻傻分不清
 - python中的流程控制语句:continue、break 和 return使用方法
 - L017:continue和break - 教程文案
 - 作为前端开发者,你都经历过怎样的面试?
 - 面试被问 const 是否不可变?这样回答才显功底
 
 
- 标签列表
 - 
- git pull (33)
 - git fetch (35)
 - mysql insert (35)
 - mysql distinct (37)
 - concat_ws (36)
 - java continue (36)
 - jenkins官网 (37)
 - mysql 子查询 (37)
 - python元组 (33)
 - mybatis 分页 (35)
 - vba split (37)
 - redis watch (34)
 - python list sort (37)
 - nvarchar2 (34)
 - mysql not null (36)
 - hmset (35)
 - python telnet (35)
 - python readlines() 方法 (36)
 - munmap (35)
 - docker network create (35)
 - redis 集合 (37)
 - python sftp (37)
 - setpriority (34)
 - c语言 switch (34)
 - git commit (34)
 
 
