3、数据表的管理

上传人:枫** 文档编号:567469430 上传时间:2024-07-20 格式:PPT 页数:36 大小:404.50KB
返回 下载 相关 举报
3、数据表的管理_第1页
第1页 / 共36页
3、数据表的管理_第2页
第2页 / 共36页
3、数据表的管理_第3页
第3页 / 共36页
3、数据表的管理_第4页
第4页 / 共36页
3、数据表的管理_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《3、数据表的管理》由会员分享,可在线阅读,更多相关《3、数据表的管理(36页珍藏版)》请在金锄头文库上搜索。

1、第第3章章 数据表的管理数据表的管理3.1表的创建及修改表的创建及修改 3.3 表中数据的检索表中数据的检索3.2表中数据的修改表中数据的修改主要内容主要内容 了解SQL Server 2005的数据类型掌握表的创建和表结构的修改方法掌握表中数据的插入、删除和修改操作掌握表中数据的检索方法3.1表的创建及修改表的创建及修改 3.1.1 数据类型数据类型 数据类型是数据库的重要特性之一,SQL Server提供了多种系统数据类型,也可以由用户自定义数据类型。1.逻辑类型逻辑类型2.整数类型整数类型3.浮点类型浮点类型4.字符类型字符类型5.二进制类型二进制类型6.时间数据类型时间数据类型7.货币

