数据库技术与应用sql server2012教程源代码_第1页
数据库技术与应用sql server2012教程源代码_第2页
数据库技术与应用sql server2012教程源代码_第3页
数据库技术与应用sql server2012教程源代码_第4页
数据库技术与应用sql server2012教程源代码_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

DECLARE@SELECT@变量的名称=表达式【例8.1】定义局部变量@varname,@vardepartment,并为@varname赋值“”,为@vardepartment赋值“是管理信息系的学生”。DECLARE@varnamechar(8),@vardepartmentchar(30)SET@varname=''SET@vardepartment@varname+'是管理信息系的学生SELECT@varnameas,@vardepartmentas介【例8.2】定义局部变量@var ,@varsno,并利用这些变量去查同学的与useDECLARE@var char(2@varsnochar(8)SET@var SELECT学号,FROMSWHEREDECLARE@var char(2@varsnochar(8)SET@var SELECT@varsno=学号FROMSWHERE=@varSELECT@varsnoas学号SELECT@varsno=学号,FROMSWHERE8.3@findUSEDECLARE@findvarchar(30)SET@find='陈%'SELECT,学号,系FROMSWHERELIKE【例8.4】从S中检索1995年1月5日后出生的学生与学号信息DECLARE@var char(2@vardatedatetimeSET@var ='女'SET@vardate80/01/05'SELECT,学号,出生日期FROMWHERE and出生日期/*注释文本*8.5SELECTdistinctSUBSTRING(,1,1)FROMS8.6DECLARE@ssSET@ss='我们是管理信息系学生SELECTx1=substring(@ss,4,5),x2DECLARE@ssset@ss='中民SELECT'我爱'+LTRIM(@ss)+RTRIM('她是我们的祖 8.751个SELECTLEFT(,1)as姓,RIGHT ,4) FROMORDERBY】SELECTtop3LOWER(课程号asLowerUPPER(课程号asUpper,REVERSE(课程号)asReverseFROM【例8.9】显示学生的和所在系,之间用逗号和2个空格分隔SELECTRTRIM()+','+SPACE(2)+LTRIM(系)as学生所在FROMORDERBY【例8.10】将字符串redgreenblue中的green替换成black。判断blueredgreenblueblueSELECTSTUFF('redgreenblue',4,5,'black')SELECTCHARINDEX('blueredgreenblueas起始位置,LENblueasSELECTrand()Random_NumberSELECTexp(1),sqrt(4),abs(-5.3)SELECTround(123.123456,0),round(123.123456,2),round(123.123456,-2)SELECTabs(-1.0),abs(0.0),abs(1.0)8.112121SELECT,出生日期,DATEADD(day,21,出生日期)ASnewtimeFROMSSELECT,出生日期,DATEADD(year,21,出生日期)ASnewtimeFROMS8.12SELECT DAY格式:DAY日期8.1303/12/2008SELECTDAY('03/12/2008')AS'Day8.1403/12/2008SELECT"YearNumber"=8.1503/12/2008SELECTMONTH('03/12/2008')as'Month8.16】SCchar(10)80分以上的学生的SELECT学号+''+CAST(ASvarchar(6as80分以上成绩'FROMSCWHERECAST(ASchar(6LIKE或SELECT学号+''+CONVERT(varchar(6),成绩as'80分以上成绩'FROMSCWHERECONVERT(varchar(6),成绩LIKE【例8.17】返回服务器端计算机的名称,服务器端计算机的IDSELECTHOST_NAMEas服务器端计算机的名称HOST_IDasID号,USER_NAME()as数据库的用户名,DB_NAME()as数据库的名称8.18CONVERTGETDATEvarchar数据类型,以字符的形式器当前的时间。PRINT今天的日期是:RTRIM(CONVERT(varchar(30),GETDATE1Transact-SQL|1IF〈SQL1|1〉[ELSE〈SQL2|2〉8.1980DECLARE@numSELECT@num=(SELECTcount(distinct学号FromWHERE成绩IFSELECT@numas成绩>80的人数8.207575DECLARE@text1SET@text1='75分'IF(SELECTavg(成绩)FROMWHERESC.课程号=C.andC.课程名='数据库')<=75SET@text1='平均成绩<=75分SELECT@text1AS8.21C036090,显示USEDECLARE@gSET@g=(SELECTavg(成绩FROMSCWHEREC03')IF(@g)<60SELECTcast(@gaschar(3))+'不及格IFSELECTcast(@gaschar(3))+'优秀'SELECTcast(@gaschar(3))+'合格1CASECASEInput_WHENwhen_1THENresult_[WHENwhen_2THENresult_2][…n][ELSEresult_表达式2CASEWHEN1THENresult_[WHEN2THENresult_2][…n][ELSEresult_表达式【例8.22】使用CASE函数设置课程号为C01的课程的成绩级别,如果学生课程成绩小于60,设置类型为“不及格”;如果大于或等于90,设置类型为优秀;其他则设USESTUDENTCOURSESELECT学号,WHEN成绩<60THEN不及格'WHEN成绩>=90THEN'优秀'ELSE'合格'intoFROMWHEREISNOTNULLand课程号【例8.23】使用CASE函数获得学生选修课程名、、成绩信息,并将信息存入USESTUDENTCOURSESELECT,课程名CASEWHEN'C01'THEN'数据库'WHEN'C02'THEN'C语言'WHEN'C03'THEN'数据结构'WHENC04'THEN计算机导论'WHEN'C09'THEN'操作系统'ELSE'NULL'END,asintoFROMWHEREISNOTNULLandS.学号=SC.【例8.24】建立视图cgrade,要求显示学生的学号和课程“数据结构”的成绩,如CREATEVIEWcgrade(学号,成绩asselectdistinctS.学号,c_grade=when(selectfromwhereSC.学号=S.andSC.课程号=(select课程号fromwhereC.课程名='数据结构'))thenCAST(SC.asCHAR(4))else'没有成绩'fromSleftouterjoinSConS.学号=SC.select课程号fromCwhereC.课程名='数据结构1GOTO …label 8.25GOTO1,2,3,4,5DECLARE@sumint,@countintSELECT@sum=0,@count=1SELECT@sum=@sum+@countSELECT@count=@count+1IF@count<=5GOTOSELECT@count-1as计数,@sumas1WHILESQL语句|}[BREAK]{SQL语句|[CONTINUE8.2660,就将成绩加倍,然后选择最高成绩。如果最高成绩少于或等于8080,并打印最高成绩。USEWHILESELECTAVG(成绩FROMsc)60UPDATESET成绩=成绩*2SELECTMAX(成绩FROMSCIFSELECTMAX(成绩FROMSC)80PRINT6080分。8.27greenASCIIDECLARE@positionint,@stringchar(8)SET@position=1SETWHILE@position<=datalength(@string)SELECTASCII(SUBSTRING(@string,@position,1asASCII码CHAR(ASCII(SUBSTRING(@string,@position,1as字母'SET@position=@position+11CREATEFUNCTION拥有者.@1[AS]1[=默认值RETURNS[WITH<{ENCRYPTION|SCHEMABINDING}>[,…n]]RETURN】USESTUDENTCOURSECREATEFUNCTIONstudentsum(@st_snamechar(8))returnsintDECLARE@sumgradeintSELECT@sumgrade=(SELECTsum(SC.成绩)FROMSCWHERE学号selectfromwhere=@st_sname)GROUPBY学号)RETURN【例8.29】调用标量函数studentsum,计算同学各科成绩之和。USEselectdbo.studentsum('USEDECLARE@st_gradeEXEC@st_grade=dbo.studentsum'SELECT@st_gradeasUSEexecdbo.studentsum'USEDECLARE@st_gradeEXEC@st_grade=dbo.studentsum@st_sname=''SELECT@st_gradeas总成绩8.30studentsums_g,要求包含学生、各科成绩之和。useSTUDENTCOURSECREATETABLEs_gsumgradeasdbo.studentsum()1CREATEFUNCTION[拥有者@1[AS]1[=默认值RETURNS[WITH<{ENCRYPTION|SCHEMABINDING}>[,…n]][AS]RETURN内嵌表CREATEviewcoursegradeviewasSELECT学号,课程名,成绩FROMWHERESC.=C.andC.课程名='数据结构DECLARE@para1varchar(30)CREATEviewcoursegradeviewasSELECT学号,课程名,成绩FROMWHERESC.=C.andC.课程名】USESTUDENTCOURSECREATEFUNCTIONcoursegrade(@coursevarchar(30))RETURNSTABLERETURNSELECT学号,课程名,FROMWHERESC.=C.andC.课程名=@course8.32selectfromcoursegrade('数据结构1CREATEFUNCTION拥有者@1[AS]1[=默认值]}[,…n]])RETURNS@表变量TABLE<表的属性定义>[WITH<{ENCRYPTION|SCHEMABINDING}>[,…n]][AS]8.33course_grade,要求能够查询某一课程所有学生成绩USESTUDENTCOURSECREATEFUNCTIONcourse_grade(@coursevarchar(30))RETURNS@scoreTABLE(s_snochar(6),ameINSERTFROMWHERESC.=C.andC.课程名=@course8.34SELECTFROMcourse_grade('数据结构8.35course_gradeDROPFUNCTION1DECLARECURSOR[LOCAL|GLOBAL][FORWARD_ONLY|SCROLL[STATIC|KEYSET|DYNAMIC|FAST_FORWARD][READ_ONLY|SCROLL_LOCKS|OPTIMISTIC][TYPE_WARNINGFOR[FORUPDATEOF,…n【例8.36】一个动态游标,可前后滚动。可 DECLAREsname_cursorCURSORFORSELECT*FROMSFORUPDATEof1OPENGLOBAL|8.37sname_cursorOPENSELECT游标数据行

温馨提示

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

评论

0/150

提交评论