收藏 分享(赏)

第4章 TransSQL.ppt

上传人:Facebook 文档编号:3404819 上传时间:2018-10-24 格式:PPT 页数:69 大小:939KB
下载 相关 举报
第4章 TransSQL.ppt_第1页
第1页 / 共69页
第4章 TransSQL.ppt_第2页
第2页 / 共69页
第4章 TransSQL.ppt_第3页
第3页 / 共69页
第4章 TransSQL.ppt_第4页
第4页 / 共69页
第4章 TransSQL.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

1、1,第4章 TransactSQL简介,2,4.1 Transact SQL语言概述,SQL即结构化查询语言,是访问数据库的标准语言,可以完成复杂的数据库操作. Microsoft SQL Server中,使用的是 Transact-SQL,是标准SQL的一种方言,与标准SQL基本兼容。 任何应用程序,必须通过SQL语句为表现形式的指令向数据库管理系统发送指令,以获得数据库管理系统的响应。,3,4.1.1 标识符,SQL Server标识符有自己的命名规则,介绍如下: 组成标识符的字符个数在1128之间。 标识符的首字符可以是:字母、汉字、下划线、#。 以 符号开头的标识符表示局部变量或参数;

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

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

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

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

6、行如下语句:SELECT ROUND(25.0 / 8 , 3) 结果显示为:3.125000 在查询分析器中,执行如下语句:SELECT ROUND(25.0/8 , 2) 结果显示为:3.130000,11,(3) PI函数 该函数返回的值。例在查询分析器中,执行如下语句:SELECT PI( ) 结果显示为:3.1415926535897931,12,4.2 SQL的数据查询功能,4.2.1 简单的Select语句Select语句可以将满足一定约束条件的一个或多个表中的字段挑选出来,并按照一定的分组和排序方法显示出来。 简单格式:Select 字段名列表 From 表名称 功能:从当前数

7、据库中的指定表中选择指定字段的所有记录。 字段名列表:指出要查询的字段,若有多个字段,要用逗号分隔;若选择所有字段,可以用“*”代替所有字段名。,13,例4-1 要列出全部课程信息。,设计SQL语句为: Select * From 课程信息表,* 表示选所有字段,在查询分析器中验证SQL语句,方法如下: 启动企业管理器,在左侧的树窗格中展开数据库节点,找到“成绩管理”数据库; 在企业管理器中,执行菜单:工具SQL查询分析器,打开查询分析器(如图4-1); 在查询分析器的SQL编辑窗格中,输入本例的SQL语句; 单击工具栏中的执行查询按钮(或按F5键)执行SQL语句,则在结果窗格中显示查询结果,

8、14,15,例4-2 只查询所有课程的课程编号、课程名称,学时。设计SQL语句为: Select 课程编号, 课程名称, 学时 From 课程信息表,16,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 Where 条件 Group By 列名1 ,列名2 Having 条件 Order By 列名1ASC| DESC, 列名2ASC|

9、DESC 注意: 中的内容是可以省略的。,17,1. Select子句,All , Distinct 参数用于限制显示记录的数量。使用时二者任选其一,不指定参数时默认为All。 All:表示显示符合条件的全部记录。 例如 Select All * From 成绩表 等价于: Select * From 成绩表 Distinct:表示在查询结果中对于相同的记录只包含一条记录。,18,例4-3 列出所有选课学生的学号。,若执行SQL语句: Select 学号 From 成绩表 查询结果如图4-3(b)所示,因为一个学生可能选择多门 课,所以其中会有重复的记录。 若执行SQL语句: Select D

10、istinct 学号 From 成绩表 结果如图4-3(a),与图4-3(b)比较,可以看到Distinct使重复的记录只显示一次。 本题不希望出现重复记录,正确答案应是后边的SQL语句。,19,Top n : 表示只包含查询结果的前n条记录。 例4-4 列出成绩表前5条记录。 设计SQL语句:Select Top 5 * From 成绩表例4-5 查询选课的学生学号,并只要前5个记录。 设计SQL语句:Select Distinct Top 5 学号 From 成绩表 结果显示不重复的学号的前5条记录。,20,列名: 用于指定选择哪些字段。其中 * : 表示选择所有字段。 As 列标题:用于

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