2、数据类型货币数据类型3.1.2 创建表创建表在SQL Server 2005中提供两种创建表的方式:一种是在SQL Server Management Studio中创建表,另一种方式是通过执行T-SQL语句创建表。1在在SQL Server Management Studio中创建表中创建表2用用T-SQL语句创建表语句创建表例 3-1创建一个教师表CREAT TABLE 教师表(教师编号 INT IDENTITY(1,1) NOT NULL, /*设置标识规范*/教师姓名 CHAR(8) NOT NULL,职称 CHAR(6) DEFAULT 讲师, /*设置默认值约束*/专业方向 CHA

3、R(20),系 CHAR(10),联系方式 CHAR(30)GO3.1.3 修改表结构修改表结构1在在SQL Server Management Studio中修改表中修改表2用用T-SQL语句修改表语句修改表:ALTER TABLE例 3-2 要修改教师表的教师编号为6位字符,删除职称列:ALTER TABLE 教师表ALTER COLUMN 教师编号 char(6)GOALTER TABLE 教师表DROP COLUMN 职称GO 3.1.4 删除表删除表 将表从数据库中删除,不仅删除了表的结构,还包括将表从数据库中删除,不仅删除了表的结构,还包括表中的所有对象,该表的结构定义、数据、全文

4、索引、约表中的所有对象,该表的结构定义、数据、全文索引、约束和索引都从数据库中永久删除。束和索引都从数据库中永久删除。 如果要删除通过如果要删除通过 FOREIGN KEY 和和 UNIQUE 或或 PRIMARY KEY 约束相关联的表,则必须先删除具有约束相关联的表,则必须先删除具有 FOREIGN KEY 约束的表。如果要删除约束的表。如果要删除 FOREIGN KEY 约约束中引用的表但不能删除整个外键表,则必须删除束中引用的表但不能删除整个外键表,则必须删除 FOREIGN KEY 约束。约束。 3.1.4 删除表删除表1在在SQL Server Management Studio中

5、删除表中删除表2用用T-SQL语句删除表语句删除表删除表的T-SQL语句是:DROP TABLE table_name例 3-3 删除数据库“教务管理”中的“成绩”表DROP TABLE 成绩3.1.5 临时表临时表临时表存储在系统数据库 tempdb 中,当不再使用时会自动删除。临时表有两种类型:本地的和全局的。本地临时表的名称以单个数字符号 “#”打头,它们仅对当前的用户连接是可见的,当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号“#”打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。3.2表中数据的修改

6、表中数据的修改3.2.1 表中数据的插入表中数据的插入INSERT 语句可向表中添加一个或多个新行。其语法格式语句可向表中添加一个或多个新行。其语法格式如下:如下:INSERT INTO table_or_view (column_list) VALUES(data_values,n)使用使用INSERTSELECT语句还可以将一个表中的数据插入语句还可以将一个表中的数据插入到另一个表中,例如:到另一个表中,例如:INSERT 课程课程 SELECT * FROM 基础课程表基础课程表3.2.2 表中数据的删除表中数据的删除在对象资源管理器中通过菜单命令删除表;在对象资源管理器中通过菜单命令删

7、除表;使用删除语句使用删除语句DELETE也可实现对记录的删除。也可实现对记录的删除。语法格式:语法格式:DELETE table_or_view FROM table_sources WHERE search_condition3.2.3 表中数据的字段值的修改表中数据的字段值的修改UPDATE 语句可以更改表或视图中单行、行组或所有语句可以更改表或视图中单行、行组或所有行的数据值。其语法格式如下:行的数据值。其语法格式如下:UPDATE table_name SET column_name=expression|DEFAULT|NULL ,n FROM tablelist WHERE co

8、ndition例 3-5 设置课程号小于“199”的课学分为4分UPDATE 课程 SET 学分=4 WHERE 课程号199 3.2.4 数据关系图的使用数据关系图的使用数据库关系图设计器数据库关系图设计器3.3.1 SELECT语句概述语句概述数据的查询是通过数据的查询是通过SELECT语句完成的。的主要子句可语句完成的。的主要子句可归纳如下:归纳如下:SELECT select_listINTO new_table_name FROM table_list WHERE search_conditions GROUP BY group_by_list HAVING search_condi

9、tions ORDER BY order_list ASC | DESC 3.3 表中数据的检索表中数据的检索3.3.2 列的检索列的检索选择列是限定返回某些列组成结果集。选择列是限定返回某些列组成结果集。1选择所有列选择所有列选择所有的列,既可以在查询中逐一地列示出所有的列名,也可以使用符号“*”。例 3-6 查询本校教师信息SELECT *FROM 本校教师2选择指定的列选择指定的列若要选择表中的特定列,应在选择列表中明确地列出每一列,在列与列之间用逗号隔开。例:SELECT 教师编号,教师姓名,系,专业方向,职称FROM 本校教师行的检索可以将通过限定条件返回结果的行组成结果集。1使用使

10、用DISTINCT消除重复行消除重复行使用DISTINCT消除重复行的语法格式如下:DISTINCT column_name,column_nameDISTINCT关键字对其后面所指定的列消除重复行。一个SELECT语句中只能有一个DISTINCT,而且必须放在所有的列名之前。3.3.3 行的检索行的检索图 3.20 结果集中的重复行图 3.21 消除重复行的结果集2使用使用 TOP 子句限制结果集中返回的行数子句限制结果集中返回的行数TOP 子句指定返回的行数,语法格式为:TOP ( expression ) PERCENT WITH TIES 其中,expression 是指定返回行数的数

11、值表达式,如果指定了 PERCENT,则是指返回的结果集行的百分比(由 expression 指定)。3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件在SELECT语句中使用WHERE子句指定查询的条件,使系统将符合条件的行作为结果。WHERE子句的语法格式:WHERE AND AND |OR 1)比较搜索条件:在WHERE子句中对表达式进行比较,可使用比较运算符和逻辑运算符。3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHERE AND AND |OR 2)范围搜索条件:范围搜索返回

12、介于两个指定值之间的所有值。在SELECT语句中用BETWEEN 关键字指定要搜索的包括范围。例 3-13 查询成绩在60分到70分之间的学号、课程和成绩:use 教务管理SELECT 学号,课程号,成绩FROM 成绩WHERE 成绩 BETWEEN 60 AND 703.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHERE AND AND |OR 3)列表搜索条件:在WHERE子句中使用关键字IN或OR运算符指定可选的取值。例 3-14 查询成绩表中“高等数学”和“大学语文”课程的成绩(课程号分别为101和102)。use

13、教务管理SELECT 学号,课程号,成绩FROM 成绩WHERE 课程号=101 OR 课程号=102或use 教务管理SELECT 学号,课程号,成绩FROM 成绩WHERE 课程号 IN (101, 102)3.3.3 行的检索行的检索3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHERE AND AND |OR 4)搜索条件中的模式匹配:使用LIKE关键字来限定模式匹配查询。LIKE子句中可使用的通配符3.3.3 行的检索行的检索通配符含义%包含零个或多个字符的任意字符串。_任何单个字符。 指定范围(例如 a-f)或集合(例如 abcdef)内的

