第4章TransSQL

上传人:工**** 文档编号:567537254 上传时间:2024-07-21 格式:PPT 页数:71 大小:539KB
返回 下载 相关 举报
第4章TransSQL_第1页
第1页 / 共71页
第4章TransSQL_第2页
第2页 / 共71页
第4章TransSQL_第3页
第3页 / 共71页
第4章TransSQL_第4页
第4页 / 共71页
第4章TransSQL_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《第4章TransSQL》由会员分享,可在线阅读,更多相关《第4章TransSQL(71页珍藏版)》请在金锄头文库上搜索。

1、第第4章章 TransactSQL简介简介 泳腾欲硬嵌晋噶懒阁辑解亦湘彰鱼腰涝腋新持嘻札嫁钩另贞鼓缺楼询耙霍第4章TransSQL第4章TransSQL14.1 Transact SQL语言概述语言概述SQL即即结构化查询语言结构化查询语言,是访问数据库的标准语言是访问数据库的标准语言,可以完成可以完成复杂的数据库操作复杂的数据库操作.由于由于SQL语言具有功能丰富、使用方便灵活、语言简洁易用语言具有功能丰富、使用方便灵活、语言简洁易用等特点,深受广大计算机用户的欢迎,许多数据库厂家也都等特点,深受广大计算机用户的欢迎,许多数据库厂家也都推出支持推出支持SQL的数据库管理软件。的数据库管理软件

2、。1989年,国际标准化组织年,国际标准化组织ISO将将SQL定为国际标准,推荐它定为国际标准,推荐它为标准关系数据库语言。为标准关系数据库语言。1990年,我国也颁布了信息处理系统数据库语言年,我国也颁布了信息处理系统数据库语言SQL,将其定为中国国家标准。将其定为中国国家标准。在在Microsoft SQL Server中,使用的是中,使用的是 Transact-SQL,它可,它可以看作是标准以看作是标准SQL的一种方言,与标准的一种方言,与标准SQL基本兼容。基本兼容。磕七冒膨襄久向粳逆渊桅停蔗翔涅哦剩曲持袒酣滋胺控算杉却道梢屉块斤第4章TransSQL第4章TransSQL2用户向数据

3、库提出要求,与用户向数据库提出要求,与SQL Server数据库数据库进行交流的语言是进行交流的语言是Transact-SQL语言。用语言。用Transact-SQL语言编写应用程序可以完成所有语言编写应用程序可以完成所有的数据库管理工作。任何应用程序,必须通过的数据库管理工作。任何应用程序,必须通过SQL语句为表现形式的指令向数据库管理系统语句为表现形式的指令向数据库管理系统发送指令,以获得数据库管理系统的响应。因发送指令,以获得数据库管理系统的响应。因此学习此学习SQL语言对于数据库开发人员来说十分语言对于数据库开发人员来说十分必要。必要。本小节将介绍本小节将介绍Transact-SQL的

4、语法规则和常用的语法规则和常用函数。函数。滓决壮秉拔圣展忽舷共恰摘暇粘蛰班盖拢奇契妄俘枯就华犀腐淆晒脆吼泵第4章TransSQL第4章TransSQL34.1.1 标识符标识符SQL Server标识符有自己的命名规则,介绍如下:标识符有自己的命名规则,介绍如下:组成标识符的字符个数在组成标识符的字符个数在1128之间。之间。标识符的标识符的首字符首字符可以是:可以是:字母、汉字、下划线、字母、汉字、下划线、#。以以 符号开头的标识符表示局部变量或参数;符号开头的标识符表示局部变量或参数;以以 # 符号开头的标识符表示临时表或过程;符号开头的标识符表示临时表或过程;以以# 符号开头的标识符表示

5、全局临时对象。符号开头的标识符表示全局临时对象。用字母做标识符时不区分大、小写。用字母做标识符时不区分大、小写。标识符中标识符中不应含空格和保留字不应含空格和保留字。保留字是。保留字是SQL Server系统使用的符号,如系统使用的符号,如SELECT、FROM、WHERE、DATABASE、VIEW、TABLE等。等。翻绥浩冰拜朽哺般怀岔几忍庸贾痒韵桶简泡技抒蝴刻耗摹帽桃砒亩摇程唱第4章TransSQL第4章TransSQL4如果需要用保留字或空格作为标识符使用,则需要如果需要用保留字或空格作为标识符使用,则需要用用 “ ” 或或 进行分隔处理。例如观察下面的进行分隔处理。例如观察下面的SQ

6、L语句:语句: SELECT * FROM My TABLE WHERE VIEW 20该语句中,表名称该语句中,表名称My TABLE中含有空格,所以要中含有空格,所以要用分隔符用分隔符 将其括住,否则将其括住,否则SQL Server会将其看会将其看作两个标识符;另外在作两个标识符;另外在WHERE后边的后边的VIEW是保是保留字,所以也必须用分隔符留字,所以也必须用分隔符 将其括住。将其括住。谬延细渐樟沦喧童仗燥音搂任拷审婶疹呐蓄耍捂厄瞬粪批挽缘呢盆越谣困第4章TransSQL第4章TransSQL54.1.2 注释注释SQL Server支持两种注释符:支持两种注释符:- 和和 /*/

7、 。- :是单行注释符。如果注释内容为多行需要在每:是单行注释符。如果注释内容为多行需要在每行注释的前边加行注释的前边加“-”。例如有两行注释,书写格。例如有两行注释,书写格式为:式为:- 这是注释这是注释- 这里也是注释这里也是注释/*/ :是多行注释符,从:是多行注释符,从/*开始,到开始,到*/ 之间之间的所有内容均为注释部分。例如有两行注释,书写的所有内容均为注释部分。例如有两行注释,书写格式为:格式为: /*这是注释这是注释 这里也是注释这里也是注释*/套庶亮浆萧超套可间梧讹皱槛姚阅枫吉东懦共荣挨灯愈肯赚荤贼萨室煤钙第4章TransSQL第4章TransSQL64.1.3 常用函数常

8、用函数TransactSQL中提供的函数包括:聚合函数、数学函数、中提供的函数包括:聚合函数、数学函数、字符串函数、日期时间函数、配置函数、游标函数、安全函字符串函数、日期时间函数、配置函数、游标函数、安全函数、系统函数、文本和图象函数等。数、系统函数、文本和图象函数等。1聚合函数聚合函数聚合函数也称聚合函数也称统计函数统计函数,经常用于,经常用于Select语句中,对表或视语句中,对表或视图中的数据进行统计。常用的聚合函数如下:图中的数据进行统计。常用的聚合函数如下:AVG:用来计算指定参数组的平均值。:用来计算指定参数组的平均值。COUNT:用来计算指定参数组中项目的数量。:用来计算指定参

9、数组中项目的数量。MAX:用来求指定参数组中的最大值。:用来求指定参数组中的最大值。MIN:用来求指定参数组中的最小值。:用来求指定参数组中的最小值。SUM:用来求指定参数组中的所有值的和。:用来求指定参数组中的所有值的和。堂汹梁荧米苍绪趋宾饲骏乐泛觅配塘扣介呛墨求摄嗣测界米琼稗斩腊霞情第4章TransSQL第4章TransSQL72配置函数配置函数配置函数用于得到当前系统中配置选项的设置信息。配置函数用于得到当前系统中配置选项的设置信息。常用的配置函数如下:常用的配置函数如下:(1) LANGUAGE该函数返回系统当前使用的语言。例在查询分析器该函数返回系统当前使用的语言。例在查询分析器中,

