1、Foreign Key(TNo) References T(TNo) On Delete Cascade2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列; alter table Student add Dept char(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。alter able Student modify colum sname varchar(10)3、建立一个临时表,然后将其删除 Create Table temp (ANochar(20) NOT NULL,Bflo
2、at, C char(10) ) Drop table temp实验二 建立与删除索引1、用create index在学生表student的学号sno上建立聚簇索引。Create Clustered Index SNo_Index On Student(SNo);2、在学生表student中,为姓名sname建立非聚簇索引。 Create Index SName_Index On Student(SName);3、在课程表的课程号Cno上建立唯一索引。 Create Unique Index CNo_Index On Course(CNo);4、在选课表的学号sno、成绩Grade上建立复合索
3、引,要求学号为升序,学号相同时成绩为降序。Create Index SCNo_Index On SC(SNo ASC, Grade DESC);5、用drop删除学生表student的索引。 Drop Index Student.SNo_Index;6、增加学生表student中姓名唯一约束。 Alter Table Student Add Unique(SName);7、增加学生表student中性别男、女唯一约束。 Alter Table Student Add Constraint:SSex check(SSex = or SSex = 女);8、增加学生表student中年龄1825岁
4、约束。Alter Table Student Add Constraint:SAge check(SAge = 18 And SAge = 25);9、增加选课表SC中学号sno的外码约束。Alter Table SC Add Foreign Key(SNo) references Student(SNo);-实验三 数据的插入、更新及删除操作1、用insert输入数据。学生表student的数据991201 张三22男计算机系991202 李四 21信息系991101王五23数学系991102陈六19991103吴七24女000101刘八Insert Into Student Values(
5、991201, 张三, 22, 计算机科学与技术系991202李四, 21, 信息科学系991101王五, 23, 数理系991102陈六, 19, 991103吴七, 24, 000101刘八课程表course的数据1 数学52 数据结构43 程序设计24 数据库原理35 操作系统Insert Into Course Values(1数学, 5);2数据结构, 4);3程序设计, 2);4数据库原理, 3);5操作系统选课表SC的数据99120119080859891Insert Into SC Values(, 90);, 80);, 85);, 98);, 91);基本表T的数据0001
6、1968-10信息副教授湘潭00021956-11教授长沙10011973-07计算机讲师10081970-08北京Insert Into T Values(00011968-10-10副教授湘潭00021956-11-10教授长沙10011973-07-20讲师10081970-08-20北京基本表Salary的数据1000300130015005002000800200Insert Into Salary Values(, 1000, 300, 1300);, 1500, 500, 2000);, 800, 200, 1000);*/2、用delete删除数据记录(1)删除教师表T中教师号
7、为0001的元组。(2)删除教师表T中的全部数据。update t set birthday=1961-10-04 where Tno = Delete From T;3、用 update更新数据记录(1) 把0001号教师的基本工资加100。(2) 把所有教师的基本工资都加100。 Update Salary Set jbgz = jbgz + 100 Where TNo = Update Salary Set jbgz = jbgz + 100实验四 数据的查询1、简单查询,用select检索(1)查询所有学生的基本情况。select * from student;(2)查询教师每月应交纳
8、的个人所得税。 select hj*0.005 as monthshui from Salary;(3)查询张三与李四两位同学的基本情况。 select * from student where sname= or sname=;(4)查询9911班学生的基本信息(规定学生学号的前四位是班级号)。 select * from student where sno like 9911%(5)查询所有年龄在20岁以下的学生姓名及其年龄。 select sname,sage from student where sage2;2、多表查询,用select检索(1)查询教师的收入情况,包括教师号、姓名及月
9、总收入。select T.Tno,Tname, hj /不能写成select Tno,因为Tno不明确from T,Salarywhere T.Tno=Salary.Tno;(2)查询每个学生的学号、姓名、选修课程及成绩。 select student.sno,sname,cno,gradefrom student,sc where student.sno=sc.sno;(3)查询每一门课的间接先修课。 select CA.cno AS 课程号,CB.PreCourse AS 间接先修课号from course CA,course CBwhere CA.PreCourse=CB.cno and
10、 CB.PreCourse is not null;(4)查询有相同地址的两位教师的信息。 select *from T Txwhere Tx.address in (select address from T Ty where Tx.TnameTy.Tname); select * from T Tx, T Ty where Tx. address=Ty. Address and Tx.Tname90;(6)查询与王五在同一个系学习的学生。select *from studentwhere sdept=(select sdept from student where sname=实验五 视图
11、1、建立男学生的视图,属性包括学号、姓名、选修课程名和成绩。 create view boystudent_view as select student.sno,sname,cno,gradefrom student,SCwhere student.ssex=男 and student.sno=SC. sno;2、在男学生视图中查询平均成绩大于80分的学生学号与姓名。 select sno,snamefrom boystudent_viewgroup by sno,snamehaving AVG(grade)3、建立信息系选修了1号课程的学生的视图。 create view xinxi_vie
12、w1 as select student.sno,sname,ssex,sage from student,SC where student.sdept=信息 and student.sno=SC.sno and SC.cno=4、建立信息系选修了1号课程且成绩在90分以上的学生的视图。 create view xinxi_view2 as select student.sno,sname,sage,ssex from student,SC where student.sdept=5、建立计算机系选修了2号课程的学生的视图。create view jisuanji_viewas select
13、student.sno,sname,sage,ssexfrom student,SCwhere student.sdept=计算机6、建立一个学生出生年份的视图。create view year_viewas select student.sno,sname,2007-sage as birthday7、建立一个计算机系学生的视图,并要求在进行修改、插入操作时,仍然要确保视图只有计算机系的学生。create view jisuanji2_viewfrom studentwhere sdept=with check option8、向学生视图中插入一条新记录(951101,钱进,男,20) cr
14、eate view student_view1 as select sno,sname,ssex,sage from student;insert into student_view1 values(951101,钱进,20)9、将学生视图中学号为991101的学生姓名改为“刘平平”。 update student_view1 set sname=刘平平 where sno=10、删除计算机系视图中学号为991201的记录。 deletefrom jisuanji2_view where sno=11、删除学生出生年份的视图。drop view year_view;实验六 集合函数的应用1、使
15、用select语句查询(1)9911班学生的人数和平均成绩(规定学生学号的前四位是班级号)SELECT COUNT(sno) as 总人数, AVG(sc.grade)AS 平均分 FROM scWHERE sno like 9912%(2)每个学生的学号和相应的平均成绩SELECT sno, AVG(grade) FROM,scGROUP BY student.sno(3)成绩大于90分的学生学号SELECT sno,MAX(sc.grade) as maxgrade FROM scGROUP BY snoHAVING MAX(grade)(4)月工资大于平均工资的教师号SELECT TNo
16、 FROM Salary WHERE hj=( SELECT AVG(hj) from Salary ) 2、实验完成后,撤消建立的基本表和视图。 实验七 创建、执行、修改和删除存储过程1、建立查询计算机系女学生的存储过程。Use student;CREATE PROCEDURE SELECT_WOMAN()BEGIN SELECT * FROM student where ssex=end;call select_wanman();2、定义一个存储过程不带参数,作用是查询选修了课程学生的学号,并执行这个存储过程。use student;Create procedure numofsc() B
17、EGIN select sno from SC group by sno0;End;call numofsc();3、定义一个带输出参数的存储过程,作用是查询Student表中的学生个数,并赋值给输出参数,执行该存储过程,同时通过输出参数来输出学生个数。 CREATE PROCEDURE proc1(OUT s int) BEGIN SELECT COUNT(*) INTO s FROM student; END;执行 CALL proc1 ( p0 );SELECT p0 AS 学生人数;4、定义一个带输出参数和输出参数的存储过程,执行该存储过程,通过输入参数学号,查到到姓名,同时输入姓名,
18、。Create procedure getnamebysno(in xh char (10),out name char(20)BeginSelect sname into name from student where sno=xh;执行set name=null;call getnamebysno(000105,name);select name;5、修改刚建立的存储过程。 ALTER PROCEDURE SELECT_ 6、删除刚建立的存储过程。DROP PROCEDURE SELECT_WOMAN 实验八 触发器的插入、删除、更新和创建1、 对student表创建delete触发器,当
19、删除某个学生记录时,同时在选课表SC中删除该学生的选课记录。mysql 通过use student;select * from student ;select * from sc ;create trigger t1 AFTER delete on student FOR EACH ROW BEGIN Delete from SC WHERE sno = old.sno; END;2、 在student表上定义了一个update触发程序,用于检查更新sage时将使用的新值,小于16时取得16,大于40时取40,并更改值。create trigger upd_check before updat
20、e on student FOR EACH ROW begin if new.sage60 then set new.sage=40; end if; end;select * from student; update student set sage=2 where sno= select * from student ;3、 在student表上定义了一个insert触发程序,用于检查插入ssex时只能取男和女,输入其它时取NULL。create trigger ins_check before insert on student if new.ssex and new.ssex then