数据反映的是事物的状态
事物的状态是经常变化的,所以数据经常需要修改或更新
也包括纠正错误的数据。
这是我们这一节要学习的 内容。
数据的更新使用 UPDATE
基本的格式是 UPDATE 表名
SET 字段名 等于字段值。
这个字段值也可以是一个 表达式,然后是[WHERE
条件表达式],这一部分是 可选的。
其中的条件表达式是字段名、
关系运算符和逻辑运算符连接起来的 式子。
这是 SQL 中的关系运算符
这是大于、 小于、 大于等于、 小于等于,注意这里头的大于号和等于号之间 是不能有空格的。
这是等于,这是不等于。
要注意判断两个 数是不是相等,用一个等号;判断两个数是不是不等,用一个小于号
和一个大于号,这个中间也不能有空格 这些呢,跟有些程序设计语言里头的关系运算符不太一样。
大家要注意不要弄 混了。
这是逻辑运算符。
AND 表示逻辑与; OR
表示逻辑或;NOT 表示逻辑非
SQL 中还有一些特殊的关系运算符
IN 用来判断数据的取值是不是在某个集合当中,比如
这是 jiguan IN ('北京','上海'
'广州'),当籍贯是北京、 上海、 广州之一的时候
这个表达式的值就是 true。
NOT IN 判断 一个表达式的值是不是不在一个集合当中。
如果我们 写籍贯 NOT IN ('北京','上海','广州')
当籍贯不是北京、 上海、 广州的时候,那么它的值就是
true 还有 IS NULL
判断表达式的值是不是 空。
当籍贯取值是空的时候,这个表达式的值就是 true
IS NOT NULL 判别非空
还有 BETWEEN 用来判断
一个表达式的值是不是在某一个范围之内,比如 score BETWEEN 60 AND
100,它实际上表达的意思就是当 score 大于等于
60 并且小于等于 100 的时候 这个表达式的值就是 true。
注意这里头的 BETWEEN 一个数 AND 另一个数,那么它相对是一个 闭区间。
还可以用 NOT BETWEEN 判断一个表达式的值
不在某一个范围之内,像这个表达式的值就是 NOT BETWEEN 18 AND
22,实际上呢判断的区间就是 age 小于
18,或者 age 大于 22。
此外还有 LIKE 表示与某一个模式相匹配,比如
name LIKE 单引号,里头是百分号 瑞百分号。
当 name 这个名字当中,它有一个字是"瑞"的时候,这个表达式的值
就是 true,意思就是说,名字里头含有"瑞"的那样一些人
name LIKE 张百分号,表达的意思是姓张的那些人
NOT LIKE 与某种 模式不匹配。
name NOT LIKE 张百分号 AND
NOT LIKE 王百分号,表达的意思是说,既不姓张也不姓
王的那些人
模式,大家可以理解为其实就是一种格式。
name LIKE 张百分号
表示的那个名字的格式就是第一个字是张,后面呢可以是任意的这个符号。
这个 百分号呢,我们称它为是通配符,也就是说它表示的
不是百分号本身的意思,它是代表了某种格式
这里的百分号呢,代表的是任意一个任意字符,还有一个通配符就是这个下划线
代表一个任意的字符。
如果我们写 name LIKE 张下划线,其实要表达的意思就是说
名字是两个字,并且姓张,姓张 下面我们看一些
修改数据的具体的例子。
数据修改的例子 第一个例子是将学生表中班级名"电气"
修改为"电气 61"。
我们先 打开数据库,数据库 执行。
好,我们就选用了这个数据库。
然后我们先看一下 student 表当中,数据是什么样子的
[空白_录音]
好,这些班级的名称 是电气。
现在我们就是想把这个"电气"改成"电气 61"。
使用 UPDATE 表名,然后呢是
SET 字段名叫
sclass 等于
电气 61,是有条件的。
条件是 WHERE sclass
等于,就把 班级名是"电气"的改成"电气
61",所以 WHERE sclass
等于电气 让我们执行这一句
五行,修改了五行,然后我们再查询一下这个结果
[空白_录音]
好,刚才的"电气"全部改成了"电气 61"。
我们再看一个例子,将 19、 20 岁的人
他们的年龄都加一岁,UPDATE 表名
student SET 年龄等于年龄加一
这是个表达式。
条件是年龄 是 19 岁、 20
岁的那些人,我们可以使用 IN sage IN
后面是个集合,里面是 19 或者说是 20。
那就是说,只要是 19 这个集合里头的 取值之一就是符合我们条件的,就是 true。
当这个是 true 的时候呢,就把这个年龄加了一个一 我们来注意看一下啊,19
岁的一个同学是张昭,20 岁的一个同学叫张瑞。
我们执行 一下这个语句,好 两行被修改。
我们来看一下
这个结果
这两个同学的年龄分别 加了一个
1,刚才是 19、 20,变成了 20 和
21 下面我们再看一个例子。
设置张瑞平的出生日期 为 1995
年 4 月 8 日 这个时候注意看,张瑞平这个人的出生日期是空的
UPDATE 表名
Student SET 出生日期
等于 1995-4-8
条件,名字,他的名字等于
张瑞平
执行这一句,日期就被修改了,我们可以查询一下这个 结果。
这个日期就被修改了 下来我们再看一个例子,计算年龄为
空的人的年龄,就是说像这个张瑞平的年龄是空的,我们想根据他的出生日期
来计算一下这个年龄,并且把这个值呢填写进去 我们写
UPDATE student SET sage
等于这叫 DATEDIFF 一对圆括号,里面是
year sbirthday 逗号,GETDATE 一对圆括号。
GETDATE 一对圆括号,这是一个函数 能够获得当前的日期,那么 DATEDIFF
这也是个函数,它的意思是计算这两个日期的关于年的差值
实际上就是计算两个年之间的差值,那么对于
人的这个当前的日期跟出生的日期来讲的话,其实
计算的就是人的年龄,这个表达式的计算是年龄出来以后呢,赋值给 sage
这样一个字段 条件是呢,sage 就是年龄这个字段是空值的
那么一行,那个记录,我们执行一下这一句
一行被修改,再来看一下结果
[空白_录音]
好,张瑞平的年龄被修改了
变成了 21 岁。
再来看一个例子:将年龄在 17 到 18
岁之间的人的年龄 加 1,这次呢,我们不用
IN 了,我们用 BETWEEN 我们可以写
UPDATE,这是修改数据的关键词 表名
Student 要 SET,我们要改的是年龄还是
sage,等于 sage+1,好,条件呢
WHERE 年龄在 17 到 18
岁之间,那就是年龄 这个字段,它的取值
BETWEEN BETWEEN 谁呢,BETWEEN 17 AND
18,就是在年龄在 17 和 18
之间的 这些人的年龄加 1,我们选择它执行,好,修改了两行
我们再来看这个结果,还可以执行上面这一句,选中它,就是执行这一句
刚才的王涛和王丽,这两个人的年龄,分别加了一个 1
更新多个字段,SET 后面
写多个字段的赋值表达式,它们之间呢用逗号来
隔开
好,修改多个字段,我们要修改
三号同学的班级和名字,分别改成物理51
和张钊,我们看三号同学原来是 电气61,名字张钊,但是呢这个字呢
不一样,UPDATE 表名
SET 班级等于
物理51。
两个字段写一个逗号
要是英文的逗号,班级等于物理51,然后呢姓名
等于张钊
这个字不一样了,这个是有条件的
是哪个同学呢,是三号同学,WHERE 学号
等于 2016 006003,就把三号同学的
班级跟名字修改了
好,我们再来看,我们再来查询一下这个结果
[空白_录音]
[空白_录音] 刚才三号同学名字也改了,班级呢也改了
删除数据 的格式是
DELETE FROM 表名 WHERE
条件 删除的是符合条件的那些记录,这个条件是可选的,如果省略了这个条件
那么就是把这个表里头的所有的数据都删除了
删除 物理 51
班的学生的信息,删除使用 DELETE FROM
表名,加上条件物理 51 班
班级等于 物理
51 我们来执行
没有删除,没有删除,那没有删除什么意思呢?可能
就是没有找到这样子的行,或者没有满足条件这样子的行,那这个是什么原因呢?我们
稍微注意一下,我们刚才修改这个班级的时候,设置的这个三号同学的班级 是物理
51,但是呢我们这个物理 51 前头呢还有一个空格
所以有空格跟没空格呢是不一样的,所以我们这地方删除的时候呢
我们也给它前头加一个空格,然后我们再来执行这一句,好
删除了,我们来查询一下结果 [空白_录音]
查询,好,三号同学的信息没有了,就是说物理 51
班的 那些同学的信息没有了,如果我们要删除这个表中的所有的数据
我们就使用 DELETE FROM Student
然后呢,WHERE 这个条件呢不加了,把所有的数据呢就删除了,但是呢删除所有
的数据大家要,一定要谨慎,确信我们确实事实想
这么做。
这一节 我们介绍了更新数据使用
UPDATE 删除数据使用 DELETE
我们已经学会了如何安装 SQLSERVER
数据库管理系统 学会了如何创建数据库、 创建数据表、
删除数据库 删除数据表、 修改数据表,在数据表中
插入数据、 修改数据和删除数据,下来大家要好好
练一练了