10、执行如下语句:中,执行如下语句:l SELECT LANGUAGE结果显示为:结果显示为:l 简体中文简体中文毅冻穷奸恐行楞宇缝宏弓沃冗新衣浇俭妖敷骋冷罚靶悍举铸彪沛仲区胞预第4章TransSQL第4章TransSQL8(2) VERSION该函数返回该函数返回SQL Server 2000当前安装的日期、版本、当前安装的日期、版本、和处理器类型信息。例在查询分析器中,执行如下和处理器类型信息。例在查询分析器中,执行如下语句:语句: SELECT VERSION结果显示版本信息。结果显示版本信息。(3) MAX_CONNECTIONS该函数返回该函数返回SQL Server允许的最大连接数。例

11、如在允许的最大连接数。例如在查询分析器中,执行如下语句:查询分析器中,执行如下语句:SELECT MAX_CONNECTIONS结果显示为:结果显示为: 32767寡敢音瓤体狙斟篇雷案苛盒姜必话乃席衔诲就州痪粒隙蔽娜诌肾衡烽遥庇第4章TransSQL第4章TransSQL93数学函数数学函数数学函数可以对数值进行数学计算。常用的数学函数学函数可以对数值进行数学计算。常用的数学函数介绍如下。数介绍如下。(1)SQRT函数函数返回指定值的平方根。例在查询分析器中,执行如返回指定值的平方根。例在查询分析器中,执行如下语句:下语句: SELECT SQRT(25)结果显示为:结果显示为: 5.0个剃吱

12、嗅赣昏产辰检旗湿铆尿关咆腮孺逞肌畸曙干矿呀润楼枚荧雷酣训帝第4章TransSQL第4章TransSQL10(2)ROUND函数函数该函数对数值表达式的计算结果进行该函数对数值表达式的计算结果进行4舍舍5入处理入处理。函数的使用格式:函数的使用格式: ROUND(表达式表达式 , n)其中其中n表示取小数的位数。例在查询分析器中,执表示取小数的位数。例在查询分析器中,执行如下语句:行如下语句: SELECT ROUND(25.0 / 8 , 3)结果显示为:结果显示为: 3.125000在查询分析器中,执行如下语句:在查询分析器中,执行如下语句: SELECT ROUND(25.0/8 , 2)

13、结果显示为:结果显示为: 3.130000岳毒阎谆咆殿缨屋兵总凑旅隐存统此俗磨鸵楼颖聂肠噶衍馋雇拿谊埋鹿评第4章TransSQL第4章TransSQL11(3) PI函数函数该函数返回该函数返回的值。例在查询分析器中,执行如下的值。例在查询分析器中,执行如下语句:语句: SELECT PI( )结果显示为:结果显示为: 3.1415926535897931其余函数,自己看书。其余函数,自己看书。箩悼沏孕馒销敝红翔垣荡傅钞幅操擒炔燎蒸犀淘两嗽浇霓炽绞犯脉骨劈硫第4章TransSQL第4章TransSQL124.2 SQL的数据查询功能的数据查询功能4.2.1 简单的简单的Select语句语句Se

14、lect语句是语句是SQL语言中应用最多的语句,可以将语言中应用最多的语句,可以将满足一定约束条件的一个或多个表中的字段挑选出满足一定约束条件的一个或多个表中的字段挑选出来,并按照一定的分组和排序方法显示出来。来,并按照一定的分组和排序方法显示出来。简单格式简单格式:Select 字段名列表字段名列表 From 表名称表名称功能功能:从当前数据库中的指定:从当前数据库中的指定表表中选择指定中选择指定字段字段的的所有记录。所有记录。字段名列表字段名列表:指出要查询的字段,若有多个字段,:指出要查询的字段,若有多个字段,要用逗号分隔;若要用逗号分隔;若选择所有字段选择所有字段,可以用,可以用“*”

15、代代替所有字段名。替所有字段名。井金凋音蛛蕾析囊畜燎捏徊装眨赡擎醋衷刮遁喜驼辟谜夸寝扭酵耶饮责关第4章TransSQL第4章TransSQL13例例4-1 要列出全部课程信息。要列出全部课程信息。设计设计SQL语句为:语句为: Select * From 课程信息表课程信息表* 表示选表示选所有字段所有字段在查询分析器中验证在查询分析器中验证SQL语句,方法如下:语句,方法如下:启动企业管理器,在左侧的启动企业管理器,在左侧的树树窗格中展开窗格中展开数据库数据库节点,找到节点,找到“成绩管理成绩管理”数据库;数据库;在企业管理器中,执行菜单:在企业管理器中,执行菜单:工具工具SQL查询分析查询

16、分析器器,打开查询分析器(如图,打开查询分析器(如图4-1););在查询分析器的在查询分析器的SQL编辑窗格中,输入本例的编辑窗格中,输入本例的SQL语句;语句;单击工具栏中的执行查询按钮(或按单击工具栏中的执行查询按钮(或按F5键)执行键)执行SQL语句,则在结果窗格中显示查询结果语句,则在结果窗格中显示查询结果 忿貌贮焕剃壤靛镀四慎嚣抚刮拴沙铁寨灸淳乔拦甄愧江咨挥缚泄律瘴淮桃第4章TransSQL第4章TransSQL14图图4-1 在查询分析器中执行在查询分析器中执行SQL语句语句选择当前数据库选择当前数据库执行查询按钮执行查询按钮SQL语句语句编辑窗格编辑窗格执行执行SQL语句语句结果

17、窗格结果窗格侧傀鹃荒隙靡八实翟潮圆挖姜脏粳档魄绥闪蔚饿吸鸦骸襄藉匆润臻珊亿斑第4章TransSQL第4章TransSQL15例例4-2 只查询所有课程的课程编号、课程名称,学只查询所有课程的课程编号、课程名称,学时。时。 设计设计SQL语句为:语句为:Select 课程编号课程编号, 课程名称课程名称, 学时学时 From 课程信息表课程信息表郴渍析庆萧剥灵惜痒咱掀矗享旭宋驹冤釉监跪涤斩嫩炉自柳膛逾氟销虫唇第4章TransSQL第4章TransSQL164.2.2 Select语句的更多功能语句的更多功能Select语句还可以完成更复杂的查询功能。语句还可以完成更复杂的查询功能。 Select

18、语句的格式如下:语句的格式如下:Select All | Distinct Top n * | 列名列名1 As 列标题列标题1, 列名列名2 As 列标题列标题2, From 表名表名1 In 数据库名数据库名1 别名别名1, 表名表名2In 数据库名数据库名2 别别名名2Where 条件条件Group By 列名列名1 ,列名列名2 Having 条件条件Order By 列名列名1ASC| DESC, 列名列名2ASC| DESC注意:注意: 中的内容是可以省略的。中的内容是可以省略的。耐忱臃伟摔酶麦谋具耀采蜒覆韭踊锨凛蹋努烘泄贯攒菇邻侨引供勺粹忧黄第4章TransSQL第4章Trans

19、SQL171. Select子句子句All , Distinct 参数用于限制显示记录的数量。使用参数用于限制显示记录的数量。使用时二者任选其一,不指定参数时默认为时二者任选其一,不指定参数时默认为All。All:表示显示符合条件的全部记录。表示显示符合条件的全部记录。例如例如 Select All * From 成绩表成绩表等价于:等价于: Select * From 成绩表成绩表Distinct:表示在查询结果中对于相同的记录只包含表示在查询结果中对于相同的记录只包含一条记录。一条记录。骇许断煞楷浑樊蓉咋院寺攀扣窥白仪醉令猩爹致辨怂孕忠晤芒缩排涝粹鬼第4章TransSQL第4章TransS