14、任何单个字符。不在指定范围(例如 a - f)或集合(例如 abcdef)内的任何单个字符3使用使用WHERE子句限定返回行的条件子句限定返回行的条件WHERE子句的语法格式:WHERE AND AND |OR 5)NULL值的处理:空值表示值未知。空值不同于空白或零值。没有两个相等的空值。若要在查询中测试空值,可在 WHERE 子句中使用 IS NULL 或 IS NOT NULL。例 3-17 查询成绩表中无成绩的学号和课程。USE 教务管理SELECT 学号,课程号FROM 成绩WHERE 成绩 IS NULLGO3.3.3 行的检索行的检索3.3.4 数据算术运算数据算术运算在对表进行

15、查询时,有时需要对所查询的某些列使用表达式进行计算,SELECT语句支持表达式的使用。通过在带有算术运算符、函数、转换或嵌套查询的选择列表中使用数值列或数值常量,可以对数据进行计算和运算。算术运算符允许对数值数据进行加、减、乘、除运算。查询语句中支持的算术运算符包括:+,-,*,/,%(模运算)。例:以计算结果作为派生列输出3.3.5 数据转换数据转换有时在查询中需要将结果以另外一种形式显示出来,例如成绩的显示,有时需要分数有时需要等级,如“优秀”、“及格”等。可以使用CASE子句指定数据的转换。例 3-19 查询学生成绩,以“优秀”、“良好”、“合格”和“不及格”的等级显示结果。USE 教务

