SQL语句创建学生信息数据库表的示例实用文档_第1页
SQL语句创建学生信息数据库表的示例实用文档_第2页
SQL语句创建学生信息数据库表的示例实用文档_第3页
SQL语句创建学生信息数据库表的示例实用文档_第4页
SQL语句创建学生信息数据库表的示例实用文档_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

用SQL语句创建如下三个基本表:学生表(Student)、课程表(Course)、学生选课表(SC),结构如下所示Student表结构列名说明数据类型约束Sno学号字符串,长度为7主码Sname姓名字符串,长度为10非空Ssex性别字符串,长度为2取‘男’或‘女’Sage年龄整数取值15~45Sdept所在院系字符串,长度为20默认为‘计算机系’Createtable Student(Snovarchar(7)primarykey,Snamevarchar(10)notnull,Ssexchar(2)check(Ssex=‘男’orSsex=’女’),Sageintcheck(Sagebetween15and45),Sdeptvarchar(20)default(‘计算机系’))Course表结构列名说明数据类型约束Cno课程号字符串,长度为10主码Cname课程名字符串,长度为20非空Ccredit学分整数取值大于0Semester学期整数取值大于0Period学时整数取值大于0Createtablecourse(Cnovarchar(10)primarykey,Cnamevarchar(20)notnull,Ccreditintcheck(Sctedit>0),Semesterintcheck(Semester>0),Periodintcheck(Period>0))SC表结构列名说明数据类型约束Sno学号字符串,长度为7主码,引用Student的外码Cno课程号字符串,长度为10主码,引用Course的外码Grade成绩整数取值0~100CreatetableSC(Snovarchar(7)foreignkeyreferencesstudent(Sno),Cnovarchar(10)foreignkeyreferencescourse(Cno),Gradeintcheck(Gradebetween0and100),Primarykey(Sno,Cno))1.查询学生选课表中的全部数据。SELECT*FROMSCgo2.查询计算机系学生的姓名、年龄。SelectSname,SageFromStudentWhereSdept=’计算机系’3.查询成绩在70~80分之间的学生的学号、课程号和成绩。SelectSno,Cno,GradeFromCourse,ScWherecourseo=scoandsc.Gradebetween70and804.查询计算机系年龄在18~20之间且性别为“男”的学生的姓名和年龄。SelectSname,SageFromStudentWhereSagebetween18and20andSsex=’男’andSdept=’计算机系’go5.查询课程号为“C01”Selecttop1Gradeselectmax(Grade)as最高分FromScfromScWhereCno=’C01’whereCno=’COrderbyGradedescorderbyGradedesc6.查询计算机系学生的最大年龄和最小年龄。Selectmax(Sage)as年龄最大,min(Sage)as年龄最小FromStudentWhereSdept=’计算机系’7.统计每个系的学生人数。Selectcount(Sdept)as学生人数,SdeptFromStudentGroupbySdept8.统计每门课程的选课人数和考试最高分。Selectcount(Sno)as选课人数,c.Sno,max(Grade)as最高分FromCoursecleftjoinScsonco=soGroupbyco9.统计每个学生的选课门数和考试平均成绩,并按学号的升序显示结果。Selectsno,avg(grade)as’平均成绩’,count(cno)as’选课门数’FromscGroupbysnoOrderbysno10.查询总成绩超过200分的学生,要求列出学号、总成绩。Selectsno,sum(grade)FromscGroupbysnoHavingsum(grade)>20011.查询选修了课程“C02”Selectsname,sdeptFromstudents1,scs2Wheres1.sno=s2.snoands2o=’c0212.查询成绩在80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。Selects1.sname,s2o,s2.gradeFromstudents1,scs2Wheres1.sno=s2.snoandgrade>80Orderbygradedesc13.查询哪些课程没有人选修、要求列出课程号和课程名。Selectco,cameFromcoursecleftjoinscsonco=soGroupbyco,cameHavingcount(s.sno)=014.用子查询实现如下查询:(1)查询选修了课程“C01”Selectsname,sdept,snoFromstudentWheresnoin(SelectsnoFromscWherecno=’c01)(2)查询信息系成绩在80分以上的学生的学号、姓名。Selectsno,snameFromstudentWheresdept=’外语系’andsnoin(SelectsnoFromscWheregrade>80)(3)查询计算机系考试成绩最高的学生的姓名。Selects1.snamefromstudentsWheresdept=’计算机系’andsnoin(selectsnofromscWheregradein(selectmax(Grade)fromsc))15.删除选课成绩小于50分的学生的选课记录。DeletefromscWheregrade<70Select*fromsc—验证16.将所有选修了课程“C01”UpdatescSetgrade=grade+10Wherecno=’c0117.将计算机系所有选修了课程“计算机文化基础”课程的学生的成绩加10分。Select*fromscUpdatescSetgrade=grade+10Wherecnoin(selectcnofromcourseWherecname=’计算机文化基础’)18.创建查询学生的学号、姓名、所在系、课程号、课程名、课程学分的视图。Select*fromcourseSelect*fromstudentsSelect*fromscCreateview学生基本信息AsSelectstudents.sno,sname,sdept,sco,cname,ccreditFromcourse,sc,studentsWherecourseo=scoAndsco=students.sno19.创建查询每个学生的平均成绩的视图,要求列出学生学号及平均成绩。Createviews_avgAsSelectsno,avg(Grade)as平均成绩fromscGroupbysno20.创建查询每个学生的选课学分的视图,要求列出学生学号及总学分。Createviews_scAsSelectstudents.sno,sum(ccredit)as总学分fromStudents,sc,courseWherestudents.sno=sc.snoAndsco=courseoGroupbystudents.sno21.用SQL语句创建一个名为f_1的函数,该函数能够求出3到100之间的所有素数之和。Createfunctionf_1()ReturnsintAsBeginDeclare@aint,@bint,@iint,@sumintSet@i=3Set@sum=0While@i<101BeginSet@b=0While@a<=@i/2BeginIf@i%@a=0BeginSet@b=1BreakEndSet@a=@a+1EndIf@b=0--@b为0说明之前没有比@i小的数字可以把@i整除BeginSet@sum=@sum+@iEndSet@i=@i+1EndReturn@sumEndGoSelectdbo.f_1()22.用SQL语句创建一个名为f_2的函数,该函数能够求出任意两个数的最大值。Createfunctionf_2(@x1int,@x2int)returnsintAsBeginDeclare@maxintIf@x1>@x2Return@maxEndSelectdbo.f_2(2,6)23.用SQL语句创建一个名为pro_get_stu_information的存储过程,该存储过程能够根据用户指定的Sno(学号)求出与该学号对应的学生姓名、课程名、成绩。Createprocedurepro_get_stu_information@mchar(6)outputAsSelectsname,cname,gradefromstudents,sc,courseWherestudents.sno=sc.snoandsco=courseoandsc.sno=@mExecpro_get_stu_information’060300224.为“学生”表创建一个依赖于“学号”的唯一的、非聚集的索引Createuniquenonclusteredindexstu_intonstudents(sno)25.通过游标逐行读取“学生”表的记录Declarestu_curcursorforSelect*fromstudentsforreadonlyOpenstu_curFetchstu_curClosestu_curDeallocatestu_cur用MySQL创建数据库和数据表:步骤:使用show语句找出在服务器上当前存在什么数据库:mysql>showdatabases;创建一个数据库test:mysql>createdatabasetest;选择你所创建的数据库:mysql>usetest;4创建一个数据表:首先查看刚才创建的数据库中存在什么表:mysql>showtables;(说明刚才创建的数据库中还没有数据库表)接着我们创建一个关于students的数据表:包括学生的学号(id),姓名(name),性别(sex),年龄(age)。mysql>createtablestudents(idintunsignednotnullauto_incrementprimarykey,namechar(8)notnull,sexchar(4)notnull,agetinyintunsignednotnull,);解释:以"idintunsignednotnullauto_incrementprimarykey"行进行介绍:"id"为列的名称;"int"指定该列的类型为int(取值范围为-8388608到8388607),在后面我们又用"unsigned"加以修饰,表示该类型为无符号型,此时该列的取值范围为0到16777215;"notnull"说明该列的值不能为空,必须要填,如果不指定该属性,默认可为空;"auto_increment"需在整数列中使用,其作用是在插入数据时若该列为NULL,MySQL将自动产生一个比现存值更大的唯一标识符值。在每张表中仅能有一个这样的值且所在列必须为索引列。"primarykey"表示该列是表的主键,本列的值必须唯一,MySQL将自动索引该列。下面的char(8)表示存储的字符长度为8,tinyint的取值范围为-127到128,default属性指定当该列值为空时的默认值。创建一个表后,用showtables显示数据库中有哪些表:mysql>showtables;显示表结构:mysql>describestudents;在表中添加记录:首先用select命令来查看表中的数据:mysql>select*fromstudents;(说明刚才创建的数据库表中还没有任何记录)接着加入一条新纪录:mysql>insertintostudentsvalue(‘01’,’Tom’,’F’,’18’);再用select命令来查看表中的数据的变化:mysql>select*fromstudents;用文本方式将数据装入一个数据库表:创建一个文本文件“student.sql”,每行包括一个记录,用TAB键把值分开,并且以在createtable语句中列出的次序,例如:02TonyF1803AmyM1804LisaM18将文本文件“student.sql”装载到students表中:mysql>loaddata

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论