20、QL18例例4-3 列出所有选课学生的学号。列出所有选课学生的学号。若执行若执行SQL语句:语句:Select 学号学号 From 成绩表成绩表 查询结果如图查询结果如图4-3(b)所示,因为一所示,因为一个学生可能选择多门个学生可能选择多门 课,所以其课,所以其中会有重复的记录。中会有重复的记录。若执行若执行SQL语句:语句:Select Distinct 学号学号 From 成绩表成绩表 结果如图结果如图4-3(a),与图,与图4-3(b)比较,比较,可以看到可以看到Distinct使重复的记录只使重复的记录只显示一次显示一次。本题不希望出现重复记录,正确本题不希望出现重复记录,正确答案应

21、是后边的答案应是后边的SQL语句。语句。图图4-3 SQL语句执行结果语句执行结果(a)(b)呼锌剃涎札剂茧往腆姿校喳兑蝗白押炊渺芍喜头孕搪擎赏讯惕椎竹恫寐睦第4章TransSQL第4章TransSQL19Top n : 表示只包含查询结果的前表示只包含查询结果的前n条记录。条记录。例例4-4 列出成绩表前列出成绩表前5条记录。条记录。设计设计SQL语句:语句:Select Top 5 * From 成绩表成绩表例例4-5 查询选课的学生学号,并只要前查询选课的学生学号,并只要前5个记录。个记录。设计设计SQL语句:语句: Select Distinct Top 5 学号学号 From 成绩表

22、成绩表结果显示不重复的学号的前结果显示不重复的学号的前5条记录。条记录。丹俯践籍踌妥慈闺终嫌唾泼垢验控伺椭踞滴棱夺钓鼻丛饶棍泣窃民咬从托第4章TransSQL第4章TransSQL20列名列名: 用于指定选择哪些字段。其中用于指定选择哪些字段。其中* : 表示选择所有字段。表示选择所有字段。As 列标题列标题:用于定义字段的别名,常用来指定在:用于定义字段的别名,常用来指定在查询结果中取代原列名而显示的查询结果中取代原列名而显示的列标题列标题,或者在创,或者在创建一个建一个合计字段合计字段时,也可以用这种格式为该字段取时,也可以用这种格式为该字段取名。名。例例4-6 查询成绩表中的所有记录,但

23、要求查询成绩表中的所有记录,但要求“成绩成绩”字段的标题显示为字段的标题显示为“分数分数”。设计设计SQL语句为:语句为: Select 学号学号,课程编号课程编号, 成绩成绩 As 分数分数 From 成绩表成绩表执行结果如图执行结果如图4-5,可见,可见“成绩成绩”列的标题显示为列的标题显示为“分数分数”。 图图4-5 例例4-6语句的执行结果语句的执行结果蠢艺舱释旦睛螺筋到叮鹃需组富攘擒哲锈圃忙涕衔纫诧膜侦垮道末歉侥央第4章TransSQL第4章TransSQL21例例4-7 假设将成绩的假设将成绩的85%计入期末成绩,则要求显计入期末成绩,则要求显示字段示字段 “学号学号”、“课程编号

24、课程编号”、“计入期末分数计入期末分数”。设计设计SQL语句为:语句为: Select 学号学号,课程编号课程编号, 成绩成绩*0.85 As 计入期末分数计入期末分数 From 成绩表成绩表执行结果入图执行结果入图4-6所示。所示。图图4-6 例例4-7语句的执行结果语句的执行结果面碉衍鹤些钾卓端湍巫离捍锰吠侄汤札醉婪罪温缀涝颈窄狞裙裤明侥码蓉第4章TransSQL第4章TransSQL222. From 子句子句用于指定访问的表名及其所在的数据库名。用于指定访问的表名及其所在的数据库名。3. Where 子句子句Where 子句用于设定查询条件,目的是为了从表的数据集子句用于设定查询条件,

25、目的是为了从表的数据集中,筛选出符合条件的记录,从而可以限制查询的范围,提中,筛选出符合条件的记录,从而可以限制查询的范围,提高查询效率。高查询效率。查询条件可以是:查询条件可以是:算术表达式、逻辑表达式或关系表达式,算术表达式、逻辑表达式或关系表达式,使用的运算符有:使用的运算符有:AND,OR,NOT, =, , , =,LIKE, BETWEEN, IN等。等。查询条件:可以是算术表达式、逻辑表达式或关系表达式,查询条件:可以是算术表达式、逻辑表达式或关系表达式,使用的运算符有:使用的运算符有:AND,OR,NOT, =, , , =,LIKE, BETWEEN, IN等。等。葵省炯毙框

26、笑悬嚣础硼替踢呛课于笼推蕴衣休场晴驴匝灯核洪逸耿括哉汝第4章TransSQL第4章TransSQL23AND:表示并列条件关系,且条件必须同时成立。:表示并列条件关系,且条件必须同时成立。OR: 表示选择条件关系,有一个条件成立即可。表示选择条件关系,有一个条件成立即可。例例4-8 列出计算机专业的男学生信息。列出计算机专业的男学生信息。设计设计SQL语句如下:语句如下: Select * from 学生信息表学生信息表 Where 专业专业 = 计算机计算机 AND 性别性别 = 男男 在查询分析器中,执行结果如图在查询分析器中,执行结果如图4-7。图图4-7 例例4-8的的SQL语句执行结

27、果语句执行结果溜记部宠肤武饵负抉鞠近厅殴格真鸵快价跋另佳荒隘煤协胎脯撂戳异吹猩第4章TransSQL第4章TransSQL24BETWEENAND: 用于查询某字段值在某区间用于查询某字段值在某区间的记录。的记录。否定形式为:否定形式为:NOT BETWEENAND例例4-10 查找成绩在查找成绩在85分和分和95分之间的学生。分之间的学生。设计设计SQL语句如下:语句如下:Select * From 成绩表成绩表Where 成绩成绩 BETWEEN 85 AND 95等价于等价于 Select * From 成绩表成绩表 Where 成绩成绩 =85 And 成绩成绩 =60 Order B

28、y 成绩成绩 DESC执行结果如图执行结果如图4-12所示。所示。图图4-12 例例4-13的执行结果的执行结果达浚抡哈希止姓眯煌却蛹倦掷佬侗甩掀喧吓睡篮瀑汗丙橇狈巍俄仑铂跺雄第4章TransSQL第4章TransSQL29例例4-14 在成绩表中,找出所有没有成绩的学号和课在成绩表中,找出所有没有成绩的学号和课程编号。程编号。 SQL语句如下:语句如下:Select 学号学号,课程编号课程编号 From 成绩表成绩表 Where 成绩成绩 IS NULL 所谓没有成绩,表示没有输入成绩,所以成绩值所谓没有成绩,表示没有输入成绩,所以成绩值不是不是0 ,也不是其它值,而是空值。,也不是其它值,

29、而是空值。SQL 语句用语句用NULL 表示空值。判断字段是否为空的一般格式:表示空值。判断字段是否为空的一般格式: 字段名字段名 IS NOT NULL仅们陀挑咸雄烷拟皇燥堤奸耿貌秸班龙郝宪攻券良冈翅猜雁旋皿茹跺币品第4章TransSQL第4章TransSQL304.2.3 多表查询多表查询1 多表连接查询多表连接查询SQL语言提供了同时查询多个表中信息的操作,这语言提供了同时查询多个表中信息的操作,这种多表之间的查询功能称为连接查询。连接查询就种多表之间的查询功能称为连接查询。连接查询就是在多个表或视图之间建立关联,并从这些表或视是在多个表或视图之间建立关联,并从这些表或视图中提取数据,组

