实验二交互式SQLWord文档格式.docx
《实验二交互式SQLWord文档格式.docx》由会员分享,可在线阅读,更多相关《实验二交互式SQLWord文档格式.docx(41页珍藏版)》请在冰点文库上搜索。
![实验二交互式SQLWord文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/4/a04250af-f57c-4169-9daf-eba9c378f426/a04250af-f57c-4169-9daf-eba9c378f4261.gif)
DEPTNOINT
DNAMECHAR(20)
NOTNULL);
2.修改基本表
1)在Student表中加入属性AGE(INT型)。
ALTERTABLEStudentADDAGEINT;
2)将Student表中的属性SAGE类型改为SMALLINT型。
ALTERTABLEStudentALTERCOLUMNSAGESMALLINT;
3.删除基本表
1)在所有操作结束后删除STUDENT表。
DROPTABLEStudent;
2)在所有操作结束后删除COURSE表。
DROPTABLECourse;
3)在所有操作结束后删除SC表。
DROPTABLESC;
4)在所有操作结束后删除TEACHER表。
DROPTABLETeacher;
5)在所有操作结束后删除DEPT表。
DROPTABLEDept;
二、索引操作
1.建立索引
1)在Student表上建立关于SNO的唯一索引。
CREATEUNIQUEINDEXstusnoONStudent(SNO);
2)在Course表上建立关于CNO升序的唯一索引。
CREATEUNIQUEINDEXcoucnoONCourse(CNO);
2.删除索引
1)删除Student表上的索引stusno。
DROPINDEXstusno;
2)删除Course表上的索引coucno。
DROPINDEXcoucno;
三、视图操作
1.建立视图
在插入数据的Student基本表上为计算机科学与技术系的学生记录建立一个视图
CS_STUDENT。
CREATEVIEWCS_STUDENTAS
SELECT*
FROMStudent
WHEREDEPTNO=
(SELECTDEPTNO
FROMDept
WHEREDNAME='
计算机科学与技术'
)
WITHCHECKOPTION;
2.删除视图
在操作结束后删除视图CS_STUDENT。
DROPVIEWCS_STUDENT;
(二)数据操作
一、更新操作
1.插入数据
1)向STUDENT表插入下列数据:
1001,张天,男,10,20
1002,李兰,女,10,21
1003,陈铭,男,10,21
1004,刘茜,女,20,21
1005,马朝阳,男,20,22
INSERTINTOStudentVALUES(1001,'
张天'
'
男'
10,20);
INSERTINTOStudentVALUES(1002,'
李兰'
女'
10,21);
INSERTINTOStudentVALUES(1003,'
陈铭'
INSERTINTOStudentVALUES(1004,'
刘茜'
20,21);
INSERTINTOStudentVALUES(1005,'
马朝阳'
20,22);
2)向COURSE表插入下列数据:
1,数据结构,101,4
2,数据库,102,4
3,离散数学,103,4
4,C语言程序设计,101,2
INSERTINTOCourseVALUES(1,'
数据结构'
101,4);
INSERTINTOCourseVALUES(2,'
数据库'
102,4);
INSERTINTOCourseVALUES(3,'
离散数学'
103,4);
INSERTINTOCourseVALUES(4,'
C语言程序设计'
101,2);
3)向SC表插入下列数据:
1001,1,80
1001,2,85
1001,3,78
1002,1,78
1002,2,82
1002,3,86
1003,1,92
1003,3,90
1004,1,87
1004,4,90
1005,1,85
1005,4,92
INSERTINTOSCVALUES(1001,1,80);
INSERTINTOSCVALUES(1001,2,85);
INSERTINTOSCVALUES(1001,3,78);
INSERTINTOSCVALUES(1002,1,78);
INSERTINTOSCVALUES(1002,2,82);
INSERTINTOSCVALUES(1002,3,86);
INSERTINTOSCVALUES(1003,1,92);
INSERTINTOSCVALUES(1003,3,90);
INSERTINTOSCVALUES(1004,1,87);
INSERTINTOSCVALUES(1004,4,90);
INSERTINTOSCVALUES(1005,1,85);
INSERTINTOSCVALUES(1005,4,92);
4)向TEACHER表插入下列数据:
101,张星,10
102,李珊,10
103,赵天应,10
104,刘田,20
INSERTINTOTeacherVALUES(101,'
张星'
10);
INSERTINTOTeacherVALUES(102,'
李珊'
INSERTINTOTeacherVALUES(103,'
赵天应'
INSERTINTOTeacherVALUES(104,'
刘田'
20);
5)向DEPT表插入下列数据:
10,计算机科学与技术
20,信息
INSERTINTODeptVALUES(10,'
);
INSERTINTODeptVALUES(20,'
信息'
2.修改数据
将张星老师数据结构课的学生成绩全部加2分
UPDATESC
SETGRADE=GRADE+2
WHERECNOIN
(SELECTCNO
FROMCourse,Teacher
WHERECourse.TNO=Teacher.TNO
ANDTeacher.TNAME='
3.删除数据
删除马朝阳同学的所有选课记录
DELETEFROMSC
WHERESNOIN
(SELECTSNO
WHERESNAME='
二、查询操作
1.单表查询
1)查询所有学生的信息。
FROMStudent;
结果:
1001张天
男1020
1002李兰
女1021
1003陈铭
男1021
1004刘茜
女2021
1005马朝阳
男2022
2)查询所有女生的姓名。
SELECTSNAME
WHERESEX='
;
李兰
刘茜
3)查询成绩在80到89之间的所有学生选课记录,查询结果按成绩的降序排列。
FROMSC
WHEREGRADE>
=80
ANDGRADE<
=89
ORDERBYGRADEDESC;
10041
87
10023
86
10012
85
10051
10022
82
10011
80
4)查询各个系的学生人数。
SELECTDEPTNO,count(SNO)
GROUPBYDEPTNO;
10
3
20
2
2.连接查询
查询信息系年龄在21岁以下(含21岁)的女生姓名及其年龄。
SELECTSNAME,AGE
FROMStudent,Dept
WHEREStudent.DEPTNO=Dept.DEPTNO
ANDDept.DNAME='
ANDAGE<
=21
ANDSEX='
21
3.嵌套查询
1)查询修课总学分在10学分以下的学生姓名。
FROMSC,Course
WHERESC.CNO=Course.CNO
GROUPBYSNO
HAVINGSUM(CREDIT)<
10);
陈铭
马朝阳
2)查询各门课程取得最高成绩的学生姓名及其成绩。
SELECTCNO,SNAME,GRADE
FROMStudent,SCSCX
WHEREStudent.SNO=SCX.SNOANDSCX.GRADEIN
(SELECTMAX(GRADE)
FROMSCSCY
WHERESCX.CNO=SCY.CNO
GROUPBYCNO);
2张天
3陈铭
92
1陈铭
90
4马朝阳
3)查询选修了1001学生选修的全部课程的学生学号。
SELECTSNO
WHERENOTEXISTS
(SELECT*
FROMSCSCX
WHERESCX.SNO=1001ANDNOTEXISTS
WHERESCY.SNO=Student.SNOANDSCY.cno=SCX.cno));
1001
1002
4)查询选修了张星老师开设的全部课程的学生姓名。
FROMCourse
WHERETNOIN
(SELECTTNO
FROMTeacher
WHERETNAME='
)ANDNOTEXISTS
WHERESC.SNO=Student.SNOANDSC.CNO=Course.CNO));
出现的问题及解决方案:
1.在创建基本表时是否可以缺省主码?
可以。
在定义基本表时可以定义主码也可以先不定义主码。
2.对基本表进行修改,执行ALTERTABLEStudentMODIFYSageSMALLINT显示执行失败。
当基本表中没有数据时,KingbaseES允许对基本表的属性类型进行修改,如上述修改
可以写成ALTERTABLEStudentALTERCOLUMNSAGESMALLINT,执行成功。
但如果基本表中已经存有数据时,系统则会给出数据将丢失的警告,不允许进行属性类型的修改。
3.在SQLServer中没有提供删除属性列的语句,KingbaseES则支持删除属性列。
如果要在基本表Student上删除属性列SNAME,可以执行ALTERTABLEStudentDROPSNAME。
实验二
(2)交互式SQL语言
姓名
Vivian
日期2005-1-1
1)创建供应商表S,由以下属性组成:
供应商号SNO(CHAR型),供应商姓名SNAME(CHAR
型),供应商状态STATUS(CHAR型),供应商所在城市CITY(CHAR型)。
CREATETABLES(
CHAR(3),
SNAMECHAR(10),
STATUSCHAR
(2),
CITY
CHAR(10));
2)创建零件表P,由以下属性组成:
零件代码PNO(CHAR型),零件名PNAME(CHAR型),
颜色COLOR(CHAR型),重量WEIGHT(INT型)。
CREATETABLEP(
PNO
PNAMECHAR(10),
COLORCHAR(4),
WEIGHTINT);
3)创建工程项目表J,由以下属性组成:
工程项目代码JNO(CHAR型),工程项目名JNAME
(CHAR型),工程项目所在城市CITY(CHAR型)。
CREATETABLEJ(
JNO
JNAMECHAR(10),
4)创建供应情况表SPJ,由以下属性组成:
供应商代码SNO(CHAR型),零件代码PNO
(CHAR型),工程项目代码JNO(CHAR型),供应数量QTY(INT型)。
CREATETABLESPJ(
QTY
INT);
1)在P表中加入属性零件产地CITY(CHAR型)。
ALTERTABLEPADDCITYCHAR(10);
2)将P表中的属性WEIGHT类型改为SMALLINT型。
ALTERTABLEPALTERCOLUMNWEIGHTSMALLINT;
3)删除刚才在P表中加入的零件产地CITY属性。
ALTERTABLEPDROPCITY;
1)在所有操作结束后删除S表。
DROPTABLES;
2)在所有操作结束后删除P表。
DROPTABLEP;
3)在所有操作结束后删除J表。
DROPTABLEJ;
4)在所有操作结束后删除SPJ表。
DROPTABLESPJ;
1)在S表上建立关于SNO的唯一索引。
CREATEUNIQUEINDEXsupply_snoONS(SNO);
2)在J表上建立关于JNO升序的唯一索引。
CREATEUNIQUEINDEXproject_jnoONJ(JNO);
1)删除S表上的索引supply_sno。
DROPINDEXsupply_sno;
2)删除J表上的索引project_jno。
DROPINDEXproject_jno;
在插入数据的S,P,J,SPJ基本表上为三建工程项目记录建立一个视图V_SPJ,包括供应
商代码SNO,零件代码PNO,供应数量QTY。
CREATEVIESV_SPJAS
SELECTSNO,PNO,QTY
FROMSPJ
WHEREJNO=(
SELECTJNO
FROMJ
WHEREJNAME='
三建'
2.根据视图完成查询
1)查询三建工程项目中供应商S1的供应情况。
SELECTPNO,QTY
FROMV_SPJ
WHERESNO=‘S1’;
查询结果为:
P1
200
2)查询三建工程项目使用的各种零件代码及其数量。
FROMV_SPJ;
P3
400
P5
100
3.删除视图
在操作结束后删除视图V_SPJ。
DROPVIEWV_SPJ;
1)向S表插入下列数据:
S1,精益,20,天津
S2,盛锡,10,北京
S3,东方红,30,北京
S4,丰泰盛,20,天津
S5,为民,30,上海
INSERTINTOSVALUES('
S1'
精益'
20'
天津'
S2'
盛锡'
10'
北京'
S3'
东方红'
30'
S4'
丰泰盛'
S5'
为民'
上海'
2)向P表插入下列数据:
P1,螺母,红,12
P2,螺栓,绿,17
P3,螺丝刀,蓝,14
P4,螺丝刀,红,14
P5,凸轮,蓝,40
P6,齿轮,红,30
INSERTINTOPVALUES('
P1'
螺母'
红'
12);
P2'
螺栓'
绿'
17);
P3'
螺丝刀'
蓝'
14);
P4'
P5'
凸轮'
40);
P6'
齿轮'
30);
3)向J表插入下列数据:
J1,三建,北京
J2,一汽,长春
J3,弹簧厂,天津
J4,造船厂,天津
J5,机车厂,唐山
J6,无线电厂,常州
J7,半导体厂,南京
INSERTINTOJVALUES('
J1'
J2'
一汽'
长春'
J3'
弹簧厂'
J4'
造船厂'
J5'
机车厂'
唐山'
J6'
无线电厂'
常州'
J7'
半导体厂'
南京'
4)向SPJ表插入下列数据:
S1,P1,J1,200
S1,P1,J3,100
S1,P1,J4,700
S2,P3,J1,400
S1,P2,J2,100
S2,P3,J2,200
S2,P3,J4,500
S2,P3,J5,400
S2,P5,J1,400
S2,P5,J2,100
S3,P1,J1,200
S3,P3,J1,200
S4,P5,J1,100
S4,P6,J3,300
S4,P6,J4,200
S5,P2,J4,100
S5,P3,J1,200
S5,P6,J2,200
S5,P6,J4,500
INSERTINTOSPJVALUES('
200);
100);
700);
400);
500);
300);
1)将全部红色零件的颜色改成蓝色。
UPDATEP
SETCOLOR=‘蓝’
WHERECOLOR=‘红’;
2)将由S5供给J4的零件P6改成由S3供应。
UPDATESPJ
SETSNO=‘S3’
WHERESNO=‘S5’
ANDJNO=‘J4’
ANDPNO=‘P6’;