SQL Server 2016 学习记录 --- 数据更新

8 篇文章 0 订阅
7 篇文章 1 订阅

学习目标:

1、插入数据
2、修改数据
3、删除数据
4、空值的处理


学习内容:

1、插入数据

两种插入数据方式:

  • 插入元组
  • 插入子查询结果
    – 可以一次插入多个元组

语句格式:
INSERT
INTO <表名> [(<属性列1>[,<属性列2 >…)]
VALUES (<常量1> [,<常量2>]… );
功能:将新元组插入指定表中

  • INTO子句
    指定要插入数据的表名及属性列
    属性列的顺序可与表定义中的顺序不一致
    没有指定属性列:表示要插入的是一条完整的元组,且属性列属性与表定义中的顺序一致
    指定部分属性列:插入的元组在其余属性列上取空值
  • VALUES子句
    提供的值必须与INTO子句匹配
    值的个数
    值的类型
--[例3.69]将一个新学生元组(学号:201215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
INSERT
INTO  Student (Sno,Sname,Ssex,Sdept,Sage)
VALUES ('201215128','陈冬','男','IS',18);

--[例3.70]将学生张成民的信息插入到Student表中。
INSERT
INTO  Student
VALUES ('201215126','张成民','男',18,'CS');

--[例3.71] 插入一条选课记录( '200215128','1 ')。
INSERT
INTO SC(Sno,Cno)
VALUES ('201215128 ',' 1 ');
/*关系数据库管理系统将在新插入记录的Grade列上自动地赋空值*/

插入子查询结果
语句格式
INSERT
INTO <表名> [(<属性列1> [,<属性列2>… )]
子查询;
INTO子句

  • 子查询
    SELECT子句目标列必须与INTO子句匹配
    值的个数
    值的类型
--[例3.72]  对每一个系,求学生的平均年龄,并把结果存入数据库
--建表
CREATE  TABLE  Dept_age
    ( Sdept     CHAR(15)                     /*系名*/
     Avg_age SMALLINT); 	/*学生平均年龄*/
--插入数据
INSERT
INTO  Dept_age(Sdept,Avg_age)
        SELECT  Sdept,AVG(Sage)
        FROM     Student
        GROUP BY Sdept;

2、修改数据

语句格式
UPDATE <表名>
SET <列名>=<表达式>[,<列名>=<表达式>]…
[WHERE <条件>];

功能

  • 修改指定表中满足WHERE子句条件的元组
    SET子句给出<表达式>的值用于取代相应的属性列
    如果省略WHERE子句,表示要修改表中的所有元组

三种修改方式:

  • 修改某一个元组的值
--[例3.73]  将学生201215121的年龄改为22岁
UPDATE  Student
SET Sage=22
WHERE  Sno=' 201215121 '; 

修改多个元组的值

--[例3.74]  将所有学生的年龄增加1岁。         
UPDATE Student
SET Sage= Sage+1;

带子查询的修改语句

--[例3.75]  将计算机科学系全体学生的成绩置零。      
UPDATE SC
SET     Grade=0
WHERE Sno  IN
        (SELECT Sno
        FROM     Student
        WHERE  Sdept= 'CS' );

3、删除数据

语句格式
DELETE
FROM <表名>
[WHERE <条件>];
功能:删除指定表中满足WHERE子句条件的元组
WHERE子句

  • 指定要删除的元组
    缺省表示要删除表中的全部元组,表的定义仍在字典中

三种删除方式:

-删除某一个元组的值

--[例3.76]  删除学号为201215128的学生记录。
DELETE
    FROM Student
    WHERE Sno= '201215128';

删除多个元组的值

--[例3.77]  删除所有的学生选课记录。
DELETE FROM SC;

带子查询的删除语句

--[例3.78]  删除计算机科学系所有学生的选课记录。
DELETE FROM  SC
WHERE  Sno  IN
	(SELETE  Sno
		    FROM   Student
		    WHERE  Sdept= 'CS') ;

4、空值的处理

(1)空值NULL:一般表示未知信息或没意义的信息表示,这在关系表中是常见的

(2)在SQL语句中,要想判断一个属性的值是否为空值,不应该使用条件表达式xxx=NULL,而是用IS NULL或IS NOT NULL来看

(3)我们在属性定义时,有这样的规定:

有NOT NULL约束的不能取空值
有UNIQUE约束的不能取空值
码的诸属性不能取空值

(4)运算法则:
空值与任何一个值的算术运算的结果为空值;
空值和任何一个值的比较运算的结果为UNKNOWN;
如果有UNKNOWN,则遵从以下运算规则:
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值