30、合成一个结果集。图中提取数据,组合成一个结果集。若按对应字段相等将一个表中的行与另一表中的行若按对应字段相等将一个表中的行与另一表中的行联系起来,称为等值连接查询。联系起来,称为等值连接查询。当进行多表查询时,需要把所涉及的表的名字放在当进行多表查询时,需要把所涉及的表的名字放在From子句中,将表的联系条件放在子句中,将表的联系条件放在Where子句中。子句中。颅堕陌赃阁庚啊漆侦袋徒姨屡唯滦癌谴穴拷扶涟螟蜗邑滴戏镭寞恒棘里蜂第4章TransSQL第4章TransSQL31例例4-15 查询出所有学生的所学课的成绩情况查询出所有学生的所学课的成绩情况 查询结果中要包含:学号、姓名、课程编号、成

31、绩。查询结果中要包含:学号、姓名、课程编号、成绩。 显然,本例需要查询学生信息表显然,本例需要查询学生信息表 (其中有学号、姓其中有学号、姓名字段名字段)和成绩表和成绩表(有课程编号和成绩字段有课程编号和成绩字段)连接条件:连接条件:学生信息表学生信息表.学号学号 = 成绩表成绩表.学号学号设计设计SQL语句如下:语句如下:Select 学生信息表学生信息表.学号学号,学生信息表学生信息表.姓名姓名,成绩表成绩表.课程编号课程编号,成绩表成绩表.成绩成绩 From 学生信息表学生信息表,成绩表成绩表 Where 学生信息表学生信息表.学号学号 = 成绩表成绩表.学号学号图图4-14 两表连接查

32、询结果两表连接查询结果椰宽段价鹊闹续他虐正惕塔提朽拽泌珠草搐擂侗瘸铲嚼傲歉拥蔼疗次塑稍第4章TransSQL第4章TransSQL32还可以用还可以用 JOIN.ON 语句来编写多表连接查询,与语句来编写多表连接查询,与上边上边SQL语句等价的语句等价的SQL语句如下:语句如下: lSelect 学生信息表学生信息表.学号学号,学生信息表学生信息表.姓名姓名,成绩成绩表表.课程编号课程编号,成绩表成绩表.成绩成绩 lFROM 学生信息表学生信息表 JOIN 成绩表成绩表lON 学生信息表学生信息表. 学号学号 = 成绩表成绩表. 学号学号 执行结果同上。执行结果同上。这里,这里,JOIN用于连

33、接两个表,用于连接两个表,ON用于指定两表的用于指定两表的连接条件。连接条件。在连接的结果中,如果要进一步限制查询范围,还在连接的结果中,如果要进一步限制查询范围,还可以在可以在WHERE子句中添加条件。子句中添加条件。 迢扦谣椅突杏低砧酵兽酶嚏嘻搞争钟浓茂浇命锚嫩劳贮侣荡作餐葛乎询旗第4章TransSQL第4章TransSQL33例例4-16 查找选修查找选修1001号课的学生姓名、课程编号、号课的学生姓名、课程编号、成绩成绩 本例要查找的字段涉及到两个表:学生信息表和成本例要查找的字段涉及到两个表:学生信息表和成绩表绩表两表的连接条件:两表的连接条件:学生信息表学生信息表.学号学号= 成绩

34、表成绩表.学号学号另外还有一个附加条件是:另外还有一个附加条件是:课程编号课程编号=1001 设计设计SQL语句如下:语句如下:lSelect 姓名姓名, 课程编号课程编号,成绩成绩 lFrom 学生信息表学生信息表 Join 成绩表成绩表lON 学生信息表学生信息表.学号学号 = 成绩表成绩表.学号学号 lWhere 课程编号课程编号 = 1001蓟爪祖坤纵放桐净椎怪翔浦啊招弊悼陪棘悯粥斋讣厢瞳谬在札霸倘昌痒扒第4章TransSQL第4章TransSQL34等价语句:等价语句: lSelect 姓名姓名, 课程编号,成绩课程编号,成绩 lFrom 学生信息表学生信息表,成绩表成绩表lWher

35、e 学生信息表学生信息表.学号学号= 成绩表成绩表.学号学号 AND 课课程编号程编号=1001图图4-15 例例4-16运行结果运行结果起绚系些褐舍殴峡伙哎艘涝碎捆瑶癣挫往砚胶讽娇娇资慑獭喳停两舰墟购第4章TransSQL第4章TransSQL352使用表的别名使用表的别名在字段名称前以表名作为前缀,可以防止出现二义在字段名称前以表名作为前缀,可以防止出现二义性。如上例中,由于学号字段在两个表中均出现,性。如上例中,由于学号字段在两个表中均出现,为正确区分,在其字段名前加表名作为前缀。而姓为正确区分,在其字段名前加表名作为前缀。而姓名、成绩等字段只在一个表中存在,所以可以不必名、成绩等字段只

36、在一个表中存在,所以可以不必用表名前缀。用表名前缀。 SQL允许在允许在From子句中指定表的同时定义表的别子句中指定表的同时定义表的别名,因而可以用这个临时别名做前缀。从而使书写名,因而可以用这个临时别名做前缀。从而使书写SQL语句变得简单明了。语句变得简单明了。如上例的如上例的SQL语句可以写为:语句可以写为:SELECT X.姓名姓名, C.成绩成绩FROM 学生信息表学生信息表 As X , 成绩表成绩表 As CWHERE X.学号学号 = C.学号学号 And C.课程编号课程编号=1001哇擎娘米逆因珐访矽垃伙串蹭囊揪潦屁清凸猪宫冒打依袋刽浆尊氖熟见钩第4章TransSQL第4章

37、TransSQL36例例4-17 查询所有学生的各门课的成绩。查询所有学生的各门课的成绩。 要求结果包含:学号、姓名、课程名称、成绩这四要求结果包含:学号、姓名、课程名称、成绩这四个字段。个字段。显然,本例涉及到三个表的查询。显然,本例涉及到三个表的查询。学号、姓名学号、姓名字段字段在学生信息表中;在学生信息表中;课程名称课程名称字段在课程信息表中;字段在课程信息表中;成绩成绩字段在成绩表中。字段在成绩表中。学生信息表与成绩表的连接条件为:学生信息表与成绩表的连接条件为:l学生信息表学生信息表.学号学号=成绩表成绩表.学号学号 课程信息表与成绩表的连接条件为:课程信息表与成绩表的连接条件为:l

38、课程信息表课程信息表.课程编号课程编号=成绩表成绩表. 课程编号课程编号磺吉猛裳字盈靳贝也聊仓瓷炽附钳暮蛹俞歧衍炬渝癸抛浪窄篷靛或半嚎燥第4章TransSQL第4章TransSQL37设计的设计的SQL语句如下:语句如下:lSELECT 学生信息表学生信息表.学号学号,学生信息表学生信息表.姓名姓名,课程信息表课程信息表.课程名称课程名称,成绩表成绩表.成绩成绩 lFROM 学生信息表学生信息表,课程信息表课程信息表,成绩表成绩表 lWHERE 学生信息表学生信息表.学号学号=成绩表成绩表.学号学号 And 课课程信息表程信息表.课程编号课程编号=成绩表成绩表.课程编号课程编号用表的别名,写出

39、用表的别名,写出SQL语句如下,显然更简单明了:语句如下,显然更简单明了:lSELECT X.学号学号, X.姓名姓名, K.课程名称课程名称, C.成绩成绩 lFROM 学生信息表学生信息表 AS X, 课程信息表课程信息表 AS K, 成成绩表绩表 AS ClWHERE X.学号学号=C.学号学号 And K.课程编号课程编号=C.课课程编号程编号弛亥擦诗届袄逝饭盾赢改庭动库违荆笑绍窍磨蓄湘鸯蝉随绍陵蠕哟遇蛀窘第4章TransSQL第4章TransSQL383 UNION的使用的使用使用使用UNION可以将两个可以将两个SELECT语句组合在一起,将两个查询的结果语句组合在一起,将两个查询

