【数据库原理 实验报告3】索引的创建以及数据更新

上一篇:【数据库原理 实验报告2】创建和管理数据表

目录

一.索引的创建和撤销

二.数据更新

实验心得

SQL语言使用数据定义语言(DATA DEFINITION LANGUAGE,简称DDL)实现其数据定义功能,可对数据库、数据库用户、基本表、视图、索引进行定义和撤消。

数据更新语句INSERT/ DELETE/ UPDATE对表数据进行操作。

【实验目的】

掌握SQL Server数据定义语言的使用,能独立按要求进行数据库、基本表、进行定义和撤消。

掌握数据更新语言INSERT/ DELETE/ UPDATE的使用,能独立按要求对数据库进行指定的数据更新操作。

一.索引的创建和撤销

1.1按教材81页例题3.6给S表创建索引

截图:

代码:

sql 复制代码
CREATE INDEX SC_INDEX ON S(S#)

1.2按教材81页例题3.7给S表撤销索引

截图:

代码:

sql 复制代码
DROP INDEX SC_INDEX ON S

二.数据更新

2.1 使用实验一中创建的数据库验证教材P98第3章第4节例3.25---3.27。

3.25:

截图:

代码:

sql 复制代码
INSERT INTO S(S#,SNAME,AGE,SEX)
	VALUES('S36','GU',20,'M')

INSERT INTO SC(S#,C#)
	VALUES('S5','C8')

INSERT INTO SC
	VALUES('S4','C4',85),
		  ('S3','C6',90),
		  ('S7','C2',70)

INSERT INTO SC(S#,AVG_SCORE)
	SELECT S#,AVG(SCORE)
	FROM SC
	WHERE S# IN
		(SELECT S# FROM S WHERE SEX='M')
	GROUP BY S#
		HAVING AVG(SCORE)>80;

INSERT INTO SC(S#,C#)
RABLE SC4;

3.26:

截图:

代码:

sql 复制代码
DELETE FROM SC
WHERE C# IN(SELECT C#
			FROM C
			WHERE CNAME='MATHS')

DELETE FROM SC
WHERE C#='C4'
	AND SCORE<(SELECT AVG(SCORE)
				FROM SC
				WHERE C#='C4');

3.27

截图:

代码:

sql 复制代码
UPDATE C
SET CNAME='DB'
WHERE C#='C5';

UPDATE SC
SET SCORE=SCORE*1.1
WHERE S# IN(SELECT S#
			FROM S
			WHERE SEX='F');

UPDATE SC
SET SCORE=SCORE*1.05
WHERE C#='C4'
	AND SCORE<(SELECT AVG(SCORE)
				FROM SC
				WHERE C#='C4');

UPDATE C
SET ROW=('C5','DB','T3')
WHERE C#='C5';

2.2向S表中添加3条学生信息,分别是:

学号为S13, 姓名为高翔,性别为男,年龄为20 。

学号为S14, 姓名为张军,性别为男,年龄为21 。

学号为S15, 姓名为刘云,性别为女,年龄为20 。

截图:

代码:

sql 复制代码
INSERT INTO S (S#,SNAME,SEX,AGE)VALUES ('S13', '高翔', '男', 20);
INSERT INTO S (S#,SNAME,SEX,AGE) VALUES ('S14', '张军', '男', 21);
INSERT INTO S (S#,SNAME,SEX,AGE) VALUES ('S15', '刘云', '女', 20);

2.3新建一个表student(no char(6),name char(10),address char(50),sex char(4),age smallint ),把S表的全部内容插入到student表中

截图:

代码:

sql 复制代码
CREATE TABLE student (
    no CHAR(6),
    name CHAR(10),
    address CHAR(50),
    sex CHAR(4),
    age SMALLINT
);

INSERT INTO student (no, name, address, sex,age)
SELECT S#,Sname,address,Sex,age FROM S;

2.4 在S表中将"高翔"同学的年龄加2。

截图:

代码:

sql 复制代码
UPDATE S
SET age=age+2;

2.5 在S表中删除年龄为20岁的学生记录。

截图:

代码:

sql 复制代码
DELETE FROM S
WHERE age=20;

2.6 修改'高翔'同学的学号为'S14',请记录提示信息。

截图:

代码:

sql 复制代码
UPDATE S
SET S#= 'S14'
WHERE Sname='高翔';

2.7 删除表student的所有数据。

截图:

代码:

sql 复制代码
DELETE FROM student;

实验心得

本次数据库原理课程设计实验,主要围绕索引的创建与撤销、数据更新语句的使用展开,通过实操练习,我进一步掌握了SQL Server数据定义语言和数据更新语言的核心用法,也深刻体会到理论与实践结合的重要性,同时在实操过程中发现了自身的不足,收获颇丰。

本次实验的核心内容分为两大部分:索引的创建与撤销、数据更新操作。在索引操作部分,我按照实验要求,参照教材例题完成了S表索引的创建与撤销。创建索引时,使用CREATE INDEX语句为S表的S#字段建立索引,看似简单的一行代码,实则需要准确把握表名、字段名的拼写,稍有疏忽就会出现语法错误。而撤销索引时,DROP INDEX语句的使用同样需要注意索引名与表名的对应关系,确保索引能够被正确删除。通过这部分操作,我明白了索引在数据库中的作用------合理的索引能够提高数据查询效率,尤其是在数据量较大的表中,索引的优势会更加明显,同时也理解了索引并非越多越好,不当的索引反而会增加数据更新的负担。

数据更新操作是本次实验的重点,也是实操过程中遇到问题最多的部分。实验中,我先后使用INSERT、DELETE、UPDATE三种语句,完成了数据的插入、删除和修改,涵盖了单条数据操作、多条数据批量操作,以及结合子查询的复杂更新操作。在执行INSERT语句插入数据时,我最初因忽略字段顺序与值的对应关系,导致数据插入失败,后来通过核对表结构,明确字段类型和顺序,顺利完成了数据插入。尤其是批量插入多条SC表数据时,学会了使用逗号分隔多个VALUES子句,提高了操作效率;而通过子查询插入数据的操作,让我进一步理解了SELECT语句与INSERT语句的结合使用,掌握了根据条件筛选数据并插入目标表的方法。

在UPDATE语句的使用中,我遇到了两个典型问题:一是修改"高翔"同学年龄时,因未添加WHERE条件,导致S表中所有学生的年龄都增加了2,违背了实验要求,这让我深刻认识到WHERE子句在更新、删除操作中的重要性,稍有不慎就会造成数据误操作,甚至导致数据丢失;二是修改"高翔"同学学号为"S14"时,出现了主键冲突的提示信息,这才意识到S#作为主键,具有唯一性,不能与已存在的学号重复,也让我对主键约束的作用有了更直观的理解。这些错误让我明白,SQL语句的编写必须严谨,每一个语法、每一个条件都要反复核对,确保操作的准确性。

DELETE语句的操作中,删除年龄为20岁的学生记录和删除student表所有数据的操作,让我掌握了根据条件删除数据和清空表数据的方法,同时也注意到,删除数据前一定要确认条件的准确性,避免误删重要数据,而且清空表数据与删除表本身的区别,DELETE语句只是删除表中的数据,表结构依然存在,这与DROP TABLE语句有本质的不同。此外,新建student表并将S表数据插入其中的操作,让我学会了CREATE TABLE语句的完整用法,以及INSERT与SELECT语句的结合,实现了数据的批量迁移。

通过本次实验,我不仅熟练掌握了索引创建与撤销、数据更新的核心SQL语句,更深刻体会到数据库操作的严谨性和规范性。理论学习中,我对DDL和DML语句的理解较为抽象,而通过亲手实操,将课本上的语法知识转化为实际操作能力,不仅加深了对知识点的记忆,也发现了理论学习中的盲区。同时,实验中遇到的错误也让我学会了排查问题、解决问题的方法,培养了自己的耐心和细心,明白数据库操作容不得半点马虎,每一个细节都可能影响实验结果。

本次实验也让我认识到自身的不足:对复杂子查询的运用还不够熟练,在结合子查询进行数据更新时,偶尔会出现逻辑错误;对索引的作用和使用场景理解还不够深入,后续还需要进一步学习索引的优化方法。在今后的学习中,我将加强SQL语句的练习,多进行实操训练,积累经验,提高自己的数据库操作能力,同时注重理论知识的巩固,做到理论与实践相结合,为后续更复杂的数据库设计和操作打下坚实的基础。

总之,本次实验不仅提升了我的实操能力,也让我对数据库原理有了更深刻的理解。在今后的学习和实践中,我将保持严谨的态度,不断积累经验,努力提升自己的专业技能,将所学知识运用到实际应用中。

相关推荐
加农炮手Jinx2 小时前
Flutter for OpenHarmony:postgrest 直接访问 PostgreSQL 数据库的 RESTful 客户端(Supabase 核心驱动) 深度解析与鸿蒙适配指南
数据库·flutter·华为·postgresql·restful·harmonyos·鸿蒙
xiaohe072 小时前
Spring Boot 各种事务操作实战(自动回滚、手动回滚、部分回滚)
java·数据库·spring boot
setmoon2142 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
2401_833197733 小时前
为你的Python脚本添加图形界面(GUI)
jvm·数据库·python
执笔画情ora3 小时前
oracle数据库优化-表碎片优化性能。
数据库·oracle
givemeacar3 小时前
Spring Boot中集成MyBatis操作数据库详细教程
数据库·spring boot·mybatis
skiy3 小时前
MySQL Workbench菜单汉化为中文
android·数据库·mysql
IvorySQL4 小时前
PostgreSQL 技术日报 (3月24日)|当 MVCC 成本被重新审视
数据库·postgresql·开源
2401_895521344 小时前
PostgreSQL_安装部署
数据库·postgresql