第4章TransSQL.ppt

上传人:本田雅阁 文档编号:2566469 上传时间:2019-04-09 格式:PPT 页数:71 大小:538.51KB
返回 下载 相关 举报
第4章TransSQL.ppt_第1页
第1页 / 共71页
第4章TransSQL.ppt_第2页
第2页 / 共71页
第4章TransSQL.ppt_第3页
第3页 / 共71页
第4章TransSQL.ppt_第4页
第4页 / 共71页
第4章TransSQL.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

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

1、1,第4章 TransactSQL简介,2,4.1 Transact SQL语言概述,SQL即结构化查询语言,是访问数据库的标准语言,可以完成复杂的数据库操作. 由于SQL语言具有功能丰富、使用方便灵活、语言简洁易用等特点,深受广大计算机用户的欢迎,许多数据库厂家也都推出支持SQL的数据库管理软件。 1989年,国际标准化组织ISO将SQL定为国际标准,推荐它为标准关系数据库语言。 1990年,我国也颁布了信息处理系统数据库语言SQL,将其定为中国国家标准。 在Microsoft SQL Server中,使用的是 Transact-SQL,它可以看作是标准SQL的一种方言,与标准SQL基本兼容

2、。,3,用户向数据库提出要求,与SQL Server数据库进行交流的语言是Transact-SQL语言。用Transact-SQL语言编写应用程序可以完成所有的数据库管理工作。任何应用程序,必须通过SQL语句为表现形式的指令向数据库管理系统发送指令,以获得数据库管理系统的响应。因此学习SQL语言对于数据库开发人员来说十分必要。 本小节将介绍Transact-SQL的语法规则和常用函数。,4,4.1.1 标识符,SQL Server标识符有自己的命名规则,介绍如下: 组成标识符的字符个数在1128之间。 标识符的首字符可以是:字母、汉字、下划线、#。 以 符号开头的标识符表示局部变量或参数; 以

3、 # 符号开头的标识符表示临时表或过程; 以# 符号开头的标识符表示全局临时对象。 用字母做标识符时不区分大、小写。 标识符中不应含空格和保留字。保留字是SQL Server系统使用的符号,如SELECT、FROM、WHERE、DATABASE、VIEW、TABLE等。,5,如果需要用保留字或空格作为标识符使用,则需要用 “ ” 或 进行分隔处理。例如观察下面的SQL语句: SELECT * FROM My TABLE WHERE VIEW 20 该语句中,表名称My TABLE中含有空格,所以要用分隔符 将其括住,否则SQL Server会将其看作两个标识符;另外在WHERE后边的VIEW是

4、保留字,所以也必须用分隔符 将其括住。,6,4.1.2 注释,SQL Server支持两种注释符:- 和 /*/ 。 - :是单行注释符。如果注释内容为多行需要在每行注释的前边加“-”。例如有两行注释,书写格式为: - 这是注释 - 这里也是注释 /*/ :是多行注释符,从/*开始,到*/ 之间的所有内容均为注释部分。例如有两行注释,书写格式为: /*这是注释 这里也是注释*/,7,4.1.3 常用函数,TransactSQL中提供的函数包括:聚合函数、数学函数、字符串函数、日期时间函数、配置函数、游标函数、安全函数、系统函数、文本和图象函数等。 1聚合函数 聚合函数也称统计函数,经常用于Se

5、lect语句中,对表或视图中的数据进行统计。常用的聚合函数如下: AVG:用来计算指定参数组的平均值。 COUNT:用来计算指定参数组中项目的数量。 MAX:用来求指定参数组中的最大值。 MIN:用来求指定参数组中的最小值。 SUM:用来求指定参数组中的所有值的和。,8,2配置函数,配置函数用于得到当前系统中配置选项的设置信息。常用的配置函数如下: (1) LANGUAGE 该函数返回系统当前使用的语言。例在查询分析器中,执行如下语句: SELECT LANGUAGE 结果显示为: 简体中文,9,(2) VERSION 该函数返回SQL Server 2000当前安装的日期、版本、和处理器类型