40、的结果集进行合并,形成一个逻辑联合。集进行合并,形成一个逻辑联合。使用使用UNION子句有两个基本准则:子句有两个基本准则:(1) 每个结果集的数据类型都必须兼容。每个结果集的数据类型都必须兼容。(2) 每个结果集的列数相等,列的顺序必须互相对每个结果集的列数相等,列的顺序必须互相对 应。应。例例4-18 查询教授的讲课情况、副教授的讲课情况查询教授的讲课情况、副教授的讲课情况SQL语句如下:语句如下: SELECT 课程编号课程编号,课程名称课程名称,姓名姓名,职称职称 FROM 课程信息表课程信息表,教师信息表教师信息表WHERE 课程信息表课程信息表.教师编号教师编号=教师信息表教师信息

41、表.教师编号教师编号 And 职称职称=教授教授 UNIONSELECT 课程编号课程编号,课程名称课程名称,姓名姓名,职称职称 FROM 课程信息表课程信息表,教师信息教师信息表表 WHERE 课程信息表课程信息表.教师编号教师编号=教师信息表教师信息表.教师编号教师编号 And 职称职称=副教副教授授ORDER BY 职称职称图图4-17 例例4-18执行结果执行结果窿馁握诉答脚渠嘎诚阿厘扦瘤蚊荣答峦硷惶但颤淖练刁仔兴樟逾客恶芯残第4章TransSQL第4章TransSQL394.2.4 应用聚合函数的查询应用聚合函数的查询SQL Server提供的查询聚合函数,可以有效地实现查询结提供的

42、查询聚合函数,可以有效地实现查询结果的果的数学汇总数学汇总,从而为用户制定数据统计报表提供了方便。,从而为用户制定数据统计报表提供了方便。在在SQL语句中可以通过聚合函数对满足条件的数据进行求语句中可以通过聚合函数对满足条件的数据进行求最大值、最小值、平均值、求和、计数最大值、最小值、平均值、求和、计数等统计运算。常用等统计运算。常用聚合函数如下表。聚合函数如下表。函数名函数名功功 能能AVGCOUNTSUMMAXMIN计算指定列的平均算指定列的平均值统计指定列的指定列的记录数数(行数行数)计算指定列算指定列值的的总和和求指定列的最大求指定列的最大值求指定列的最小求指定列的最小值拖垣四曹觉质涪

43、却向晶限原琴另换兼浴样饥汾鲁偿克媚寅铲正桐顷农崭建第4章TransSQL第4章TransSQL40Group By 子句:子句:用于指定按照哪些字段分组,以用于指定按照哪些字段分组,以便进行统计。如果便进行统计。如果SELECT语句包含语句包含SQL聚合函数,聚合函数,则每组记录都会给出一个统计值。则每组记录都会给出一个统计值。 例例4-19 连接学生信息表和成绩表,统计每个学生选连接学生信息表和成绩表,统计每个学生选课的门数。课的门数。Select 姓名姓名, COUNT(成绩表成绩表.学号学号) As 选课门数选课门数 From 学生信息表学生信息表 INNER JOIN 成绩表成绩表ON

44、 学生信息表学生信息表.学号学号 = 成绩表成绩表.学号学号Group by 学生信息表学生信息表. 姓名姓名执行结果如图执行结果如图4-18所示。所示。图图4-18 分组统计查询结果分组统计查询结果堑糯忿予髓蓉岂铜触绽该削绘居锚蚀尧掳曰傅步翰井沛逼尊件叶磊陨悸蛔第4章TransSQL第4章TransSQL41例例4-20 列出每门课的平均分、最高分、最低分和选列出每门课的平均分、最高分、最低分和选课人数。课人数。本题需要按课程编号分组进行统计,设计本题需要按课程编号分组进行统计,设计SQL语句语句如下:如下:SELECT 课程编号课程编号,AVG(成绩成绩) AS 平均分平均分,MAX(成成

45、绩绩) AS 最高分最高分, MIN(成绩成绩) AS 最低分最低分, COUNT(学学号号) AS 选课人数选课人数FROM 成绩表成绩表GROUP BY 课程编号课程编号 执行结果如图执行结果如图4-19。图图4-19 例例4-20执行结果执行结果COUNT(*)是一个非常特殊而又非常有用的函数,是一个非常特殊而又非常有用的函数,它可以计算出满足条件的记录的行数。它可以计算出满足条件的记录的行数。上例中的上例中的COUNT(学号学号)可以改为可以改为COUNT(*)。城淘雷革彦忽蹿女岗茅撮域抖徒鹃凿编雏例酵樊沧铁错碴贯也驴酿坎仰篓第4章TransSQL第4章TransSQL42Having

46、子句:子句: 可用于在完成数据结果的查询和统可用于在完成数据结果的查询和统计后,对查询结果做进一步的筛选。计后,对查询结果做进一步的筛选。例例4-21 对上例的查询统计结果,进一步筛选出平均对上例的查询统计结果,进一步筛选出平均分分=80分的课程。分的课程。设计设计SQL语句如下:语句如下:SELECT 课程编号课程编号,AVG(成绩成绩) AS 平均分平均分,MAX(成成绩绩) AS 最高分最高分, MIN(成绩成绩) AS 最低分最低分, COUNT(学学号号) AS 选课人数选课人数FROM 成绩表成绩表GROUP BY 课程编号课程编号HAVING AVG(成绩成绩) = 80执行结果

47、如图执行结果如图4-20。图图4-20 用用HAVING筛选的结果筛选的结果姓由淖潭虎育叹冻带棺诺绎歌轮钱苫庶伟翅幌病鲤煌瘸顺蝉术刨踏歌弹僧第4章TransSQL第4章TransSQL434.2.5 嵌套查询嵌套查询嵌套查询也称子查询,就是在一个嵌套查询也称子查询,就是在一个SELECT语句中又嵌套了语句中又嵌套了一个一个SELECT语句。一般可以在语句。一般可以在WHERE子句或子句或HAVING子子句中嵌套句中嵌套SELECT语句。语句。例例4-22 要查询信息学院的教师所讲的课程信息。要查询信息学院的教师所讲的课程信息。由于在课程信息表中只有教师编号字段,而若不清楚教师编由于在课程信息表

48、中只有教师编号字段,而若不清楚教师编号对应的单位,就必须到教师信息表中查询到单位是信息学号对应的单位,就必须到教师信息表中查询到单位是信息学院的教师编号。院的教师编号。 SQL语句如下:语句如下:SELECT 课程编号课程编号,课程名称课程名称,学时学时,学分学分 FROM 课程信息表课程信息表WHERE教师编号教师编号 IN (SELECT 教师编号教师编号 FROM 教师信息表教师信息表 WHERE 单位单位=信息学院信息学院)查询结果如图查询结果如图图图4-21 例例4-22运行结果运行结果铭洗厢泳阵腐呵募帮蕴睦玫被树际毕覆联公挡氢刻棍碌痰玻缘砂抡沸秉滋第4章TransSQL第4章Tra

