数据库系统概论学习笔记(五):SQL的简单应用之数据更新
来源:互联网 发布:专业销售数据采集器 编辑:程序博客网 时间:2024/06/15 04:43
非常简单,只有三种 —— 插入、更新、删除
插入数据
官方文档:https://dev.mysql.com/doc/refman/5.7/en/insert.html
插入元组
SQL语句格式:
INSERT
INTO <表名> [ ( <列名1>, <列名2>, … ) ]
VALUES ( <常量1>, <常量2>, … );
例1、将一个新学生元组(学号:‘200215128’,姓名:‘陈冬’,性别:‘男’,所在系:‘IS’,年龄:‘18岁’)插入到学生表里。
INSERTINTO Student(Sno,Sname,Ssex,Sdept,Sage)VALUES('200215128','陈冬','男','IS',18);
也可以省略Student后面的“(…)”的部分,但是VALUES后面的值就要严格的按照CREATE TABLE时的次序了。所以上例还可以写成。
INSERTINTO StudentVALUES('200215128','陈冬','男',18,'IS');
Student表结构如下:
还可以插入元组的一部分,前提是插入元组的未赋值的属性可以为空,见例2。
例2、插入一条选课记录(’200215128’,’1’)。
INSERTINTO SC(Sno,Cno)VALUES('200215128','1');
插入子查询的结果
SQL语句格式:
INSERT
INTO <表名> [ ( <列名1>, <列名2>, … ) ]
子查询;
例3、对每一个系,求学生的平均年龄,并把结果存入数据库。
首先,建立一个新表存放系名(Sdept)和平均年龄(Avg_age),保证数据结构与Student表中对应属性相同。
CREATE TABLE Dept_Avg_Age ( Sdept CHAR(20) PRIMARY KEY, Avg_age SMALLINT);
然后,对Student表中元组按系名分组,求平均年龄,并存入表Dept_Avg_Age。
INSERTINTO Dept_Avg_Age(Sdept,Avg_age)SELECT Sdept,AVG(Sage)FROM StudentGROUP BY Sdept;
更新数据
官方文档:https://dev.mysql.com/doc/refman/5.7/en/update.html
SQL语句格式:
UPDATE <表名>
SET <列名> = <表达式> [ ,<列名> = <表达式> ,<列名> = <表达式> ,…]
[ WHERE <条件> ];
更新某一个元组的值
例4、将学生200215121的年龄改为22岁。
UPDATE StudentSET Sage = 22WHERE Sno = '200215121';
更新多个元组的值
例5、将所有学生年龄增加1岁。
UPDATE StudentSET Sage = Sage + 1;
带子查询的的更新语句
例6、将计算机科学系所有学生的成绩置0。
/* 以类似相关子查询的思路理解这条语句 */UPDATE SCSET Grade = 0WHERE 'CS' = ( SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno);
删除数据
官方文档:https://dev.mysql.com/doc/refman/5.7/en/delete.html
SQL语句格式:
DELETE
FROM <表名>
[ WHERE <条件> ] ;
删除某一个元组的值
例7、删除学号为200215128的学生记录。
DELETEFROM StudentWHERE Sno = '200215128';
删除的时候出现图示错误,意思是在表SC中存在某元组,其Foreign Key参考了Student中预删除的这个元组,故必须先将SC中的子记录删除。
DELETEFROM SCWHERE Sno = '200215128';
删除多个元组的值
例8、删除所有学院的学生平均年龄记录。
DELETEFROM Dept_Avg_Age;
带子查询的删除语句
例9、删除计算机科学系所有学生记录。
DELETEFROM SCWHERE 'CS' = ( SELECT Sdept FROM Student WHERE Student.Sno = SC.Sno );
总之,数据更新不难,难的是实际工作中的“一不小心”。
- 数据库系统概论学习笔记(五):SQL的简单应用之数据更新
- 数据库系统概论学习笔记(三):SQL的简单应用之数据定义
- 数据库系统概论学习笔记(四):SQL的简单应用之数据查询
- 数据库系统概论学习笔记(六):SQL的简单应用之试视图
- 数据库系统概论学习笔记(一)
- 数据库系统概论 学习笔记(二)
- 数据库系统概论学习笔记(二):更多的概念
- 《数据库系统概论》学习笔记
- 数据库系统概论学习笔记(10月14日首发,10月22日更新)
- 数据库系统概论学习笔记(七):安全性,数据完整性(触发器)
- 数据库系统概论第五版学习笔记数据查询 第三章(二)
- 数据库系统概论学习笔记---关系的俩个完整性
- 数据库概论学习笔记------数据的完整性约束
- 数据库系统概论 学习笔记(三)第一部分
- 数据库系统概论 学习笔记(三)第二部分
- 数据库系统概论 学习笔记(三)第三部分
- 数据库系统概论 学习笔记(三)第四部分
- 数据库系统概论 学习笔记(三)第五部分
- 读《遇到问题为什么应该自己动手》有感
- Glide 使用解析
- jvm详解
- RelativeLayout.LayoutParams学习与运用
- 二叉树的递归实现
- 数据库系统概论学习笔记(五):SQL的简单应用之数据更新
- hostapd移植步骤
- 保存图片到相册
- makefile 强制使用静态链接库
- 板卡设计
- ROS velodyne 连接点云并且显示
- C语言学习
- UVa-1368
- postgresql出现Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.