6、信息。例在查询分析器中,执行如下语句: SELECT VERSION 结果显示版本信息。 (3) MAX_CONNECTIONS 该函数返回SQL Server允许的最大连接数。例如在查询分析器中,执行如下语句: SELECT MAX_CONNECTIONS 结果显示为: 32767,10,3数学函数,数学函数可以对数值进行数学计算。常用的数学函数介绍如下。 (1)SQRT函数 返回指定值的平方根。例在查询分析器中,执行如下语句: SELECT SQRT(25) 结果显示为: 5.0,11,(2)ROUND函数 该函数对数值表达式的计算结果进行4舍5入处理。 函数的使用格式: ROUND(表达

7、式 , n) 其中n表示取小数的位数。例在查询分析器中,执行如下语句: SELECT ROUND(25.0 / 8 , 3) 结果显示为: 3.125000 在查询分析器中,执行如下语句: SELECT ROUND(25.0/8 , 2) 结果显示为: 3.130000,12,(3) PI函数 该函数返回的值。例在查询分析器中,执行如下语句: SELECT PI( ) 结果显示为: 3.1415926535897931 其余函数,自己看书。,13,4.2 SQL的数据查询功能,4.2.1 简单的Select语句 Select语句是SQL语言中应用最多的语句,可以将满足一定约束条件的一个或多个表

8、中的字段挑选出来,并按照一定的分组和排序方法显示出来。 简单格式:Select 字段名列表 From 表名称 功能:从当前数据库中的指定表中选择指定字段的所有记录。 字段名列表:指出要查询的字段,若有多个字段,要用逗号分隔;若选择所有字段,可以用“*”代替所有字段名。,14,例4-1 要列出全部课程信息。,设计SQL语句为: Select * From 课程信息表,* 表示选所有字段,在查询分析器中验证SQL语句,方法如下: 启动企业管理器,在左侧的树窗格中展开数据库节点,找到“成绩管理”数据库; 在企业管理器中,执行菜单:工具SQL查询分析器,打开查询分析器(如图4-1); 在查询分析器的S

9、QL编辑窗格中,输入本例的SQL语句; 单击工具栏中的执行查询按钮(或按F5键)执行SQL语句,则在结果窗格中显示查询结果,15,16,例4-2 只查询所有课程的课程编号、课程名称,学时。 设计SQL语句为: Select 课程编号, 课程名称, 学时 From 课程信息表,17,4.2.2 Select语句的更多功能,Select语句还可以完成更复杂的查询功能。 Select语句的格式如下: Select All | Distinct Top n * | 列名1 As 列标题1, 列名2 As 列标题2, From 表名1 In 数据库名1 别名1, 表名2In 数据库名2 别名2 Wher

10、e 条件 Group By 列名1 ,列名2 Having 条件 Order By 列名1ASC| DESC, 列名2ASC| DESC 注意: 中的内容是可以省略的。,18,1. Select子句,All , Distinct 参数用于限制显示记录的数量。使用时二者任选其一,不指定参数时默认为All。 All:表示显示符合条件的全部记录。 例如 Select All * From 成绩表 等价于: Select * From 成绩表 Distinct:表示在查询结果中对于相同的记录只包含一条记录。,19,例4-3 列出所有选课学生的学号。,若执行SQL语句: Select 学号 From 成

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

12、成绩表 结果显示不重复的学号的前5条记录。,21,列名: 用于指定选择哪些字段。其中 * : 表示选择所有字段。 As 列标题:用于定义字段的别名,常用来指定在查询结果中取代原列名而显示的列标题,或者在创建一个合计字段时,也可以用这种格式为该字段取名。 例4-6 查询成绩表中的所有记录,但要求“成绩”字段的标题显示为“分数”。 设计SQL语句为: Select 学号,课程编号, 成绩 As 分数 From 成绩表 执行结果如图4-5,可见“成绩”列的标题显示为“分数”。,图4-5 例4-6语句的执行结果,22,例4-7 假设将成绩的85%计入期末成绩,则要求显示字段 “学号”、“课程编号”、“

13、计入期末分数”。 设计SQL语句为: Select 学号,课程编号, 成绩*0.85 As 计入期末分数 From 成绩表 执行结果入图4-6所示。,图4-6 例4-7语句的执行结果,23,2. From 子句 用于指定访问的表名及其所在的数据库名。 3. Where 子句 Where 子句用于设定查询条件,目的是为了从表的数据集中,筛选出符合条件的记录,从而可以限制查询的范围,提高查询效率。 查询条件可以是: 算术表达式、逻辑表达式或关系表达式, 使用的运算符有: AND,OR,NOT, =, , =,LIKE, BETWEEN, IN等。 查询条件:可以是算术表达式、逻辑表达式或关系表达式

