900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 使用 T-SQL 语句对数据库表进行单个数据插入 成批数据插入 修改和删除数据操作的介绍

使用 T-SQL 语句对数据库表进行单个数据插入 成批数据插入 修改和删除数据操作的介绍

时间:2021-05-23 02:06:09

相关推荐

使用 T-SQL 语句对数据库表进行单个数据插入 成批数据插入 修改和删除数据操作的介绍

增删改语句的介绍:

一、单个数据插入语句

INSERT

INTO 表名 [(属性列 1,属性列 2 … )]

VALUES (常量 1 ,常量 2 … )

说明:

插入一个新元组,新元组属性列 1 的值为常量 1,属性列 2 的值为常量 2…

INTO 子句中没有出现的属性列, 新元组在这些属性列上将置空值。但必须注意的是,在表定义时说明了 NOT NULL 的属性列不能置空值,否则会出错。

出错原因:主码具有唯一性和不可重复性,当主码为空时,唯一性约束被破坏所以主码列不能重复和为空值。如果该列不是主码,则说明设置了unique属性。

unique约束:

1.UNIQUE 约束唯一标识数据库表中的每条记录。(可以理解为增加UNIQUE约束的列为只有该表中才有的属性)

2.UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

3.PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

参考网址:/sql/sql-unique.html

请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

如果 INTO 子句中没有指明任何属性列名,则新插入的记录必须在每个属性列上均有值,而且常量的顺序与属性列的顺序相对应;

如果基本表后面有属性列,属性列的排列顺序不一定要和表定义时顺序一致, 但VALUES 后的常量值对应于属性列名中的分量的值,个数相等。

二、成批数据插入语句

INSERT

INTO 表名 [(属性列 1,属性列 2 … )]

子查询

上述命令的功能是一次将子查询的结果全部插入指定表中。

三、删除数据语句

DELETE

FROM 表名

WHERE 删除限定条件

功能:从指定表中删除满足 WHERE 子句条件的所有记录。该语句中没有 WHERE 子句时,表示删除此表中的全部记录,但此表的结构不会被删除,此表的定义仍在数据字典中。

需要说明的是:

数据删除只能对整个元组或一条记录操作,不能只删除某些属性上的值;

数据删除只能对一个表起作用,若要从多个表中删除元组,则必须对每个表分别执行删除命令。

四、更新数据语句

UPDATE 表名

SET 属性列 1=常量 1,属性列 2=常量 2...

WHERE 更新限定条件

功能:修改基本表中满足条件表达式的那些元组的属性值,用 SET 子句中的值表达式修改原来的属性值。。如果省略 WHERE 子句,则表示要修改表中的所有元组。

代码实现:

1.在 SQL Server Management Studio 中向数据库 XSGL 的 student 表加入如表所示的数据(这里为了方便我重新建立了数据库XSGL2 )

student 表记录

2.建立一个新表‘成教表’ chengjiao, 结构与 student 表相同。

T-SQL语句:

CREATE TABLE chengjiao (

SNO char (8) not null unique, SNAME char(10),

SEX char(2), DNO char(8),

AGE smallint, BIRTHDAY datetime )

3.将一个新学生(学号:‘ 7027’,姓名:‘ 张三’,年龄:20,所在系编号:‘ 0002’ )插入到学生表中。

T-SQL语句:

INSERT INTO student(SNO,SNAME,AGE,DNO)

VALUES (‘7027’,‘张三’,20,‘0002’)

结果如图:

4.按如下语句插入另外两个同学的信息到成教表中

T-SQL语句:

INSERT INTO chengjiao(SNO,SNAME,AGE,DNO)

VALUES (‘7011’,‘王二’,23,‘0003’)

INSERT INTO chengjiao(SNO,SNAME,AGE,DNO)

VALUES (‘7021’,‘张三’,19,‘0003’)

说明:插入的数据必须符合数据库的完整性约束

结果如图:

5.将成教表 chengjiao 中的所有学生一次性添加到学生表 student 中。

T-SQL语句:

INSERT INTO student (SNO,SNAME,SEX,DNO)

(SELECT SNO,SNAME,SEX,DNO FROM chengjiao)

结果如图:

6.依据学生的生日, 计算出该学生的年龄

T-SQL语句:

UPDATE student

SET AGE=(YEAR(GETDATE())-YEAR(BIRTHDAY))

未计算之前从上图可以看出李一和李二的生日并未显示

运行后结果如图:

7.将所有安排在 B101 的课程调整到 A302(这里以及下面的T-SQL语句的实现,我用到了老师提供的数据库包括课程表,选课表等等)

T-SQL语句:

UPDATE course

SET ROOM=‘A302’

WHERE ROOM='B101’

前后对比如下图:

8.将选课表中的‘概率论与数理统计’课程的成绩减去 4 分

T-SQL语句:

UPDATE sc SET GRADE=GRADE-4

WHERE CNO IN

(SELECT CNO FROM course

WHERE CNAME=‘概率论于数理统计’)

组课程表这里我们可以看到:概率论与数理统计的课程号CNO为000401

然后在sc表即选课表中发现其中一个学生的概率论与数理统计的成绩如下图:

运行上述T-SQL语句后,结果如下图:

9.从排课表中删除‘ 张聪’ 老师的所有排课纪录

T-SQL语句:

DELETE FROM course

WHERE TNAME='张聪’

这里我直接执行该语句发现有错误:

DELETE 语句与 REFERENCE 约束"FK__sc__CNO__24927208"冲突

仔细看sc选课表跟course课程表发现两表都有课程名CNO这一项,即有外键对两表进行约束,不能直接删除相关内容,所以我们要解除外键的约束(参考CSDN文章:SQL主键和外键约束)

在查询中执行下面语句:

alter table sc drop CONSTRAINT FK__sc__CNO__24927208

这时我们再运行删除相关语句,前后结果对比如下:

删掉了🙊🙊👏🏾👏🏾👏🏾👏🏾

10. 删除学院编号为空的学生记录及选课记录(这个语句由于表中数据太多 不好举例子 所以就跳过)

T-SQL语句:

DELETE FROM sc WHERE SNO IN

(SELECT SNO FROM student WHERE DNO is NULL)

DELETE FROM student WHERE DNO is NULL

说明:为了满足数据的完整性约束要求,必须先在选课表中删除该生的选课纪录,再在学生表中删除该名学生

11. 删除表 ’ excelxuanke’

T-SQL语句:

DROP table excelxuanke

这里我直接建了一个表excelxuanke来举例

运行语句前后:

也是删掉了👏🏻👏🏻👏🏻👏🏻

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。