目录
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语句的练习,多进行实操训练,积累经验,提高自己的数据库操作能力,同时注重理论知识的巩固,做到理论与实践相结合,为后续更复杂的数据库设计和操作打下坚实的基础。
总之,本次实验不仅提升了我的实操能力,也让我对数据库原理有了更深刻的理解。在今后的学习和实践中,我将保持严谨的态度,不断积累经验,努力提升自己的专业技能,将所学知识运用到实际应用中。