14、,使用的运算符有:AND,OR,NOT, =, , =,LIKE, BETWEEN, IN等。,24,AND:表示并列条件关系,且条件必须同时成立。 OR: 表示选择条件关系,有一个条件成立即可。 例4-8 列出计算机专业的男学生信息。 设计SQL语句如下: Select * from 学生信息表 Where 专业 = 计算机 AND 性别 = 男 在查询分析器中,执行结果如图4-7。,图4-7 例4-8的SQL语句执行结果,25,BETWEENAND: 用于查询某字段值在某区间的记录。 否定形式为:NOT BETWEENAND 例4-10 查找成绩在85分和95分之间的学生。 设计SQL语句

15、如下: Select * From 成绩表Where 成绩 BETWEEN 85 AND 95 等价于 Select * From 成绩表 Where 成绩 =85 And 成绩 =95 执行结果如图4-8所示。,图4-8 例4-10的SQL执行结果,26,IN:用于设置当字段值是几个值中的一个时的条件。 其否定形式:NOT IN 例4-11 查找“机械自动化”和“自动化”专业学生的学号、姓名和专业。 设计SQL语句如下: SELECT 学号,姓名,专业 FROM 学生信息表 WHERE 专业 IN(机械自动化, 自动化) 等价于以下语句: SELECT 学号,姓名,专业 FROM 学生信息表

16、 WHERE 专业 = 机械自动化 OR 专业= 自动化,图4-9 例4-11的SQL执行结果,27,LIKE:用于在查询条件中比较字符串,实现模糊查询。 在实际应用中,用户不一定总是能够给出精确的查询条件,因此经常需要根据一些不太确切的线索来搜索信息。在WHERE子句中用LIKE与通配符“%”配合搜索,这种查询称为“模糊查询”。 例查找所有姓李的学生记录: SELECT * FROM 学生信息表 WHERE 姓名 Like 李% ,图4-10 查询姓李的学生,28,例4-12 查询03级和04级的学生成绩情况。 因为学号的前2位代表年级,故只要查找学号前2位是03和04的记录即可。 设计SQ

17、L语句如下: SELECT * FROM 成绩表 WHERE 学号 Like 03% OR 学号 Like 04% 执行结果如图4-11。,图4-11 例4-12的SQL执行结果,29,4. Order By 子句 用于指定按哪些字段对查询结果进行排序。用ASC(或省略),表示升序排序,DESC表示降序排序。 例4-13 查询1001号课并且成绩在60分以上的学号和成绩,并按成绩从高到低(降序)排序。图4-12 - 设计SQL语句如下: Select 学号, 成绩 From 成绩表 Where 课程编号=1001 And 成绩=60 Order By 成绩 DESC 执行结果如图4-12所示。

18、,图4-12 例4-13的执行结果,30,例4-14 在成绩表中,找出所有没有成绩的学号和课程编号。 SQL语句如下: Select 学号,课程编号 From 成绩表 Where 成绩 IS NULL 所谓没有成绩,表示没有输入成绩,所以成绩值不是0 ,也不是其它值,而是空值。SQL 语句用NULL 表示空值。判断字段是否为空的一般格式: 字段名 IS NOT NULL,31,4.2.3 多表查询,1 多表连接查询 SQL语言提供了同时查询多个表中信息的操作,这种多表之间的查询功能称为连接查询。连接查询就是在多个表或视图之间建立关联,并从这些表或视图中提取数据,组合成一个结果集。 若按对应字段

19、相等将一个表中的行与另一表中的行联系起来,称为等值连接查询。 当进行多表查询时,需要把所涉及的表的名字放在From子句中,将表的联系条件放在Where子句中。,32,例4-15 查询出所有学生的所学课的成绩情况,查询结果中要包含:学号、姓名、课程编号、成绩。 显然,本例需要查询学生信息表 (其中有学号、姓名字段)和成绩表(有课程编号和成绩字段) 连接条件:学生信息表.学号 = 成绩表.学号 设计SQL语句如下: Select 学生信息表.学号,学生信息表.姓名,成绩表.课程编号,成绩表.成绩 From 学生信息表,成绩表 Where 学生信息表.学号 = 成绩表.学号,图4-14 两表连接查询

