
一、实验目的1.熟练使用 INSERT插入、UPDATE修改、DELETE删除 语句完成学生、教师、课程、选课数据的增、改、删操作。2掌握批量数据更新、删除的 SQL 编写方法理解 WHERE 子句在数据操作中的核心作用。3理解多表关联下的数据操作逻辑比如 “删除无学生选修的课程” 这类需要子查询 / 关联查询的场景。二、实验内容11. 问题描述本实验设计 STUDENTS、TEACHERS、COURSES、CHOICES四张表围绕数据的增、改、删操作展开实践数据库设计①创建STUDENTS、COURSES、TEACHERS、CHOICES四个表②根据题意对表进行 INSERT插入、UPDATE修改、DELETE删除 语句操作3. 程序实现CREATETABLESTUDENTS(SNOCHAR(10)PRIMARYKEY,SNAMEVARCHAR(20)NOTNULL,EMAILVARCHAR(30),GRADEINT);GOINSERTINTOSTUDENTS(SNO,SNAME)VALUES(800022222,WangLan);--1.3.51CREATETABLETEACHERS(TNOCHAR(10)PRIMARYKEY,TNAMEVARCHAR(20)NOTNULL,EMAILVARCHAR(30),SALARYDECIMAL(7,2));GOINSERTINTOTEACHERSVALUES(200001000,LXL,s4zrckpew.net,3024);--1.3.5 (2)UPDATETEACHERSSETSALARY4000WHERETNO200010493;--1.3.5 (3)UPDATETEACHERSSETSALARY2500WHERESALARY2500;--1.3.5 (4)UPDATETEACHERSSETTNAMErnuoxWHERETNO200016731;--1.3.5 (5)UPDATESTUDENTSSETGRADE2001WHERESNO800071780;--1.3.5 (6)DROPTABLEIFEXISTSCOURSES;CREATETABLECOURSES(CNOCHAR(10)PRIMARYKEY,CNAMECHAR(10)NOTNULL);GODROPTABLEIFEXISTSCHOICES;CREATETABLECHOICES(SNOCHAR(10),CNOCHAR(10),TNOCHAR(10),SCOREDECIMAL(5,2),PRIMARYKEY(SNO,CNO,TNO));GODELETEFROMCOURSESWHERECNONOTIN(SELECTCNOFROMCHOICES)--1.3.5 (7)DELETEFROMSTUDENTSWHEREGRADE1998--1.3.5 (8)DELETEFROMSTUDENTSWHERESNONOTIN(SELECTSNOFROMCHOICES)--1.3.5 (9)DELETEFROMCHOICESWHERESCORE60;--1.3.5 (10)一、实验目的1、掌握 SQL Server 中视图的创建、查询、更新、删除操作。2、理解视图的作用。3、掌握带约束条件的视图 WITH CHECK OPTION 的用法与作用。4、学会通过视图对基表进行插入、修改、删除操作。5、理解视图与基表之间的数据关系。实验内容21.问题描述本次实验在学生选课数据库中进行要求完成视图的创建、查询、插入、修改与删除操作。通过多表连接建立视图测试视图数据更新规则以及检查约束对视图的影响掌握视图的使用特点。2.数据库设计本次实验数据库包含学生、教师、课程、选课四张数据表。各表合理设置主键约束用来存储学生信息、教师信息、课程信息和学生选课成绩信息表之间通过编号关联为视图实验提供基础数据环境。3.程序实现DROP TABLE IF EXISTS CHOICES;DROP TABLE IF EXISTS STUDENTS;DROP TABLE IF EXISTS TEACHERS;DROP TABLE IF EXISTS COURSES;CREATE TABLE STUDENTS(SNO CHAR(10) PRIMARY KEY,SNAME VARCHAR(20) NOT NULL,EMAIL VARCHAR(30),GRADE INT);GOCREATE TABLE TEACHERS(TNO CHAR(10) PRIMARY KEY,TNAME VARCHAR(20) NOT NULL,EMAIL VARCHAR(30),SALARY DECIMAL(7,2));GOCREATE TABLE COURSES(CNO CHAR(10) PRIMARY KEY,CNAME CHAR(10) NOT NULL);GOCREATE TABLE CHOICES(SNO CHAR(10),CNO CHAR(10),TNO CHAR(10),SCORE DECIMAL(5,2),PRIMARY KEY (SNO, CNO,TNO));GOCREATE VIEW VIEWC ASSELECT C.*,CH.SNO,CH.TNO,CH.SCOREFROM COURSES C JOIN CHOICES CH ON C.CNOCH.CNO;--1.4.5(1)CREATE VIEW VIEWS ASSELECT S.SNAME,CH.*FROM STUDENTS S JOIN CHOICES CH ON S.SNOCH.SNO;--1.4.5(2)CREATE VIEW S1(SNO,SNAME,GRADE) ASSELECT SNO,SNAME,GRADE FROM STUDENTS WHERE GRADE1998--1.4.5(3)SELECT * FROM VIEWS WHERE SNAMEuxjof;--1.4.5(4)SELECT SNO,SCORE FROM VIEWC WHERE CNAMEUML;--1.4.5(5)INSERT INTO S1(SNO,SNAME,GRADE)VALUES(60000001,Lily,2001);--1.4.5(6)DROP VIEW IF EXISTS S1;GOCREATE VIEW S1(SNO,SNAME,GRADE) ASSELECT SNO,SNAME,GRADE FROM STUDENTS WHERE GRADE1998WITH CHECK OPTION;GOINSERT INTO S1(SNO,SNAME,GRADE)VALUES(60000003,Lily,1997);DELETE FROM STUDENTS WHERE GRADE1999;--1.4.5(7)UPDATE VIEWS SET SCORESCORE5 WHERE SNAMEuxjof;--1.4.5(8)DROP VIEW IF EXISTS VIEWC;DROP VIEW IF EXISTS VIEWS;DROP VIEW IF EXISTS S1;GO--1.4.5(9