49、nsSQL44这个查询执行的过程是这个查询执行的过程是:l首先执行括号中的子查询,得到所有属于信息学首先执行括号中的子查询,得到所有属于信息学院的教师编号;院的教师编号;l然后执行外围查询,查询教师编号属于子查询结然后执行外围查询,查询教师编号属于子查询结果中的课程信息记录。果中的课程信息记录。注意:注意:当子查询返回的结果当子查询返回的结果不惟一时不惟一时,该查询结果,该查询结果不能作为不能作为外围查询条件等号外围查询条件等号“=”右边的值。例如右边的值。例如上例的上例的WHERE子句中的子句中的“IN”,若改为,若改为“=”号,号,则执行该语句时系统会提示出错。则执行该语句时系统会提示出错

50、。所以若不能确定子查询只返回一行结果,则不要使所以若不能确定子查询只返回一行结果,则不要使用用“=”作为条件运算符而采用作为条件运算符而采用 “IN” 作为条件运作为条件运算符。算符。彦乍秩馋随禹栅知惺俯俊掐苹舍蛰囤琐妊酌菇懂讲筋骨迁俗熙仇耳尼厦抓第4章TransSQL第4章TransSQL45如果要求在查询条件中使用聚合函数,可以用嵌套如果要求在查询条件中使用聚合函数,可以用嵌套查询。查询。例例4-23 要查询出所有成绩大于平均分的学号、课程要查询出所有成绩大于平均分的学号、课程编号、成绩编号、成绩如果如果SQL语句写成以下形式:语句写成以下形式:Select * From 成绩表成绩表 W

51、here 成绩成绩 AVG(成绩成绩)则执行时将会则执行时将会提示出错提示出错,因为,因为Where子句中不许直子句中不许直接使用聚合函数接使用聚合函数。可以通过在。可以通过在Where子句中使用嵌子句中使用嵌套查询来解决这个问题,套查询来解决这个问题,SQL语句如下:语句如下:Select * From 成绩表成绩表 Where 成绩成绩 (Select AVG(成绩成绩) From 成绩表成绩表)郑吧命鸽钮将说皖铣予惶梅暴灌锐瞳酌痉九找惫翱蒂膛铰胯围晌抨壳陀粪第4章TransSQL第4章TransSQL464.3 SQL的数据更新功能的数据更新功能数据更新功能,是指对已经存在的表进行记录的