20、结果,33,还可以用 JOIN.ON 语句来编写多表连接查询,与上边SQL语句等价的SQL语句如下: Select 学生信息表.学号,学生信息表.姓名,成绩表.课程编号,成绩表.成绩 FROM 学生信息表 JOIN 成绩表 ON 学生信息表. 学号 = 成绩表. 学号 执行结果同上。 这里,JOIN用于连接两个表,ON用于指定两表的连接条件。 在连接的结果中,如果要进一步限制查询范围,还可以在WHERE子句中添加条件。,34,例4-16 查找选修1001号课的学生姓名、课程编号、成绩,本例要查找的字段涉及到两个表:学生信息表和成绩表 两表的连接条件:学生信息表.学号= 成绩表.学号 另外还有一

21、个附加条件是:课程编号=1001 设计SQL语句如下: Select 姓名, 课程编号,成绩 From 学生信息表 Join 成绩表 ON 学生信息表.学号 = 成绩表.学号 Where 课程编号 = 1001,35,等价语句: Select 姓名, 课程编号,成绩 From 学生信息表,成绩表 Where 学生信息表.学号= 成绩表.学号 AND 课程编号=1001,图4-15 例4-16运行结果,36,2使用表的别名,在字段名称前以表名作为前缀,可以防止出现二义性。如上例中,由于学号字段在两个表中均出现,为正确区分,在其字段名前加表名作为前缀。而姓名、成绩等字段只在一个表中存在,所以可以不

22、必用表名前缀。 SQL允许在From子句中指定表的同时定义表的别名,因而可以用这个临时别名做前缀。从而使书写SQL语句变得简单明了。 如上例的SQL语句可以写为: SELECT X.姓名, C.成绩 FROM 学生信息表 As X , 成绩表 As C WHERE X.学号 = C.学号 And C.课程编号=1001,37,例4-17 查询所有学生的各门课的成绩。,要求结果包含:学号、姓名、课程名称、成绩这四个字段。 显然,本例涉及到三个表的查询。学号、姓名字段在学生信息表中;课程名称字段在课程信息表中;成绩字段在成绩表中。 学生信息表与成绩表的连接条件为: 学生信息表.学号=成绩表.学号

23、课程信息表与成绩表的连接条件为: 课程信息表.课程编号=成绩表. 课程编号,38,设计的SQL语句如下: SELECT 学生信息表.学号,学生信息表.姓名,课程信息表.课程名称,成绩表.成绩 FROM 学生信息表,课程信息表,成绩表 WHERE 学生信息表.学号=成绩表.学号 And 课程信息表.课程编号=成绩表.课程编号 用表的别名,写出SQL语句如下,显然更简单明了: SELECT X.学号, X.姓名, K.课程名称, C.成绩 FROM 学生信息表 AS X, 课程信息表 AS K, 成绩表 AS C WHERE X.学号=C.学号 And K.课程编号=C.课程编号,39,3 UNI

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

25、信息表.教师编号 And 职称=副教授 ORDER BY 职称,图4-17 例4-18执行结果,40,4.2.4 应用聚合函数的查询,SQL Server提供的查询聚合函数,可以有效地实现查询结果的数学汇总,从而为用户制定数据统计报表提供了方便。在SQL语句中可以通过聚合函数对满足条件的数据进行求最大值、最小值、平均值、求和、计数等统计运算。常用聚合函数如下表。,41,Group By 子句:用于指定按照哪些字段分组,以便进行统计。如果SELECT语句包含SQL聚合函数,则每组记录都会给出一个统计值。 例4-19 连接学生信息表和成绩表,统计每个学生选课的门数。 Select 姓名, COUN