12、入图4-6所示。,图4-6 例4-7语句的执行结果,22,2. From 子句 用于指定访问的表名及其所在的数据库名。 3. Where 子句 Where 子句用于设定查询条件,目的是为了从表的数据集中,筛选出符合条件的记录,从而可以限制查询的范围,提高查询效率。 查询条件可以是: 算术表达式、逻辑表达式或关系表达式, 使用的运算符有: AND,OR,NOT, =, , =,LIKE, BETWEEN, IN等。 查询条件:可以是算术表达式、逻辑表达式或关系表达式,使用的运算符有:AND,OR,NOT, =, , =,LIKE, BETWEEN, IN等。,23,AND:表示并列条件关系,且条

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

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

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

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

17、编号 From 成绩表Where 成绩 IS NULL所谓没有成绩,表示没有输入成绩,所以成绩值不是0 ,也不是其它值,而是空值。SQL 语句用NULL 表示空值。判断字段是否为空的一般格式: 字段名 IS NOT NULL,30,4.2.3 多表查询,1 多表连接查询 SQL语言提供了同时查询多个表中信息的操作,这种多表之间的查询功能称为连接查询。连接查询就是在多个表或视图之间建立关联,并从这些表或视图中提取数据,组合成一个结果集。 若按对应字段相等将一个表中的行与另一表中的行联系起来,称为等值连接查询。 当进行多表查询时,需要把所涉及的表的名字放在From子句中,将表的联系条件放在Wher

18、e子句中。,31,例4-15 查询出所有学生的所学课的成绩情况,查询结果中要包含:学号、姓名、课程编号、成绩。 显然,本例需要查询学生信息表 (其中有学号、姓名字段)和成绩表(有课程编号和成绩字段) 连接条件:学生信息表.学号 = 成绩表.学号 设计SQL语句如下: Select 学生信息表.学号,学生信息表.姓名,成绩表.课程编号,成绩表.成绩 From 学生信息表,成绩表Where 学生信息表.学号 = 成绩表.学号,图4-14 两表连接查询结果,32,还可以用 JOIN.ON 语句来编写多表连接查询,与上边SQL语句等价的SQL语句如下: Select 学生信息表.学号,学生信息表.姓名

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

20、.学号 = 成绩表.学号 Where 课程编号 = 1001,34,等价语句: Select 姓名, 课程编号,成绩 From 学生信息表,成绩表 Where 学生信息表.学号= 成绩表.学号 AND 课程编号=1001,图4-15 例4-16运行结果,35,2使用表的别名,在字段名称前以表名作为前缀,可以防止出现二义性。如上例中,由于学号字段在两个表中均出现,为正确区分,在其字段名前加表名作为前缀。而姓名、成绩等字段只在一个表中存在,所以可以不必用表名前缀。 SQL允许在From子句中指定表的同时定义表的别名,因而可以用这个临时别名做前缀。从而使书写SQL语句变得简单明了。 如上例的SQL语

21、句可以写为: SELECT X.姓名, C.成绩 FROM 学生信息表 As X , 成绩表 As C WHERE X.学号 = C.学号 And C.课程编号=1001,36,例4-17 查询所有学生的各门课的成绩。,要求结果包含:学号、姓名、课程名称、成绩这四个字段。 显然,本例涉及到三个表的查询。学号、姓名字段在学生信息表中;课程名称字段在课程信息表中;成绩字段在成绩表中。 学生信息表与成绩表的连接条件为: 学生信息表.学号=成绩表.学号 课程信息表与成绩表的连接条件为: 课程信息表.课程编号=成绩表. 课程编号,37,设计的SQL语句如下: SELECT 学生信息表.学号,学生信息表.

22、姓名,课程信息表.课程名称,成绩表.成绩 FROM 学生信息表,课程信息表,成绩表 WHERE 学生信息表.学号=成绩表.学号 And 课程信息表.课程编号=成绩表.课程编号 用表的别名,写出SQL语句如下,显然更简单明了: SELECT X.学号, X.姓名, K.课程名称, C.成绩 FROM 学生信息表 AS X, 课程信息表 AS K, 成绩表 AS C WHERE X.学号=C.学号 And K.课程编号=C.课程编号,38,3 UNION的使用,使用UNION可以将两个SELECT语句组合在一起,将两个查询的结果集进行合并,形成一个逻辑联合。 使用UNION子句有两个基本准则: (

23、1) 每个结果集的数据类型都必须兼容。 (2) 每个结果集的列数相等,列的顺序必须互相对 应。 例4-18 查询教授的讲课情况、副教授的讲课情况 SQL语句如下:SELECT 课程编号,课程名称,姓名,职称 FROM 课程信息表,教师信息表 WHERE 课程信息表.教师编号=教师信息表.教师编号 And 职称=教授UNION SELECT 课程编号,课程名称,姓名,职称 FROM 课程信息表,教师信息表WHERE 课程信息表.教师编号=教师信息表.教师编号 And 职称=副教授 ORDER BY 职称,图4-17 例4-18执行结果,39,4.2.4 应用聚合函数的查询,SQL Server提