52、增数据更新功能,是指对已经存在的表进行记录的增加、删除、修改等操作。加、删除、修改等操作。4.3.1 保存查询结果(保存查询结果(SELECT INTO) 如果需要保存查询结果可以在如果需要保存查询结果可以在SELECT语句中使用语句中使用INTO子句。子句。INTO子句可以创建一个新表,并将查子句可以创建一个新表,并将查询结果插入该表。新表的结构由结果集中各列的数询结果插入该表。新表的结构由结果集中各列的数据类型决定。所以据类型决定。所以该功能主要用于将记录存档,为该功能主要用于将记录存档,为表做备份或把表输出到另一个数据库中表做备份或把表输出到另一个数据库中。语法格式:语法格式: SELE

53、CT 字段名列表字段名列表 INTO 新表名称新表名称 FROM 表名表名口肩讫瓷涉挠小喷蹈遗虫乳涟陇掠决竟锣厄射齿壶傀镶锰润环草坝寂抹知第4章TransSQL第4章TransSQL47例例4-24 建立一个学生信息表的备份,名为:建立一个学生信息表的备份,名为:“学生学生信息表信息表2”。SQL语句如下:语句如下:l SELECT * INTO 学生信息表学生信息表2l FROM 学生信息表学生信息表执行该语句,从执行该语句,从学生信息表学生信息表中选择所有字段,生成中选择所有字段,生成一个新表一个新表“学生信息表学生信息表2”。与。与学生信息表学生信息表的内容完的内容完全一样。全一样。口墩

54、膨腔券际绵可块拧晕拳奉受乒贰税砰训帝涌滑折犊刁扮批孵驻惧幅土第4章TransSQL第4章TransSQL484.3.2 插入记录(插入记录(INSERT INTO) 在在SQL语句中,常用语句中,常用INSERT语句向表格中添加记语句向表格中添加记录。录。语句格式:语句格式:INSERT INTO 表名表名(字段名列表字段名列表) Values(表达式列表表达式列表)功能:向指定表中插入一条记录,功能:向指定表中插入一条记录, Values后边括号后边括号中的表达式的值就是新记录的数据。中的表达式的值就是新记录的数据。若给所有字段插入值,则字段名列表可以省略,但若给所有字段插入值,则字段名列表

55、可以省略,但要插入的表达式列表中的数据类型必须与表中的对要插入的表达式列表中的数据类型必须与表中的对应字段的数据类型相匹配。应字段的数据类型相匹配。纸尉弟劝萨簇赶钢柿泥菏缅综详胰砾萨钝茵沸火蒂炎讼殃柴力骋校酵翼汲第4章TransSQL第4章TransSQL49例例4-25 在学生信息表在学生信息表2中插入中插入2条记录,要增加的记录数据条记录,要增加的记录数据如下表。如下表。学号学号姓名姓名性性别生日生日专业030403马丽女女金融金融030404丁丁红女女1986-01-08金融金融执行如下执行如下SQL语句,插入第语句,插入第1条记录:条记录: INSERT INTO 学生信息表学生信息表

56、2 (学号学号,姓名姓名,性别性别,专业专业) VALUES (030503,马华马华, 女女,金融金融)“生日生日”字段因为没有添加值,所以内容为字段因为没有添加值,所以内容为NULL。再执行以下再执行以下SQL语句,插入第语句,插入第2条记录:条记录: Insert Into 学生信息表学生信息表2 Values(030504,刘莉刘莉,女女,1986-01-08, 金融金融)该语句,因为对表中的全部字段都添加新数据,所以语句格该语句,因为对表中的全部字段都添加新数据,所以语句格式中的字段名列表被省略。式中的字段名列表被省略。牟坠阶天叠壳俭云只乍街迷衍橡匿商砒齿侨豆澈淌梳根殆闹叶银怂菱向簧

57、第4章TransSQL第4章TransSQL504.3.3 修改记录(修改记录(UPDATE)可以用可以用UPDATE语句对表中的数据进行修改。可以语句对表中的数据进行修改。可以在语句中指定要修改的列和要赋予的新值。通过在语句中指定要修改的列和要赋予的新值。通过WHERE子句,可以指定要更新的列所必须符合的子句,可以指定要更新的列所必须符合的条件。条件。格式:格式: UPDATE 表名表名 SET 字段名字段名1 = 表达式表达式1,字段名,字段名2 = 表达式表达式2 Where 条件条件功能:功能: 对指定表中满足对指定表中满足Where 条件的记录进行修条件的记录进行修改,若无改,若无W

58、here 子句,则修改所有记录。子句,则修改所有记录。修改方法是:以表达式修改方法是:以表达式1 的值替换字段的值替换字段1 中的各记中的各记录值,以表达式录值,以表达式2 的值替换字段的值替换字段2 的各记录值的各记录值 以以此类推。此类推。 绝夷瞎性瘁专姚盈礼讨抚墙嘲之资玫趾冲叙厄迭虏归曹坪击典富秸悔歼妻第4章TransSQL第4章TransSQL51例例4-26 将成绩表中的将成绩表中的“1001” 号课的所有成绩加号课的所有成绩加3 分。分。设计设计SQL语句如下:语句如下: lUPDATE 成绩表成绩表 SET 成绩成绩=成绩成绩+3 lWHERE 课号课号= 1001结果成绩表中的

59、结果成绩表中的“成绩成绩”这一列的数据值,只要是这一列的数据值,只要是课号课号= 1001的记录都增加了的记录都增加了3分。分。戈簇织街笋练惹簿纯其氛哺岔扛耪铺离咨饰嗜浙辜湖戍谬凝筹幂恬暖惟杯第4章TransSQL第4章TransSQL524.3.4 删除记录(删除记录(DELETE)格式:格式:DELETE FROM 表名表名 WHERE 条件条件功能:在指定表中删除满足功能:在指定表中删除满足WHERE 条件的记录,条件的记录,当省略当省略WHERE子句时,表示删除表中全部记录。子句时,表示删除表中全部记录。例例4-27 从学生信息表从学生信息表2中删除姓名为马华的记录:中删除姓名为马华的

60、记录:lDELETE From 学生信息表学生信息表2 Where 姓名姓名= 马马华华删除所有删除所有“金融金融”专业的学生:专业的学生:lDELETE From 学生信息表学生信息表2 Where 专业专业= 金金融融 删除学生信息表删除学生信息表2中的所有记录:中的所有记录:l DELETE From 学生信息表学生信息表2 积蓄磊售石咸缄爪凳握弊咀剂戊昭曙双缀讹捏紧晋并槛油翱教充筛抹茵水第4章TransSQL第4章TransSQL534.4 数据库对象操作功能数据库对象操作功能 对数据库对象进行管理,包括创建数据库、删除数对数据库对象进行管理,包括创建数据库、删除数据库、创建表、删除表

61、、创建视图、删除视图等操据库、创建表、删除表、创建视图、删除视图等操作。作。方法方法1:在企业管理器中进行;:在企业管理器中进行;方法方法2:用:用Transact-SQL命令实现。命令实现。4.4.1 创建与删除数据库语句创建与删除数据库语句1创建数据库语句创建数据库语句CREATE DATABASE 例例4-28 创建一个简单的数据库创建一个简单的数据库MyDB1。可以用以下语句:可以用以下语句:lCREATE DATABASE MyDB1呛矗捞瓷孵崭誓叔狈仇种央虚剑诱撵都圈檀赚指框逐冯魂捎划场揽皋椽栖第4章TransSQL第4章TransSQL54语句常用格式语句常用格式 CREATE

62、DATABASE 数据库名数据库名ON PRIMARY (NAME = ,FILENAME = ,SIZE = ,MAXSIZE = ,FILEGROWTH = ) LOG ON(NAME = ,FILENAME = ,SIZE= ,MAXSIZE = , FILEGROWTH=)楷衬钨憋果鱼俘宣钦桐札摹纲赡袄榜绥灭坞搬戊痪耗惺梅舱咎唐权钒州仰第4章TransSQL第4章TransSQL55参数说明:参数说明: ON:表示开始定义数据文件。其中可以定义多个数据文件。表示开始定义数据文件。其中可以定义多个数据文件。PRIMARY:定义数据库的主数据文件。若没有给出该关键字,则默认定义数据库的主数

63、据文件。若没有给出该关键字,则默认CREATE DATABASE语句中出现的第一个文件为主数据文语句中出现的第一个文件为主数据文件。件。LOG ON:表示开始定义日志文件。表示开始定义日志文件。NAME:定义数据库文件的逻辑文件名称,该名称只在定义数据库文件的逻辑文件名称,该名称只在TransactSQL语句中使用,是实际磁盘文件名的代号。语句中使用,是实际磁盘文件名的代号。FILENAME:定义数据库文件的实际名称,包括文件所在的绝对路径名,定义数据库文件的实际名称,包括文件所在的绝对路径名,创建数据库后,可以在指定路径中找到相应的文件。创建数据库后,可以在指定路径中找到相应的文件。嫉到倚屡

64、郝廷怜词狂焦蔓仅悟俗霸邢忱蚌虑棚誉那节蹦戍彬各噶叶琵畜裤第4章TransSQL第4章TransSQL56参数说明:参数说明:SIZE:定义文件的初始长度。可以用定义文件的初始长度。可以用KB、MB、GB、TB为单位为单位(不指定单位,则默认(不指定单位,则默认MB)。如果不指定该参数,系统会)。如果不指定该参数,系统会自动分配文件的大小。自动分配文件的大小。MAXSIZE: 定义数据库文件的最大长度。当数据库文件增长到最大长定义数据库文件的最大长度。当数据库文件增长到最大长度时,系统会自动生成一个新的数据文件。如果省略该参数,度时,系统会自动生成一个新的数据文件。如果省略该参数,则数据文件可以

65、无限制增长,直至磁盘空间满为止。也可以则数据文件可以无限制增长,直至磁盘空间满为止。也可以设置设置UNLIMITED关键字,使文件无限制增长。关键字,使文件无限制增长。FILEGROWTH:定义数据文件的增量。每当数据库中增加新的数据时,数据定义数据文件的增量。每当数据库中增加新的数据时,数据文件的大小将随之发生变化,当长度不够时文件可以按文件的大小将随之发生变化,当长度不够时文件可以按FILEGROWTH指定的增量增加文件的空间。该值可以用指定的增量增加文件的空间。该值可以用KB、MB、GB、TB为单位(不指定单位,则默认为单位(不指定单位,则默认MB),),或以百分比(或以百分比(%)增长

66、。)增长。品斋党做夹就蛮钱丫驭镍话颠狈艺阿褥雪所雇枝陪佩峪善断挚粉珠滋舵抽第4章TransSQL第4章TransSQL57例例4-29 创建一个数据库,观察语句中参数的用法。创建一个数据库,观察语句中参数的用法。要求建立的数据库名为要求建立的数据库名为DBTest,主数据文件大小,主数据文件大小:10MB,最大,最大:50MB,自,自动增长率:动增长率:2MB建立日志文件大小建立日志文件大小:5MB,最大,最大:20MB,自动增长率:,自动增长率:10%语句如下:语句如下:CREATE DATABASE DBTestON PRIMARY (NAME = DBTest_data1,FILENAM

67、E = D:lzw MyDB_data1.mdf ,SIZE = 10MB,MAXSIZE =50,FILEGROWTH = 2MB)LOG ON(NAME= DBTest_Log,FILENAME = D:lzwDBTest_Log.Ldf ,SIZE = 5MB,MAXSIZE =20MB,FILEGROWTH = 10%)昧肄澄卖成此孔绕为峭姥布榷钓昼嫉株赋曳询展烙告古蹲抬钝钧贾彬驹绽第4章TransSQL第4章TransSQL58在查询分析器中运行上述语句,执行结果显示如下:在查询分析器中运行上述语句,执行结果显示如下:CREATE DATABASE 进程正在磁盘进程正在磁盘 DBTe

68、st_data1 上分配上分配 10.00 MB 的空间。的空间。CREATE DATABASE 进程正在磁盘进程正在磁盘 DBTest_Log 上分配上分配 5.00 MB 的空间。的空间。掉觅救乓荷女囱丑足文狈擦拦蛹更吓建揽管卞渤袖扯谊冒于显剪挟珐姆技第4章TransSQL第4章TransSQL592删除数据库语句删除数据库语句格式:格式:DROP DATABASE 数据库名数据库名1,数据库名,数据库名2 例例4-30 删除上例建立的数据库删除上例建立的数据库DBTest。删除语句如下:删除语句如下:Drop DataBase DBTest僧孝寸嚷蹋斤亮共阔悉巢顷涡莫六疙倚锄里淑乓予雇峦

69、印饲粱甘疲官寡蚤第4章TransSQL第4章TransSQL604.4.2 创建与删除数据表语句创建与删除数据表语句1创建数据表语句创建数据表语句语句的格式:语句的格式:lCREATE TABLE 表名称表名称l(列名(列名1 数据类型,数据类型,l 列名列名2 数据类型,数据类型,l l 列名列名n 数据类型数据类型l)语句的功能:创建表结构。语句的功能:创建表结构。醒著航握隶弥伙萍玻甘弘控惠颗铅模痊珍囊肛宫帜陷朵铭频继模得邵阅峙第4章TransSQL第4章TransSQL61例例4-31 用语句在例用语句在例4-28 创建的数据库创建的数据库MyDB1中创中创建学生信息表。假设要创建的表结

70、构如表建学生信息表。假设要创建的表结构如表4-3,将学,将学号字段设为主键。号字段设为主键。表表4-3 学生信息表结构学生信息表结构字段名字段名数据数据类型型长度度学号学号int自自动姓名姓名varchar10性性别char2生日生日datetime自自动专业varchar20磐直语我汹腑选限绵攒幕坍撒钳迂损蹲芽它演罚棱号番泣捣吕夜戊讫痕傻第4章TransSQL第4章TransSQL62创建表的语句如下:创建表的语句如下:CREATE TABLE 学生信息表学生信息表(学号(学号 int , 姓名姓名 varchar(10), 性别性别 char(2), 生日生日 datetime, 专业专业

71、 varchar(20))在企业管理器中打开查询分析器,选择在企业管理器中打开查询分析器,选择MyDB1数据数据库,输入上述语句,执行结果显示:库,输入上述语句,执行结果显示:命令已成功完成。命令已成功完成。 彰指锻盅押廖印哟烫趋滤宽讨启礼恐砍昔砾蜘佰砍悠跨月弘便瓮庄刨鸳待第4章TransSQL第4章TransSQL63在在CREATE TABLE语句中,可以使用以下参数进语句中,可以使用以下参数进一步设置表的属性一步设置表的属性PRIMARY KEY: 用来定义表的主键。用来定义表的主键。例例4-32 将上例的学号字段设为主键,将上例的学号字段设为主键,SQL语句如下:语句如下:CREATE

72、 TABLE 学生信息表学生信息表(学号(学号 int PRIMARY KEY, 姓名姓名 varchar(10),性别性别 char(2), 生日生日 datetime, 专业专业 varchar(20)) 芋翅哈祥南羽脖站缝芝琴裴两怨柯儿那肌笺镊葡挥婿漓狗阔肠阑脚锅秤慨第4章TransSQL第4章TransSQL64NULL 或或 NOT NULL用于定义列的值是否允许空。若被设置为用于定义列的值是否允许空。若被设置为NOT NULL,表,表示该列不允许空,则往表中录入数据时,该列必须输入值。示该列不允许空,则往表中录入数据时,该列必须输入值。例例4-33 将上例的姓名字段设为将上例的姓名

73、字段设为NOT NULL,SQL语句如下:语句如下:CREATE TABLE 学生信息表学生信息表(学号(学号 int PRIMARY KEY, 姓名姓名 varchar(10) NOT NULL, 性别性别 char(2), 生日生日 datetime, 专业专业 varchar(20))贱睫吟姿沪茅件佑荧悲咋烟挨树伦眩疮格氰站郭啸凭桌你饼亩负打深酣般第4章TransSQL第4章TransSQL652删除数据表语句删除数据表语句删除数据表的语句格式:删除数据表的语句格式:l DROP TABLE 表名称表名称例如要删除例如要删除MyDB1数据库中的学生信息表执行数据库中的学生信息表执行SQL

74、语句如下:语句如下:l DROP TABLE 学生信息表学生信息表在企业管理器中选择在企业管理器中选择MyDB1数据库,打开查询分析数据库,打开查询分析器,输入上述语句,执行结果显示:器,输入上述语句,执行结果显示:l命令已成功完成。命令已成功完成。表示已经在表示已经在MyDB1数据库中删除了学生信息表。数据库中删除了学生信息表。 顾桩息宅朵轧轨逾步黎篷聂怔武传卑斋鞋筋菩硒须即苯柞晰朔纺诈革憾哎第4章TransSQL第4章TransSQL66小小 结结 主要掌握主要掌握 1TransactSQL语句的数据查询功能,其中包括:语句的数据查询功能,其中包括: Selsct语句完整格式、单表查询、多

75、表连接查询、使语句完整格式、单表查询、多表连接查询、使用聚合函数的查询等。用聚合函数的查询等。2TransactSQL语句的数据更新功能语句的数据更新功能:为表做备份或把表输出到另一个数据库中为表做备份或把表输出到另一个数据库中(Select Into) 对已经存在的表进行记录的增加对已经存在的表进行记录的增加(INSERT INTO)删除删除(DELETE)、修改修改(UPDATE)操作。操作。气组窿在你白莉雁佬得绩新某祁叼泣卒剿窄辣钠肉供绒以痘滔瓜篡几俩绵第4章TransSQL第4章TransSQL67作业作业设数据库设数据库“教学教学”中所包含如下关系模式中所包含如下关系模式:学生表学生

76、表(学号学号,姓名姓名,年级年级,专业专业)课程表课程表(课号课号,课名课名,教师教师,课时课时,学分学分)成绩表成绩表(学号学号,课号课号,成绩成绩)必修课表必修课表(课号课号,专业专业)写出实现以下功能的写出实现以下功能的SQL语句。语句。学号学号姓名姓名年级年级专业专业010301张小军张小军01计算机软件计算机软件010102张平平张平平01通信工程通信工程010103李新李新01通信工程通信工程020305钱明钱明02计算机软件计算机软件030301刘利刘利03计算机软件计算机软件 学生表学生表课号课号课课 名名教师教师课时课时学学分分01C程序设计程序设计吴吴 军军60302数据结

77、构数据结构刘刘 中中80403操作系统操作系统李李 玲玲80404数据库数据库汪汪 红红603 课程表课程表担冗呐渭滁姻卢慈酋肿嘶何酿娇邪腿赠贫鸣滴向锋衫炳孽试钓醉潍掂笔馒第4章TransSQL第4章TransSQL68学号学号课号课号成绩成绩01030101870103010271010301036501030104920101020173010102048701010301500101030473 成绩表成绩表课号课号专业专业01计算机软件计算机软件01通信工程通信工程02计算机软件计算机软件03计算机软件计算机软件04计算机软件计算机软件04通信工程通信工程必修课必修课故紫启辙瓮享骋驯辛

78、绪牟弧轴旅咸亮栏贸窖累帧线窗畏狐毅稍力二企乐壹第4章TransSQL第4章TransSQL69习题习题4.15 (1). 查询所有查询所有04级通信工程专业的学生名单(显示:级通信工程专业的学生名单(显示:学号、姓名、专业)学号、姓名、专业)(2). 查询选修查询选修1001号课的学生成绩单(显示:学号、号课的学生成绩单(显示:学号、姓名、课号、成绩)。姓名、课号、成绩)。(3).查询选查询选04号课的学生成绩的前号课的学生成绩的前3名(显示:学名(显示:学号、姓名、课名、成绩)号、姓名、课名、成绩).(4). 查询各专业必修课情况查询各专业必修课情况(显示:专业、课名显示:专业、课名),并按专业排序。并按专业排序。(5). 显示成绩不及格的学号、姓名、课号、成绩。显示成绩不及格的学号、姓名、课号、成绩。(6). 列出各门课的名称、平均成绩、最高成绩、选列出各门课的名称、平均成绩、最高成绩、选课人数。课人数。笔里稗鸭圆中磊与缘稠儒恬咽甭衷钙迪舌矽港嫡纤趋视撮殖陇司驼白韧侥第4章TransSQL第4章TransSQL70第第4章章 结束结束途蒸寨掇谊蒂综彩柞诧铃系擅揪峡傅缺辅拍谅佯槛盔振度碍扛盛陪鹤像以第4章TransSQL第4章TransSQL71

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号