26、T(成绩表.学号) As 选课门数 From 学生信息表 INNER JOIN 成绩表 ON 学生信息表.学号 = 成绩表.学号 Group by 学生信息表. 姓名 执行结果如图4-18所示。,图4-18 分组统计查询结果,42,例4-20 列出每门课的平均分、最高分、最低分和选课人数。,本题需要按课程编号分组进行统计,设计SQL语句如下: SELECT 课程编号,AVG(成绩) AS 平均分,MAX(成绩) AS 最高分, MIN(成绩) AS 最低分, COUNT(学号) AS 选课人数 FROM 成绩表 GROUP BY 课程编号 执行结果如图4-19。,图4-19 例4-20执行结果

27、,COUNT(*)是一个非常特殊而又非常有用的函数, 它可以计算出满足条件的记录的行数。 上例中的COUNT(学号)可以改为COUNT(*)。,43,Having子句: 可用于在完成数据结果的查询和统计后,对查询结果做进一步的筛选。 例4-21 对上例的查询统计结果,进一步筛选出平均分=80分的课程。 设计SQL语句如下: SELECT 课程编号,AVG(成绩) AS 平均分,MAX(成绩) AS 最高分, MIN(成绩) AS 最低分, COUNT(学号) AS 选课人数 FROM 成绩表 GROUP BY 课程编号 HAVING AVG(成绩) = 80 执行结果如图4-20。,图4-20

28、 用HAVING筛选的结果,44,4.2.5 嵌套查询,嵌套查询也称子查询,就是在一个SELECT语句中又嵌套了一个SELECT语句。一般可以在WHERE子句或HAVING子句中嵌套SELECT语句。 例4-22 要查询信息学院的教师所讲的课程信息。 由于在课程信息表中只有教师编号字段,而若不清楚教师编号对应的单位,就必须到教师信息表中查询到单位是信息学院的教师编号。 SQL语句如下: SELECT 课程编号,课程名称,学时,学分 FROM 课程信息表 WHERE教师编号 IN (SELECT 教师编号 FROM 教师信息表 WHERE 单位=信息学院) 查询结果如图,图4-21 例4-22运

29、行结果,45,这个查询执行的过程是: 首先执行括号中的子查询,得到所有属于信息学院的教师编号; 然后执行外围查询,查询教师编号属于子查询结果中的课程信息记录。 注意:当子查询返回的结果不惟一时,该查询结果不能作为外围查询条件等号“=”右边的值。例如上例的WHERE子句中的“IN”,若改为“=”号,则执行该语句时系统会提示出错。 所以若不能确定子查询只返回一行结果,则不要使用“=”作为条件运算符而采用 “IN” 作为条件运算符。,46,如果要求在查询条件中使用聚合函数,可以用嵌套查询。 例4-23 要查询出所有成绩大于平均分的学号、课程编号、成绩 如果SQL语句写成以下形式: Select *

30、From 成绩表 Where 成绩 AVG(成绩) 则执行时将会提示出错,因为Where子句中不许直接使用聚合函数。可以通过在Where子句中使用嵌套查询来解决这个问题,SQL语句如下: Select * From 成绩表 Where 成绩 (Select AVG(成绩) From 成绩表),47,4.3 SQL的数据更新功能,数据更新功能,是指对已经存在的表进行记录的增加、删除、修改等操作。 4.3.1 保存查询结果(SELECT INTO) 如果需要保存查询结果可以在SELECT语句中使用INTO子句。INTO子句可以创建一个新表,并将查询结果插入该表。新表的结构由结果集中各列的数据类型决

31、定。所以该功能主要用于将记录存档,为表做备份或把表输出到另一个数据库中。 语法格式: SELECT 字段名列表 INTO 新表名称 FROM 表名,48,例4-24 建立一个学生信息表的备份,名为:“学生信息表2”。 SQL语句如下: SELECT * INTO 学生信息表2 FROM 学生信息表 执行该语句,从学生信息表中选择所有字段,生成一个新表“学生信息表2”。与学生信息表的内容完全一样。,49,4.3.2 插入记录(INSERT INTO),在SQL语句中,常用INSERT语句向表格中添加记录。 语句格式:INSERT INTO 表名(字段名列表) Values(表达式列表) 功能:向