16、管理SELECT 学号,课程号,成绩,等级=CASE WHEN 成绩=85 THEN 优秀 WHEN 成绩=70 AND 成绩=60 AND 成绩70 THEN 合格 WHEN 成绩60 THEN 不及格ENDFROM 成绩GO3.3.6 函数的应用函数的应用SELECT查询也可以放在用户自定义的函数中,通过调用函数执行数据库查询。例 3-20 定义一个函数来计算全体学生某门课程的平均分数。通过调用这个函数来查询“101”、“201”和“301”号的课程的平均分。CREATE FUNCTION averagescore(course char(3)RETURNS INTASBEGINDECLA

17、RE avg_score INT SELECT avg_score= (SELECT AVG(成绩) FROM 成绩 WHERE 课程号=course) RETURN avg_scoreENDGO例:调用函数:USE 教务管理SELECT dbo.averagescore(101)3.3.7 数据汇总数据汇总在对表数据进行查询时,经常需要对结果进行汇总计算。可以使用聚集函数对数据进行计算。例 3-20 统计选修“301”号课程的总分,平均分和最高分。USE 教务管理SELECT SUM(成绩) AS 总成绩,AVG(成绩) AS 平均成绩,MAX(成绩) AS 最高成绩FROM 成绩WHERE

18、 课程号=301GO函数名说明AVG求平均值COUNT(xolumn_name)统计列中数据项数COUNT(*)统计行数MAX求最大值MIN求最小值SUM求和STDEV求标准偏差VAR求方差常用聚集函数3.3.7 数据汇总数据汇总除使用聚集函数进行汇总外,还可以使用COMPUTE关键字对结果进行汇总计算。COMPUTE可以生成合计作为附加的汇总列,出现在结果集的最后。例 3-21 查询家住江苏省的学生,输出学号、姓名和家庭住址,并统计学生人数。USE 教务管理SELECT 学号,姓名,家庭住址FROM 学生WHERE 家庭住址 LIKE 江苏%COMPUTE COUNT(学号)GO3.3.8

19、连接查询连接查询在实际查询中,有时所需要的信息来自于不同的表,需要在查询中将这些表进行连接方能得到完整的信息。连接条件可通过以下方式定义两个表在查询中的关联方式: 1. 指定每个表中要用于联接的列。典型的联接条件在一个表中指定一个外键,而在另一个表中指定与其关联的键。2. 指定用于比较各列的值的逻辑运算符(例如 = 或 )。3.3.8 连接查询连接查询1内部连接内部连接内部联接是使用比较运算符比较要联接列中的值的联接。使用FROMWHERE子句能够将表进行连接,语法格式为:SELECT column_name ,coluumn_name, /* /*指定输出的列指定输出的列* */ /FROM

20、 table_name ,table_name, /* /*指定连接的表指定连接的表* */ /WHERE condition /* /*指定连接条件或选择条件指定连接条件或选择条件* */ /例 3-22 查询学生姓名、所选课程和各科成绩。表及表结构如下:学生(学号,姓名,性别,身份证号,出生年月,联系电话,民族,家庭住址,邮编)课程(课程号,课程名,学时,学分)成绩(学号,课程号,成绩)3.3.8 连接查询连接查询2外部连接外部连接外部连接会返回 FROM 子句中提到的至少一个表或视图中的所有行,只要这些行符合任何 WHERE 或 HAVING 搜索条件。Microsoft SQL Ser

21、ver 2005 对 FROM 子句中指定的外部连接使用下列关键字: LEFT OUTER JOIN 或 LEFT JOINRIGHT OUTER JOIN 或 RIGHT JOINFULL OUTER JOIN 或 FULL JOIN其中LEFT表示左外连接,RIGHT表示右外连接,FULL表示完全外连接。3.3.8 连接查询连接查询2外部连接外部连接例:左外连接、右外连接、完全外连接。例:左外连接、右外连接、完全外连接。 左外连接查询右外连接查询完全外连接3.3.8 连接查询连接查询3交叉连接交叉连接在FROM子句中关键字CROSS表示交叉连接,又称为自然连接,即生成一个笛卡尔积。没有 W

22、HERE 子句的交叉连接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。交叉连接查询3.3.9 联合查询联合查询UNION操作符将两个或两个以上的查询结果全并为一个结果集。UNION语句的语法格式为: | ()UNION ALL | ()UNION ALL | () n其中,指明了查询的详细说明或查询表达式。UNION为合并操作符。ALL表示合并所有数据行到结果集中,包括值重复的数据行。如果不指定此选项,则重复的数据行只显示一行。3.3.9 联合查询联合查询例 3-26查询所有的教师姓名,包括本校教师和外聘教师。表及表结构为:本校教师(教师编号,教师姓

23、名,职称,专业方向,系)外聘教师(教师编号,教师姓名,职称,专业方向,工作单位,联系方式)查询语句为:3.3.10 嵌套查询嵌套查询也称“子查询”。外部的SELECT语句称为外围查询(也称为父查询),内部的SELECT语句称为子查询。子查询的结果将作为外围查询的参数使用。1无关子查询无关子查询无关子查询,子查询在外围查询之前进行,然后返回结果集供外围查询使用。对应于SQL语句来说,如果被嵌套的查询中不包含对于外围查询的引用,则成为无关子查询。最常用的无关子查询方式是IN或NOT IN子句,其语法格式如下:SELECT select_listFROM table_nameWHERE condit

24、ion NOT IN(SELECT select_listFROM table_nameWHERE condition)3.3.10 嵌套查询2相关子查询相关子查询相关子查询是指在执行子查询时需要使用的到外围查询的数据。这时,外围查询首先选择数据提供给子查询,然后子查询再对数据进行比较,执行结束后再将它的查询结果返回给外围查询中。相关子查询使用的关键字通常包括:EXISTS,AND,SOME,ANY、ALL等。EXISTS一般直接写在WHERE关键字后面,不写列名、常量或表达式,此时子查询的SELECT列表一般由“*”组成。关键字EXISTS在相关子查询中使用,使用时,对外表中的每一行子查询都

25、要运行一遍,该行的值也要在子查询的WHERE子句中被使用,这样,通过EXISTS子句就能将外层表中的各行数据依次与子查询处理的内层表中的数据进行存在性比较,得到所需要的结果。3.3.11 排序要求记录按某种顺序输出,因此需要对表中的行进行排序。使用ORDER BY子句对查询结果进行排序,其语法格式为:SELECT select_listFROM table_nameWHERE conditionORDER BY column_name|alias|position ASC|DESC排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果未指定是升序还是降序,就默认为 ASC。例 3-32 查询选修了“301”号课程的学生,并按分数从高到低的顺序输出学生的学号和成绩。

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

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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