数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据的维护
前言
"<数据库原理及应用>(MySQL版)".以下称为"本书"中2.4节内容
引入
本书P60给出数据维护的概念:数据维护是指用INSERT,DELETE,UPDATE语句来插入,删除,更新数据库中记录行的数据,由DML语言实现,他们是数据库的主要功能之一.
一点推导
假设数据库是有界面的,那么数据的增,删,改首先想到的是直接在界面上操作.所以这部分内容学习重点在于不容易直接在界面操作的部分.因此批量操作是数据维护的重点.
2.4.1插入数据
基本用法
基本语法:
INSERT INTO 表名 [列名1],[列名2]...[列名n]
VALUES (值1,值2...);
举例:
建立新表dept_c,是dept的副本
CREATE TABLE dept_c
SELECT * FROM dept;
插入数据
INSERT INTO dept_c(deptno,dname,loc)
VALUES(50,'PERSONNEL','HONGKONG');
运行结果:
如前所述,基本用法不存在批量操作(一条条输入不算),所以不是关注的重点.原因是基本用法可以在数据库界面中一条条输入,为了简化学习,基本用法做了解即可.
批量插入数据
利用子查询向表中插入数据
应用场景:将一张表A(原始表)的部分行(元组)添加到另一个表B(必须已存在)中.
语法格式(注意本书P61表述有误):
INSERT INTO 表名B
SELECT * FROM 原始表A
WHERE 条件表达式;
举例
1>不能用的语句,不能在此新建表(dept_d),否则报错
/*以下语句报错*/
INSERT INTO dept_d
SELECT * FROM dept
WHERE deptno=10 OR deptno=20 OR deptno=40;
2>本书例2-43
先截断表dept_c;
truncate table dept_c;
注意:在navicat premium lite中,要刷新才看得见效果
输入插入语句
INSERT INTO dept_c
SELECT * FROM dept
WHERE deptno=10 OR deptno=20 OR deptno=40;
运行结果(同样需要刷新)
综合来看,利用子查询向表中插入数据,需要两个步骤
1.建立新表(此时无内容),用CREATE TABLE 新表名 SELECT 语句;
2.子查询将原始表中的部分行插入新表中.
2.4.2更新数据
基本用法
基本语法:
UPDATE 表名
SET [列名1=值1], [列名2=值2] ....
WHERE 条件表达式;
举例---在本书P62例2-44的基础上加了一条更新dname
UPDATE dept_c
SET loc='CHINA',dname='ACCOUNT'
WHERE deptno=10;
运行结果,此时deptno=10对应的dname内容也已改变
更新数据的作用很直观,修改某一个元组的一个或多个属性值.
说明:和前面一样,基本用法不存在批量修改的情况,所以也不是关注的重点.
批量更新
格式:
UPDATE 表名
SET [列名1=值1], [列名2=值2] ....
---和基本语法比起来,只需把WHERE去掉即可.
含义:将全部行(元组)中某属性值改为一个值
举例:见本书P62例2-45
利用子查询修改记录
格式:
UPDATE 表名
SET 列名= SELECT 语句
[WHERE 条件表达式];
含义:更新某个属性的值,其值等于SELECT语句计算的单值.
注意:WHERE条件表达式为可选
如果有WHERE则表示修改某行的某个属性值,没有则表示所有行的某个属性值被修改
举例:见本书P62例2-46
2.4.3删除数据
基本用法
格式:
DELETE FROM 表名
[WHERE 条件表达式];
说明:
1>DELETE是以行(元组)为单位删除数据,而不是删除某个属性值,给他赋值NULL
2>WHERE表达式为可选,如果使用则表示删除具体行;如果不用则表示删除表内所有元组,等同于TRUNCATE TABLE 表名,即截断表.
利用子查询删除(批量删除)
格式:
DELETE FROM 表名
WHERE 列(属性)名=(SELECT 语句);
含义:删除以下行---行的某个属性值等于SELECT语句计算的单值.
举例:本书P63例2-49
SELECT查询结果的总结
SELECT语句查询的结果有表,单值和多值.其中单值和多值的概念见上一篇关于子查询的帖数据库原理及应用_数据库基础_第2章关系数据库标准语言SQL_数据查询(4)子查询-CSDN博客
表:查询出结果为表,就是二维数据
单值:查询结果为单值,有两种情况:
1>组成条件表达式(用在WHERE后),形成新的查询条件.
2>赋值给属性,即"属性=单值",类似于"变量=常量".属性相当于"变量",单值相当于"常量".
例如在更新数据的子查询修改数据时,就是这样写的.
多值:查询结果为多值时,加上IN,ALL,ANY运算符,组成条件表达式用作查询条件.
例如子查询中会用到.
小结
表中元组数据增,删,改操作---数据维护的理解和应用,重点放在批量数据操作上.