32、指定表中插入一条记录, Values后边括号中的表达式的值就是新记录的数据。 若给所有字段插入值,则字段名列表可以省略,但要插入的表达式列表中的数据类型必须与表中的对应字段的数据类型相匹配。,50,例4-25 在学生信息表2中插入2条记录,要增加的记录数据如下表。,执行如下SQL语句,插入第1条记录: INSERT INTO 学生信息表2 (学号,姓名,性别,专业) VALUES (030503,马华, 女,金融) “生日”字段因为没有添加值,所以内容为NULL。 再执行以下SQL语句,插入第2条记录: Insert Into 学生信息表2 Values(030504,刘莉,女,1986-01

33、-08, 金融) 该语句,因为对表中的全部字段都添加新数据,所以语句格式中的字段名列表被省略。,51,4.3.3 修改记录(UPDATE),可以用UPDATE语句对表中的数据进行修改。可以在语句中指定要修改的列和要赋予的新值。通过WHERE子句,可以指定要更新的列所必须符合的条件。 格式: UPDATE 表名 SET 字段名1 = 表达式1,字段名2 = 表达式2 Where 条件 功能: 对指定表中满足Where 条件的记录进行修改,若无Where 子句,则修改所有记录。 修改方法是:以表达式1 的值替换字段1 中的各记录值,以表达式2 的值替换字段2 的各记录值 以此类推。,52,例4-2

34、6 将成绩表中的“1001” 号课的所有成绩加3 分。 设计SQL语句如下: UPDATE 成绩表 SET 成绩=成绩+3 WHERE 课号= 1001 结果成绩表中的“成绩”这一列的数据值,只要是课号= 1001的记录都增加了3分。,53,4.3.4 删除记录(DELETE),格式:DELETE FROM 表名 WHERE 条件 功能:在指定表中删除满足WHERE 条件的记录,当省略WHERE子句时,表示删除表中全部记录。 例4-27 从学生信息表2中删除姓名为马华的记录: DELETE From 学生信息表2 Where 姓名= 马华 删除所有“金融”专业的学生: DELETE From

35、学生信息表2 Where 专业= 金融 删除学生信息表2中的所有记录: DELETE From 学生信息表2,54,4.4 数据库对象操作功能,对数据库对象进行管理,包括创建数据库、删除数据库、创建表、删除表、创建视图、删除视图等操作。 方法1:在企业管理器中进行; 方法2:用Transact-SQL命令实现。 4.4.1 创建与删除数据库语句 1创建数据库语句CREATE DATABASE 例4-28 创建一个简单的数据库MyDB1。 可以用以下语句: CREATE DATABASE MyDB1,55,语句常用格式,CREATE DATABASE 数据库名 ON PRIMARY (NAME

36、= , FILENAME = , SIZE = , MAXSIZE = , FILEGROWTH = ) LOG ON (NAME = , FILENAME = , SIZE= , MAXSIZE = , FILEGROWTH=),56,参数说明:,ON: 表示开始定义数据文件。其中可以定义多个数据文件。 PRIMARY: 定义数据库的主数据文件。若没有给出该关键字,则默认CREATE DATABASE语句中出现的第一个文件为主数据文件。 LOG ON: 表示开始定义日志文件。 NAME: 定义数据库文件的逻辑文件名称,该名称只在TransactSQL语句中使用,是实际磁盘文件名的代号。 FI

37、LENAME: 定义数据库文件的实际名称,包括文件所在的绝对路径名,创建数据库后,可以在指定路径中找到相应的文件。,57,参数说明:,SIZE: 定义文件的初始长度。可以用KB、MB、GB、TB为单位(不指定单位,则默认MB)。如果不指定该参数,系统会自动分配文件的大小。 MAXSIZE: 定义数据库文件的最大长度。当数据库文件增长到最大长度时,系统会自动生成一个新的数据文件。如果省略该参数,则数据文件可以无限制增长,直至磁盘空间满为止。也可以设置UNLIMITED关键字,使文件无限制增长。 FILEGROWTH: 定义数据文件的增量。每当数据库中增加新的数据时,数据文件的大小将随之发生变化,