24、供的查询聚合函数,可以有效地实现查询结果的数学汇总,从而为用户制定数据统计报表提供了方便。在SQL语句中可以通过聚合函数对满足条件的数据进行求最大值、最小值、平均值、求和、计数等统计运算。常用聚合函数如下表。,40,Group By 子句:用于指定按照哪些字段分组,以便进行统计。如果SELECT语句包含SQL聚合函数,则每组记录都会给出一个统计值。 例4-19 连接学生信息表和成绩表,统计每个学生选课的门数。 Select 姓名, COUNT(成绩表.学号) As 选课门数 From 学生信息表 INNER JOIN 成绩表 ON 学生信息表.学号 = 成绩表.学号 Group by 学生信息

25、表. 姓名 执行结果如图4-18所示。,图4-18 分组统计查询结果,41,例4-20 列出每门课的平均分、最高分、最低分和选课人数。,本题需要按课程编号分组进行统计,设计SQL语句如下: SELECT 课程编号,AVG(成绩) AS 平均分,MAX(成绩) AS 最高分, MIN(成绩) AS 最低分, COUNT(学号) AS 选课人数 FROM 成绩表 GROUP BY 课程编号 执行结果如图4-19。,图4-19 例4-20执行结果,COUNT(*)是一个非常特殊而又非常有用的函数, 它可以计算出满足条件的记录的行数。 上例中的COUNT(学号)可以改为COUNT(*)。,42,Hav

26、ing子句: 可用于在完成数据结果的查询和统计后,对查询结果做进一步的筛选。例4-21 对上例的查询统计结果,进一步筛选出平均分=80分的课程。 设计SQL语句如下: SELECT 课程编号,AVG(成绩) AS 平均分,MAX(成绩) AS 最高分, MIN(成绩) AS 最低分, COUNT(学号) AS 选课人数 FROM 成绩表 GROUP BY 课程编号 HAVING AVG(成绩) = 80 执行结果如图4-20。,图4-20 用HAVING筛选的结果,43,4.2.5 嵌套查询,嵌套查询也称子查询,就是在一个SELECT语句中又嵌套了一个SELECT语句。一般可以在WHERE子句

27、或HAVING子句中嵌套SELECT语句。 例4-22 要查询信息学院的教师所讲的课程信息。 由于在课程信息表中只有教师编号字段,而若不清楚教师编号对应的单位,就必须到教师信息表中查询到单位是信息学院的教师编号。 SQL语句如下: SELECT 课程编号,课程名称,学时,学分 FROM 课程信息表 WHERE教师编号 IN (SELECT 教师编号 FROM 教师信息表 WHERE 单位=信息学院) 查询结果如图,图4-21 例4-22运行结果,44,这个查询执行的过程是: 首先执行括号中的子查询,得到所有属于信息学院的教师编号; 然后执行外围查询,查询教师编号属于子查询结果中的课程信息记录。

28、 注意:当子查询返回的结果不惟一时,该查询结果不能作为外围查询条件等号“=”右边的值。例如上例的WHERE子句中的“IN”,若改为“=”号,则执行该语句时系统会提示出错。 所以若不能确定子查询只返回一行结果,则不要使用“=”作为条件运算符而采用 “IN” 作为条件运算符。,45,如果要求在查询条件中使用聚合函数,可以用嵌套查询。 例4-23 要查询出所有成绩大于平均分的学号、课程编号、成绩 如果SQL语句写成以下形式: Select * From 成绩表 Where 成绩 AVG(成绩) 则执行时将会提示出错,因为Where子句中不许直接使用聚合函数。可以通过在Where子句中使用嵌套查询来解

