网站首页 > 知识剖析 正文
最近在学习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);
猜你喜欢
- 2024-11-22 做测试不会 SQL?超详细的 SQL 查询语法教程来啦!
- 2024-11-22 MySQL之SQL优化
- 2024-11-22 「SQL数据分析系列」4.过滤操作
- 2024-11-22 数据分析师数据查询方法必备,SQL取数,简单查询与高级查询
- 2024-11-22 5大步骤+10个案例,堪称业内SQL优化万能公式
- 2024-11-22 SQL点滴(查询篇):数据库基础查询案例实战
- 2024-11-22 「SQL」 当我们join数据时,到底发生了什么?一文让你不再混淆
- 2024-11-22 002 Excel SQL 比较运算符的使用--OLE DB方法
- 2024-11-22 十分钟入门Fink SQL
- 2024-11-22 MySQL数据库常用的子查询SQL命令
- 05-14HTML5教程从《HTML+CSS基础课程》学习笔记中的技巧
- 05-14HTML 简介
- 05-14豆包给我输出的html在线象棋源码(有点简单)
- 05-14零基础学习HTML之html框架内嵌框架和head头信息设置
- 05-14nodejs搭建服务器显示静态html页面
- 05-14一个简单的个人网站模板
- 05-14DinkToPdf: .Net轻松搞定Html转PDF生成,几分钟上手!
- 05-148行代码实现一个websoket
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)