【SQL Server数据库】数据的增删改操作

目录

一、用SQL语句完成下列功能。

1、新开设一门课程,名叫网络安全与防火墙,学时40,编号为"0118",主要介绍网络的安全与主要的防火墙软件。

2、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把学生相应的个人资料插入到monitor表中。

3、更新所有职称为"助教"的教师职称为"助理教师"。

4、在所有经济系班级的名称前加上"经济系"三个字。

5、学号为"980101005"的学生的"数据结构"课程成绩改为80分。

6、删除studentgrade表中所有成绩不及格的记录。

7、删除studentgrade表中学号以"99"开头的学生选修课程的记录。

8、删除课程名为"C语言导论"的课程信息和所有这门课的选课信息。

二、小结

1.思考Alter与Update,Drop与Delete的区别

2.对数据进行插入、修改、删除时需要注意哪些问题?


一、用SQL语句完成下列功能。

1、新开设一门课程,名叫网络安全与防火墙,学时40,编号为"0118",主要介绍网络的安全与主要的防火墙软件。

sql 复制代码
insert into Course values 
('0118','网络安全与防火墙','40','网络的安全与主要的防火墙软件');

2、先建立monitor表,其结构与student表大致一样.包含student表的学号、姓名、性别和班级编号,然后把学生相应的个人资料插入到monitor表中。

sql 复制代码
-- 建表

create table Monitor(

    Stu_id varchar(10) not null ,

    Stu_name varchar(8) not null ,

    Stu_sex varchar(2) not null default '男',

    Class_id varchar(4) not null,

    CONSTRAINT pk_monitor primary key clustered (Stu_id),

    CONSTRAINT fk_class foreign key (Class_id) references Class(Class_id)

)

-- 插入数据

insert into Monitor

select s.Stu_id, s.Stu_name, s.Stu_Sex, s.Class_id

from Student s,

     Class c

where s.Stu_id = c.Monitor;

3、更新所有职称为"助教"的教师职称为"助理教师"。

sql 复制代码
update Teacher

set TechPost = '助理教师'

where TechPost = '助教';

4、在所有经济系班级的名称前加上"经济系"三个字。

sql 复制代码
/*1. 直接更新无法完成,因为有触发器影响*/

/*以下语句查到了Class表存在触发器T_3*/

use school

go

exec sp_helptrigger "Class"



/*停用触发器*/

ALTER TABLE Class DISABLE TRIGGER T_3;

/*更新成功*/

update Class set Class_name = concat('经济系',Class_name)

where Depar_id = (select Depar_id from Deparment where Depar_name = '经济系');

/*2.用 SUBSTRING函数 去掉 Class_name 字段值的第一个字符,即索引从1开始*/

-- 从第二个字符开始截取长度为原始字符串长度减去1的子字符串。

update Class

set Class_name = substring(Class_name, 2, len(Class_name))

where Depar_id = (select Depar_id from Deparment where Depar_name = '经济系');

5、学号为"980101005"的学生的"数据结构"课程成绩改为80分。

sql 复制代码
update StudentGrade

set Grade = 80

where Stu_id = '980101005'

  and Course_id = (select Course_id

                   from Course

                   where Course_name = '数据结构');

6、删除studentgrade表中所有成绩不及格的记录。

sql 复制代码
delete from StudentGrade 
    
    where Grade < 60;

7、删除studentgrade表中学号以"99"开头的学生选修课程的记录。

sql 复制代码
delete from StudentGrade 

    where Stu_id like '99%';

8、删除课程名为"C语言导论"的课程信息和所有这门课的选课信息。

(尽量不用级联删除,因级联需在创建表时定义。)

sql 复制代码
/*先删除选课记录,再删除课程教师表里对应的安排,最后删除课程*/

delete from StudentGrade where Course_id = (select Course_id from Course where Course_name = 'c语言');

delete from CourseTeacher where Course_id = (select Course_id from Course where Course_name = 'c语言');

delete from Course where Course_name = 'c语言';

二、小结

1.思考Alter与Update,Drop与Delete的区别

ALTER:用于修改数据库对象的结构或属性,例如修改表的列、添加索引或约束等。ALTER 语句通常用于更改数据库架构。

UPDATE:用于修改表中的数据,可以将表中的一些行或列的值更改为新的值。UPDATE 语句用于更新已有的数据。

DROP 和 DELETE 都可以用于删除数据或对象,但它们的作用范围不同。

DROP:通常用于删除数据库对象,例如表、视图、存储过程或函数等。

DELETE:用于删除表中的数据,可以删除表中的一些行或列。DELETE 语句用于删除已有的数据。

2.对数据进行插入、修改、删除时需要注意哪些问题?

数据完整性:确保插入、修改或删除的数据满足数据库表的约束和规则。例如,不违反主键、唯一性约束以及外键关系等。

数据备份和恢复:在进行重要的数据插入、修改和删除操作之前,应该先进行数据备份。这样可以在意外情况下恢复数据,避免数据丢失或损坏。

数据一致性维护:在进行数据修改和删除操作时,需要考虑与其他相关数据的一致性。例如,在删除某个表中的数据时,可能需要同时更新其他表中的相关数据,以确保数据的一致性。

错误处理和异常处理:在进行数据操作时,需要考虑可能出现的错误和异常情况,并进行适当的错误处理和异常处理。这包括处理数据冲突、数据重复、约束冲突等情况,以及记录错误日志或向用户提供适当的错误提示。

性能优化:对于大规模的数据插入、修改和删除操作,需要考虑性能优化的问题。可以通过批量操作、合理使用索引、优化查询语句等方式来提高操作的效率和响应速度。

相关推荐
小码的头发丝、34 分钟前
Django中ListView 和 DetailView类的区别
数据库·python·django
Karoku06644 分钟前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
周全全1 小时前
MySQL报错解决:The user specified as a definer (‘root‘@‘%‘) does not exist
android·数据库·mysql
白云如幻1 小时前
MySQL的分组函数
数据库·mysql
荒川之神2 小时前
ORACLE 闪回技术简介
数据库·oracle
时差9533 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式3 小时前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
秋意钟4 小时前
MySQL日期类型选择建议
数据库·mysql
山海青风4 小时前
第七篇: BigQuery中的复杂SQL查询
sql·googlecloud