29、决这个问题,SQL语句如下: Select * From 成绩表 Where 成绩 (Select AVG(成绩) From 成绩表),46,4.3 SQL的数据更新功能,数据更新功能,是指对已经存在的表进行记录的增加、删除、修改等操作。 4.3.1 保存查询结果(SELECT INTO)如果需要保存查询结果可以在SELECT语句中使用INTO子句。INTO子句可以创建一个新表,并将查询结果插入该表。新表的结构由结果集中各列的数据类型决定。所以该功能主要用于将记录存档,为表做备份或把表输出到另一个数据库中。 语法格式: SELECT 字段名列表 INTO 新表名称FROM 表名,47,例4-2

30、4 建立一个学生信息表的备份,名为:“学生信息表2”。 SQL语句如下:SELECT * INTO 学生信息表2FROM 学生信息表 执行该语句,从学生信息表中选择所有字段,生成一个新表“学生信息表2”。与学生信息表的内容完全一样。,48,4.3.2 插入记录(INSERT INTO),在SQL语句中,常用INSERT语句向表格中添加记录。 语句格式:INSERT INTO 表名(字段名列表) Values(表达式列表) 功能:向指定表中插入一条记录, Values后边括号中的表达式的值就是新记录的数据。 若给所有字段插入值,则字段名列表可以省略,但要插入的表达式列表中的数据类型必须与表中的对

31、应字段的数据类型相匹配。,49,例4-25 在学生信息表2中插入2条记录,要增加的记录数据如下表。,执行如下SQL语句,插入第1条记录:INSERT INTO 学生信息表2 (学号,姓名,性别,专业) VALUES (030503,马华, 女,金融) “生日”字段因为没有添加值,所以内容为NULL。 再执行以下SQL语句,插入第2条记录:Insert Into 学生信息表2 Values(030504,刘莉,女,1986-01-08, 金融) 该语句,因为对表中的全部字段都添加新数据,所以语句格式中的字段名列表被省略。,50,4.3.3 修改记录(UPDATE),可以用UPDATE语句对表中的

32、数据进行修改。可以在语句中指定要修改的列和要赋予的新值。通过WHERE子句,可以指定要更新的列所必须符合的条件。 格式: UPDATE 表名 SET 字段名1 = 表达式1,字段名2 = 表达式2Where 条件 功能: 对指定表中满足Where 条件的记录进行修改,若无Where 子句,则修改所有记录。 修改方法是:以表达式1 的值替换字段1 中的各记录值,以表达式2 的值替换字段2 的各记录值 以此类推。,51,例4-26 将成绩表中的“1001” 号课的所有成绩加3 分。 设计SQL语句如下: UPDATE 成绩表 SET 成绩=成绩+3 WHERE 课号= 1001 结果成绩表中的“成

33、绩”这一列的数据值,只要是课号= 1001的记录都增加了3分。,52,4.3.4 删除记录(DELETE),格式:DELETE FROM 表名 WHERE 条件 功能:在指定表中删除满足WHERE 条件的记录,当省略WHERE子句时,表示删除表中全部记录。 例4-27 从学生信息表2中删除姓名为马华的记录: DELETE From 学生信息表2 Where 姓名= 马华 删除所有“金融”专业的学生: DELETE From 学生信息表2 Where 专业= 金融 删除学生信息表2中的所有记录:DELETE From 学生信息表2,53,4.4 数据库对象操作功能,对数据库对象进行管理,包括创建

34、数据库、删除数据库、创建表、删除表、创建视图、删除视图等操作。 方法1:在企业管理器中进行; 方法2:用Transact-SQL命令实现。 4.4.1 创建与删除数据库语句 1创建数据库语句CREATE DATABASE 例4-28 创建一个简单的数据库MyDB1。 可以用以下语句: CREATE DATABASE MyDB1,54,语句常用格式,CREATE DATABASE 数据库名 ONPRIMARY(NAME = , FILENAME = , SIZE = , MAXSIZE = , FILEGROWTH = ) LOG ON (NAME = , FILENAME = , SIZE=

35、, MAXSIZE = , FILEGROWTH=),55,参数说明:,ON: 表示开始定义数据文件。其中可以定义多个数据文件。 PRIMARY: 定义数据库的主数据文件。若没有给出该关键字,则默认CREATE DATABASE语句中出现的第一个文件为主数据文件。 LOG ON: 表示开始定义日志文件。 NAME: 定义数据库文件的逻辑文件名称,该名称只在TransactSQL语句中使用,是实际磁盘文件名的代号。 FILENAME: 定义数据库文件的实际名称,包括文件所在的绝对路径名,创建数据库后,可以在指定路径中找到相应的文件。,56,参数说明:,SIZE: 定义文件的初始长度。可以用KB、

