《DSQL语言》PPT课件_第1页
《DSQL语言》PPT课件_第2页
《DSQL语言》PPT课件_第3页
《DSQL语言》PPT课件_第4页
《DSQL语言》PPT课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

4.3Transact-SQL语言,4.3.1T-SQL语言概述SQL:结构化查询语言(StructureQueryLanguage)关系型数据库管理系统的标准语言:按照ANSI(美国国家标准协会)的规定,最初由IBM公司在七十年代中期开发成功。T-SQL语言是微软公司在SQLServer中对SQL扩展。,4.1.2T-SQL语言的特点1)非过程化面向过程的程序设计语言,必须一步一步地将解题的全过程描述出来,不仅要告诉计算机“做什么”,而且还要告诉计算机“怎么做”。非过程化语言,不必描述解决问题的全过程,只需提出“做什么”,至于“如何做”的细节则由语言系统本身去完成并给出操作的结果。2)两种不同的使用方式联机交互方式:SQL语言既可独立使用嵌入程序设计语言中:例如VB.net程序设计语言中。不论使用何种方式,T-SQL语言的语法结构基本相同。3)高度一体化:集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和T-SQL增加的语言元素于一体,可独立完成数据库生命周期的所有活动。4)语言简洁、易学易用,3)T-SQL语言的组成元素DDL(DataDefinitionLanguage)数据库定义语言定义数据库结构、各对象及属性的语句例如:CreatDATABASEStudentDML(DataManipulationLanguage)数据库操纵语言实现对数据库基本操作的语句,主要包括查询、插入、修改、删除等DCL(DataControlLanguage)数据库控制语言保证数据库一致性和完整性T-SQL增加的语言元素变量、运算符、函数、流程控制语句和注解等。,*T-SQL语言可在SQLServer查询分析器中直接执行并查看结果,即以交互方式使用。,在T-SQL语句中,不区分字母大小写。为阅读方便,约定:用大写字母书写T-SQL语句中关键字;(2)用小写字母书写语句中的标识符、表达式以及各种参数。,4.3.2数据定义语言DDL,数据定义语言主要是定义数据库中的对象,包括数据库、数据表、视图、索引、存储过程、触发器等的建立或修改。,表4-11SQL数据定义语言DDL,1)创建一个数据库SchoolTest;2)SchoolTest中只有一个数据文件SchoolTest_Data,它被默认为该数据库的主文件,该文件的大小与系统数据库Model的主文件大小相同;3)SchoolTest数据库所在的物理文件为“D:School_Data.mdf”4)系统将自动在“D:”中创建一个名称为“School_log.LDF”、大小等于主文件大小25%的日志文件。,【例4-13】创建一个只有一个主数据文件SchoolTest的数据库(不指定该文件的大小)。CREATEDATABASESchoolTestON(NAME=SchoolTest_Data,FILENAME=D:SchoolTest_Data.MDF),1数据库操作语句(1)创建数据库语句(CREATEDATABASE),例:CREATEDATABASESchoolTest该语句以系统数据库model作为模板在SQLServer安装文件夹的Data文件夹下建立数据库文件和日志文件。,举例,创建一个Student1数据库,该数据库的主文件逻辑名称为Student1_data,物理文件名为c:Student1.mdf,初始大小为10MB,最大尺寸为无限大,增长速度为10%;数据库的日志文件逻辑名称为c:Student1_log,物理文件名为Student1.ldf,初始大小为1MB,最大尺寸为5MB,增长速度为1MB。,CREATEDATABASEstudent1ON(NAME=student1_data,FILENAME=c:student1.mdf,SIZE=10MB,FILEGROWTH=10%)LOGON(NAME=student1_log,FILENAME=c:student1.ldf,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB)GO,(2)打开和删除数据库语句,USE数据库名/*选择当前要操作的数据库*/DROPDATABASE数据库名/*删除数据库*/,2数据表操作语句(1)建立表语句(CREATETABLE),【例4-14】建立学生表T_StudentTest。CREATETABLET_StudentTest(StudentCodeCHAR(8)NOTNULLUNIQUE,/*唯一性约束,不许取空值*/StudentNameVARCHAR(16)NOTNULL,SexCHAR(2)NOTNULL,LiveInDormBITDEFAULT1,/*默认值为1*/ConstraintStudentPKPrimaryKey(StudentCode)/*StudentCode为主键约束*/),执行上述语句后,在School数据库中创建一个新的空表T_StudentTest,该表由StudentCode、StudentName、Sex、LiveInDorm等字段组成。在字段的定义中确定StudentCode、StudentName、Sex不可取空值,LiveInDorm的默认值为1,并将StudentCode设定为主键约束。,(2)删除表语句(DROPTABLE)当数据表不再需要时,可以使用DROPTABLE语句将其删除。,【例4-16】删除T_StudentTest表DROPTABLET_GradeTest,【例4-15】建立成绩表T_GradeTest。CREATETABLET_GradeTest(StudentCodeCHAR(8)NOTNULL,/*不许取空值*/GradeREALDEFAULT0,/*默认值为0*/ConstraintGradeCKCheck(Grade=0ANDGrade=Grade=70ANDGrade110006,图4-47按课程代号统计并筛选,(4)ORDERBY子句按指定字段为查询结果排序。通常是SQL语句最后一项。语法格式为:ORDERBY字段名ASC/DESC字段名是排序的依据,也可以是含有字段名的表达式。ASC为升序排序(Ascending),DESC为降序(Descending)缺省排列次序为升序。,【例4-43】按成绩(Grade)升序显示T_Grade表中的所有数据。SELECT*FROMT_GradeORDERBYGrade,可以指定多个排序的字段。多字段排序的规则是:首先用指定的第一个字段对记录排序,然后对此字段中具有相同值的记录用指定的第二个字段进行排序,依此类推。若无ORDERBY子句,则按原数据表的次序显示数据。,【例4-44】按姓名(StudentName)升序出生日期(Birthday)降序查询学生及其班级信息。SELECTStudentCode,StudentName,ClassName,BirthdayFROMT_StudentJOINT_ClassONT_Student.ClassCode=T_Class.ClassCodeORDERBYStudentnameASC,BirthdayDESC,(5)子查询当一个查询是另一个查询的条件时,称该查询为子查询也被称为嵌套查询。可以构造出一条含有多个子查询的SQL语句来完成很复杂目的的查询。,【例4-45】查询“李佳婷”同班同学的学号、姓名。SELECTT_Student.StudentCode,T_Student.StudentName,T_Student.ClassCodeFROMT_StudentWHERET_Student.ClassCode=(SELECTT_Student.ClassCodeFROMT_StudentWHERET_Student.StudentName=李佳婷),图4-49子查询的示例,如果子查询结果返回多值则子查询要与下面介绍的IN、EXIST等结合使用。1)IN子查询IN子查询用来判断一个给定值是否在子查询的结果集中。,【例4-46】查询选修了课程代码为“110001”的学生的学号、姓名和班级代号。,SELECTStudentCode,StudentName,ClassCodeFROMT_StudentWHEREStudentCodeIN(SELECTStudentCodeFROMT_GradeWHERECourseCode=110001),图4-50IN子查询示例,2)EXISTS子查询EXISTS子查询用于判断一个子查询的结果集是否为空,如果为空则返回TRUE,否则返回FALSE。NOTEXISTS的返回值与EXISTS相反。,用EXISTS子查询【例4-46】查询选修了课程代码为“110001”的学生的学号、姓名和班级代号。,SELECTStudentCode,StudentName,ClassCodeFROMT_StudentWHEREEXISTS(SELECT*FROMT_GradeWHERET_Student.StudentCode=T_Grade.StudentCodeANDT_Grade.CourseCode=110001),.数据插入语句INSERTINTO功能:在指定的表中添加一个新的记录,或一次从其他表提取一组记录插入到目标表中。语法格式1:在指定的表中添加一个新的记录。INSERTINTO数据表(字段名1,字段名2)VALUES(表达式1,表达式2),字段可以是某几个字段。表达式1、表达式2分别对应字段名1、字段名2,它们是所要添加的记录的值。当插入一条完整的记录时,可省略字段名,但字段值次序要与表中字段的次序一一对应。,【例4-47】向T_Class表插入一条记录。INSERTINTOT_ClassVALUES(081221,软件081,120002),如果只给出部分字段的值(表定义时非空字段必须给出值),其他值会自动取空值(NULL)或默认值,这时必须指明相应的字段名,次序可以随意,但表达式值的次序必须和所列字段名次序一一对应。【例4-48】向T_Student表插入一条记录。INSERTINTOT_Student(StudentCode,Sex,StudentName,ClassCode)VALUES(08011106,女,张军,071221),语法格式2:从其他表提取一组记录插入到目标表中。INSERTINTO数据表(字段名1,字段名2)SELECT语句,注意:数据表必须已经存在,且其结构定义与SELECT语句返回的字段值类型一致。,【例4-49】向T_StudentTest表插入记录,数据为T_Student中所有女同学。INSERTINTOT_StudentTestSELECTStudentCode,StudentName,Sex,LiveInDormFromT_StudentWHERESex=女,3.数据更新语句UPDATE对一条或多条符合条件记录中某个或某些字段值的修改,省略WHERE子句,对数据表中的所有记录进行更新。语法格式:UPDATE数据表SET字段名1=表达式1,字段名2=表达式2WHERE,【例4-50】更新T_Student表中StudentCode为“08011106”的记录信息,将其电话字段(Telephone)的值改为“67792280”。UPDATET_StudentSETTelephone=67792280WHEREStudentCode=08011106,【例4-51】更新T_Course表中信息,将所有开课学院(Academy)为“计算机学院”的课程的实验课时(LabTime)增加10%,上课课时增加10。UPDATET_CourseSETLabTime=LabTime*(1+0.1),CourseTime=CourseTime+10WHEREAcademy=计算机学院,4.数据删除语句DELETE功能:删除指定表中满足条件的记录。语法格式:DELETEFROMWHERE如果没有WHERE子句,即没有指定删除条件,则该语句执行后将删除指定表中的所有记录。,【例4-52】删除T_Student

温馨提示

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

评论

0/150

提交评论