38、当长度不够时文件可以按FILEGROWTH指定的增量增加文件的空间。该值可以用KB、MB、GB、TB为单位(不指定单位,则默认MB),或以百分比(%)增长。,58,例4-29 创建一个数据库,观察语句中参数的用法。,要求建立的数据库名为DBTest,主数据文件大小:10MB,最大:50MB,自动增长率:2MB 建立日志文件大小:5MB,最大:20MB,自动增长率:10% 语句如下: CREATE DATABASE DBTest ON PRIMARY (NAME = DBTest_data1, FILENAME = D:lzw MyDB_data1.mdf , SIZE = 10MB, MAXS

39、IZE =50, FILEGROWTH = 2MB) LOG ON (NAME= DBTest_Log, FILENAME = D:lzwDBTest_Log.Ldf , SIZE = 5MB, MAXSIZE =20MB, FILEGROWTH = 10%),59,在查询分析器中运行上述语句,执行结果显示如下: CREATE DATABASE 进程正在磁盘 DBTest_data1 上分配 10.00 MB 的空间。 CREATE DATABASE 进程正在磁盘 DBTest_Log 上分配 5.00 MB 的空间。,60,2删除数据库语句,格式:DROP DATABASE 数据库名1,数据

40、库名2 例4-30 删除上例建立的数据库DBTest。 删除语句如下: Drop DataBase DBTest,61,4.4.2 创建与删除数据表语句,1创建数据表语句 语句的格式: CREATE TABLE 表名称 (列名1 数据类型, 列名2 数据类型, 列名n 数据类型 ) 语句的功能:创建表结构。,62,例4-31 用语句在例4-28 创建的数据库MyDB1中创建学生信息表。假设要创建的表结构如表4-3,将学号字段设为主键。,表4-3 学生信息表结构,63,创建表的语句如下:,CREATE TABLE 学生信息表 (学号 int , 姓名 varchar(10), 性别 char(2

41、), 生日 datetime, 专业 varchar(20) ) 在企业管理器中打开查询分析器,选择MyDB1数据库,输入上述语句,执行结果显示: 命令已成功完成。,64,在CREATE TABLE语句中,可以使用以下参数进一步设置表的属性,PRIMARY KEY: 用来定义表的主键。 例4-32 将上例的学号字段设为主键,SQL语句如下: CREATE TABLE 学生信息表 (学号 int PRIMARY KEY, 姓名 varchar(10), 性别 char(2), 生日 datetime, 专业 varchar(20) ),65,NULL 或 NOT NULL 用于定义列的值是否允许

42、空。若被设置为NOT NULL,表示该列不允许空,则往表中录入数据时,该列必须输入值。 例4-33 将上例的姓名字段设为NOT NULL,SQL语句如下: CREATE TABLE 学生信息表 (学号 int PRIMARY KEY, 姓名 varchar(10) NOT NULL, 性别 char(2), 生日 datetime, 专业 varchar(20) ),66,2删除数据表语句,删除数据表的语句格式: DROP TABLE 表名称 例如要删除MyDB1数据库中的学生信息表执行SQL语句如下: DROP TABLE 学生信息表 在企业管理器中选择MyDB1数据库,打开查询分析器,输入

43、上述语句,执行结果显示: 命令已成功完成。 表示已经在MyDB1数据库中删除了学生信息表。,67,小 结,主要掌握 1TransactSQL语句的数据查询功能,其中包括: Selsct语句完整格式、单表查询、多表连接查询、使用聚合函数的查询等。 2TransactSQL语句的数据更新功能: 为表做备份或把表输出到另一个数据库中(Select Into) 对已经存在的表进行记录的增加(INSERT INTO) 删除(DELETE)、 修改(UPDATE)操作。,68,作业,设数据库“教学”中所包含如下关系模式: 学生表(学号,姓名,年级,专业) 课程表(课号,课名,教师,课时,学分) 成绩表(学号,课号,成绩) 必修课表(课号,专业) 写出实现以下功能的SQL语句。,学生表,课程表,69,成绩表,必修课,70,习题4.15,(1). 查询所有04级通信工程专业的学生名单(显示:学号、姓名、专业) (2). 查询选修1001号课的学生成绩单(显示:学号、姓名、课号、成绩)。 (3).查询选04号课的学生成绩的前3名(显示:学号、姓名、课名、成绩). (4). 查询各专业必修课情况(显示:专业、课名),并按专业排序。 (5). 显示成绩不及格的学号、姓名、课号、成绩。 (6). 列出各门课的名称、平均成绩、最高成绩、选课人数。,71,第4章 结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1