36、MB、GB、TB为单位(不指定单位,则默认MB)。如果不指定该参数,系统会自动分配文件的大小。 MAXSIZE:定义数据库文件的最大长度。当数据库文件增长到最大长度时,系统会自动生成一个新的数据文件。如果省略该参数,则数据文件可以无限制增长,直至磁盘空间满为止。也可以设置UNLIMITED关键字,使文件无限制增长。 FILEGROWTH: 定义数据文件的增量。每当数据库中增加新的数据时,数据文件的大小将随之发生变化,当长度不够时文件可以按FILEGROWTH指定的增量增加文件的空间。该值可以用KB、MB、GB、TB为单位(不指定单位,则默认MB),或以百分比(%)增长。,57,例4-29 创建

37、一个数据库,观察语句中参数的用法。,要求建立的数据库名为DBTest,主数据文件大小:10MB,最大:50MB,自动增长率:2MB 建立日志文件大小:5MB,最大:20MB,自动增长率:10% 语句如下: CREATE DATABASE DBTest ONPRIMARY(NAME = DBTest_data1, FILENAME = D:lzw MyDB_data1.mdf , SIZE = 10MB, MAXSIZE =50, FILEGROWTH = 2MB) LOG ON (NAME= DBTest_Log, FILENAME = D:lzwDBTest_Log.Ldf , SIZE =

38、 5MB, MAXSIZE =20MB, FILEGROWTH = 10%),58,在查询分析器中运行上述语句,执行结果显示如下: CREATE DATABASE 进程正在磁盘 DBTest_data1 上分配 10.00 MB 的空间。 CREATE DATABASE 进程正在磁盘 DBTest_Log 上分配 5.00 MB 的空间。,59,2删除数据库语句,格式:DROP DATABASE 数据库名1,数据库名2 例4-30 删除上例建立的数据库DBTest。 删除语句如下: Drop DataBase DBTest,60,4.4.2 创建与删除数据表语句,1创建数据表语句 语句的格式:

39、 CREATE TABLE 表名称 (列名1 数据类型,列名2 数据类型,列名n 数据类型 ) 语句的功能:创建表结构。,61,例4-31 用语句在例4-28 创建的数据库MyDB1中创建学生信息表。假设要创建的表结构如表4-3,将学号字段设为主键。,表4-3 学生信息表结构,62,创建表的语句如下:,CREATE TABLE 学生信息表 (学号 int ,姓名 varchar(10),性别 char(2),生日 datetime,专业 varchar(20) ) 在企业管理器中打开查询分析器,选择MyDB1数据库,输入上述语句,执行结果显示: 命令已成功完成。,63,在CREATE TABL

40、E语句中,可以使用以下参数进一步设置表的属性,PRIMARY KEY: 用来定义表的主键。 例4-32 将上例的学号字段设为主键,SQL语句如下: CREATE TABLE 学生信息表 (学号 int PRIMARY KEY,姓名 varchar(10), 性别 char(2),生日 datetime,专业 varchar(20) ),64,NULL 或 NOT NULL 用于定义列的值是否允许空。若被设置为NOT NULL,表示该列不允许空,则往表中录入数据时,该列必须输入值。 例4-33 将上例的姓名字段设为NOT NULL,SQL语句如下: CREATE TABLE 学生信息表 (学号

41、int PRIMARY KEY,姓名 varchar(10) NOT NULL,性别 char(2),生日 datetime,专业 varchar(20) ),65,2删除数据表语句,删除数据表的语句格式:DROP TABLE 表名称 例如要删除MyDB1数据库中的学生信息表执行SQL语句如下:DROP TABLE 学生信息表 在企业管理器中选择MyDB1数据库,打开查询分析器,输入上述语句,执行结果显示: 命令已成功完成。 表示已经在MyDB1数据库中删除了学生信息表。,66,小 结,TransactSQL语句的数据查询功能,其中包括:Select语句完整格式、单表查询、多表连接查询、使用聚

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

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

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报