1实验一创建、修改数据库和表结构1、用create建立教学数据库的五个基本表:(1)学生表(学号,姓名,性别,年龄),student((Sno,sname,ssex,sage);(2)课程表(课程号,课程名,学分),Course(Cno,Cname,credit);(3)选课表(学号,课程号,成绩),SC(Sno,,Cno,grade);(4)教师表(教师号,姓名,性别,出生年月,系部,职称,地址),T(Tno,Tname,ssex,birthday,dept,title,address);(5)工资表(教师号,基本工资,职务工资,合计),Salary(Tno,jbgz,zwgz,hj);CreateDatabaseStudentUseStudentCreateTableStudent(SNochar(20)primarykey,SNamechar(20),SSexchar(4)default'男',SAgeint);在MySQL中,每个表指明数据库引擎,字符集比较好,用下列语句!CreateTableStudent(SNochar(20)primarykey,SNamechar(20),SSexchar(4)default'男',SAgeint)ENGINE=MyISAMDEFAULTCHARSET=utf8COLLATE=utf8_bin;CreateTableCourse(CNochar(20)primarykey,CNamechar(20)NOTNULL,CReditfloat,);CreateTableSC(SNochar(20)NOTNULL,CNochar(20)NOTNULL,Gradefloat,2PrimaryKey(SNo,CNo),ForeignKey(SNo)ReferencesStudent(SNo)OnDeleteCascade,ForeignKey(CNo)ReferencesCourse(CNo));CreateTableT(TNochar(20)PrimaryKey,TNamechar(20)NOTNULL,TSexchar(4)default'男',birthdayDateTime,deptchar(20),titlechar(20),addresschar(20));CreateTableSalary(TNochar(20)NOTNULL,jbgzfloat,zwgzfloat,hjfloat,ForeignKey(TNo)ReferencesT(TNo)OnDeleteCascade);2、用alter修改基本表(1)在已存在的学生表student中增加一个sdept(系)的新的属性列;altertableStudentaddDeptchar(20);(2)将学生表student中sname属性列的数据类型修改为变长字符串varchar(10)。alterableStudentaltercolumsnamevarchar(10)3、建立一个临时表,然后将其删除CreateTabletemp(ANochar(20)NOTNULL,Bfloat,Cchar(10))Droptabtetemp实验二建立与删除索引1、用createindex在学生表student的学号sno上建立聚簇索引。CreateClusteredIndexSNo_IndexOnStudent(SNo);2、在学生表student中,为姓名sname建立非聚簇索引。3CreateIndexSName_IndexOnStudent(SName);3、在课程表的课程号Cno上建立唯一索引。CreateUniqueIndexCNo_IndexOnCourse(CNo);4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时成绩为降序。CreateIndexSCNo_IndexOnSC(SNoASC,GradeDESC);5、用drop删除学生表student的索引。DropIndexStudent.SNo_Index;6、增加学生表student中姓名唯一约束。AlterTableStudentAddUnique(SName);7、增加学生表student中性别‘男’、‘女’唯一约束。AlterTableStudentAddConstraint:SSexcheck(SSex='男'orSSex='女');8、增加学生表student中年龄18~25岁约束。AlterTableStudentAddConstraint:SAgecheck(SAge=18AndSAge=25);9、增加选课表SC中学号sno的外码约束。AlterTableSCAddForeignKey(SNo)referencesStudent(SNo);-实验三数据的插入、更新及删除操作1、用insert输入数据。学生表student的数据991201张三22男计算机系991202李四21男信息系991101王五23男数学系991102陈六19男计算机系991103吴七24女数学系000101刘八22女信息系InsertIntoStudentValues('991201','张三','男',22,'计算机科学与技术系');InsertIntoStudentValues('991202','李四','男',21,'信息科学系');4InsertIntoStudentValues('991101','王五','男',23,'数理系');InsertIntoStudentValues('991102','陈六','男',19,'计算机科学与技术系');InsertIntoStudentValues('991103','吴七','女',24,'数理系');InsertIntoStudentValues('000101','刘八','女',22,'信息科学系');课程表course的数据1数学52数据结构43程序设计24数据库原理35操作系统3InsertIntoCourseValues('1','数学',5);InsertIntoCourseValues('2','数据结构',4);InsertIntoCourseValues('3','程序设计',2);InsertIntoCourseValues('4','数据库原理',3);InsertIntoCourseValues('5','操作系统',3);选课表SC的数据991201190991201580991201385991201490991102185991102298000101291InsertIntoSCValues('991201','1',90);InsertIntoSCValues('991201','5',80);InsertIntoSCValues('991201','3',85);InsertIntoSCValues('991201','4',90);InsertIntoSCValues('991102','1',85);InsertIntoSCValues('991102','2',98);InsertIntoSCValues('000101','2',91);基本表T的数据0001张三男1968-10信息副教授湘潭0002李四女1956-11信息教授长沙1001王五男1973-07计算机讲师湘潭1008陈六男1970-08计算机副教授北京InsertIntoTValues('0001','张三','男','1968-10-10','信息科学系','副教授','湘潭');InsertIntoTValues('0002','李四','女','1956-11-10','信息科学系','教授','长沙');InsertIntoTValues('1001','王五','男','1973-07-20','计算机科学与技术系','讲师','湘潭');5InsertIntoTValues('1008','陈六','男','1970-08-20','计算机科学与技术系','副教授','北京');基本表Salary的数据00011000300130000021500500200010018002001000InsertIntoSalaryValues('0001',1000,300,1300);InsertIntoSalaryValues('0002',1500,500,2000);InsertIntoSalaryValues('1001',800,200,1000);*/2、用delete删除数据记录(1)删除教师表T中教师号为0001的元组。(2)删除教师表T中的全部数据。updatetsetbirthday='1961-10-04'whereTno='0001'DeleteFromT;3、用update更新数据记录(1)把0001号教师的基本工资加100。(2)把所有教师的基本工资都加100。UpdateSalarySetjbgz=jbgz+100WhereTNo='0001'UpdateSalarySetjbgz=jbgz+100实验四数据的查询1、简单查询,用select检索(1)查询所有学生的基本情况。select*fromstudent;(2)查询教师每月应交纳的个人所得税。selecthj*0.005asmonthshuifromSalary;(3)查询张三与李四两位同学的基本情况。select*fromstudentwheresname='张三'orsname='李四';(4)查询9911班学生的基本信息(规定学生学号的前四位是班级号)。select*fromstudentwheresnolike'9911%';(5)查询所有年龄在20岁以下的学生姓名及其年龄。6selectsname,sagefromstudentwheresage20;(6)查询选修了2门以上课程的学生学号。selectsnofromSCgroupbysnohavingcount(*)2;2、多表查询,用select检索(1)查询教师的收入情况,包括教师号、姓名及月总收入。selectT.Tno,Tname,hj//不能写成selectTno,因为Tno不明确fromT,SalarywhereT.Tno=Salary.Tno;(2)查询每个学生的学号、姓名、选修课程及成绩。selectstudent.sno,sname,cno,gradefromstudent,scwherestudent.sno=sc.sno;(3)查询每一门课的间接先修课。selectCA.cnoAS课程号,CB.PreCourseAS间接先修课号fromcourseCA,courseCBwhereCA.PreCourse=CB.cnoandCB.PreCourseisnotnull;(4)查询有相同地址的两位教师的信息。select*fromTTxwhereTx.addressin(selectaddressfromTTywhereTx.TnameTy.Tname);select*fromTTx,TTywhereTx..address=Ty.AddressandTx.TnameTy.Tname(5)查询选修2号课程且成绩在90分以上的所有学生。select*fromstudent,SCwherestudent.sno=SC.snoandSC.cno='2'andSC.grade90;(6)查询与王五在同一个系学习的学生。select*fromstudentwheresdept=(selectsdeptfromstudentwheresname='王五');7实验五视图1、建立男学生的视图,属性包括学号、姓名、选修课程名和成绩。createviewboystudent_viewasselectstudent.sno,sname,cno,gradefromstudent,SCwherestud