第6章SQL语言
SQL Server数据库应用开发技术 第六章
6.2 使用约束
6.2.1 空约束(NULL)、非空约束(NOT NULL)
1. 用SQL Server Management Studio实现 【例6.1】设置学生表中字段学号、姓名、性别、入学 时间不允许为空。 1)打开SQL Server Management Studio,在对象资源管理 器中展开教务管理系统,展开“表”结点。 2)选择“学生表”,单击右键,选择“修改”进入表设计 器进行表结构设计,如图6.1所示,分别将学号、姓名 、性别、入学时间字段后的允许空复选框去掉对勾。 3)修改完毕后单击工具栏上的“保存”图标或选择菜单“ 文件”下的“保存”项,关闭窗口即可。
第6章 数据完整性实施
6.1 数据完整性实施方法 6.2 使用约束
6.3 使用默认
6.4 使用规则
6.5 使用标识列
小结
6.1 数据完整性实施方法
有两种方式可以实现数据完整性,即声明数据完 整性和过程数据完整性。 1.声明数据完整性 使用声明数据完整性就是通过在对象定义中来实 现,即定义数据必须满足的条件作为对象定义的一部 分。它包括使用各种约束、默认和规则。 实现数据完整性的首选方法是使用声明完整性。 2.过程完整性 过程数据完整性是通过在脚本语言中定义来实现 的。当执行这些脚本时,就可以强制完整性的实现。 过程数据完整性的方式包括使用触发器和存储过程。 也可以在客户机或服务器上使用其他的编程语言和工 具实现。
【例6.7】创建学生表,对字段身份证号设置唯一约束。
返回目录
6.2 使用约束
6.2.3 唯一约束(UNIQUE)
由于一个表只能定义一个主键,而实际应用中表中 不止一列希望值是唯一的,例如身份证号一般不会做主 键,但它的值也应确保是唯一的,这时就可使用唯一约 束来确保唯一性了。与主键不同的是一个表可以定义多 个 UNIQUE 约束,且定义 UNIQUE 约束列允许空值。不 过由于唯一性,空值也只能出现一次。
SQL语言
例11.15:输出score表中的最高分
11.3.4 使用聚合函数
11.3 SQL数据查询功能
SQL命令为: SELECT AVG(degree) as '课程平 均分' FROM score WHERE cno='3-105'
SQL命令为: SELECT cno,AVG(degree) AS " 平均分" FROM score WHERE cno LIKE '3*' GROUP BY cno HAVING COUNT(*)>=3
11.3 SQL数据查询功能
SQL-SELECT关系运算符
运算符 = <> > >= < <= BETWEEN„AND IN LIKE 含义 等于 不等于 大于 大于或等于 小于 小于或等于 在两组之间 在一组值的范围中 与一个字符图式匹配①
11.3.2 选择查询
11.3 SQL数据查询功能
SQL命令为: SELECT * FROM score WHERE degree BETWEEN 60 and 80
11.3.4 使用聚合函数
11.3 SQL数据查询功能
SQL命令为: SELECT COUNT(*) AS 95031班人数 FROM student WHERE class='95031'
SQL命令为: SELECT MAX(degree) AS 最高分 FROM score
例11.14:输出95031班的学生人数
11.2 SQL数据定义功能
例11.1:建立一个名称为student2的学生表
11.2 SQL数据定义功能
新建的student2表的结构(例11.1)
数据库原理及应用SQL-Server 第6章-SELECT数据查询
6/69
简单查询(2)
❖ 查询全部列
将表中的所有属性列都选出来,可以有两种方法。一种方法就是在 SELECT关键字后面列出所有列名;另一种方法是如果列的显示顺序与 其在基表中的顺序相同,也可以简单地将<目标列表达式>指定为“*”。
例 查询全体学生的详细记录。 USE JXGL GO SELECT * FROM S GO
2021/9/19
10/69
带有WHERE子句的查询 (2)
确定范围
语句BETWEEN…AND…和NOT BETWEEN…AND…可以用来查找 属性值在(或不在)指定范围内的元组,其中BETWEEN后是范围的下 限(即低值),AND后是范围的上限(即高值)。
例 查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、 系别和年龄。
基本语句SELECT—FROM—WHERE的含义是:根据WHERE子句 的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的 元组,再按SELECT子句中的目标列表达式,选出元组中的属性值形 成结果表。
2021/9/19
5/69
简单查询(1)
❖ 查询指定列
在很多情况下,用户只对表中的一部分属性列感兴趣,这时可以通 过在SELECT子句的<目标列表达式>中指定要查询的属性列。
USE JXGL GO SELECT SNAME,SEX FROM S WHERE SDEPT IN('CS','MA','IS') GO
2021/9/19
12/69
带有WHERE子句的查询 (4)
字符匹配
运算符LIKE可以用来进行字符串的匹配。其一般语法格式如下: [NOT] LIKE ’<匹配串>’[ESCAPE ’<换码字符>’]
第六章SQL——结构化查询语言
2. SELECT查询语句完整格式是: SELECT [ALL|DISTINCT]<字段列表> [INTO 新表名] FROM <表名列表> [WHERE <查询条件>] [GROUP BY <字段名>[HAVING <条件表达式>]] [ORDER BY <字段名>[ASC|DESC]]
2013-7-30 14:02 21
(2)区间控制运算符——BETWEEN...AND 判断所指定的值是否在给定的区间,返回逻辑值。格式为: 表达式 [NOT] BETWEEN 表达式1 AND 表达式2 “表达式1”是区间的下限,“表达式2”是区间的上限。 若省略NOT,则表示表达式的值在指定的区间内即返回逻辑真。 若选择NOT,则表示表达式的值不在指定的区间内即返回逻辑真。 【例题6.10】查询出1990年1月1日至1991年12月31日出生的学 生的学号、姓名、出生日期。 能用别的方 SELECT student_id, student_name, born_date 法实现吗? FROM student WHERE born_date BETWEEN '1990-1-1' AND '1991-12-31'
IS [NOT] NULL
LIKE [NOT ] IN EXISTS
2013-7-30
检测字段值为空或不为空
字符匹配操作符 检查一个字段值属于或不属于一个集合 检查某一字段是否存在值
表6-3
特殊运算符
14:02
19
(1)字符匹配操作符——LIKE LIKE关键字的作用是用于指出一个字符串是否与指定的字 符串相匹配,其运算对象可以是char、text、datetime等数据 类型,返回逻辑值。LIKE表达式的格式为: 字符表达式1 [NOT] LIKE 字符表达式2
visual foxpro第六章sql知识点
••ຫໍສະໝຸດ 第六章 关系数据库标准语言 sql
• 1.sql的语言动词:数据查询select 数据定义create drop alter 数据操纵insert update delete 数 据控制grant revoke 2.简单查询:select all、distinct 选项 as 显示列名from 数据库名 where条件1and、or条件2 【all输出所有记录,包括重复记录,distinct可去掉重复记录。 *可表示全部字段。】 3.几个特殊运算符 a.确定范围运算符(not)between下界表达式and上界表达式.。b.字符 匹配运算符:字段名 like 字符表达式(字符类型必须是字符型).通配符:%表示任意长度的字符 串.-表示任意一个字符.注意:在vfp中,一个汉字用一个字符-表示.c.空值运算符is null is not null 4.连接查询:select查询列from表一join表2on连接条件and查询条件. 5.嵌套连接:selectfrom-where(select-from-where) 6.排序:order by asc(升序)desc(降序)默认值为升序, 位于其他字句之后. 7.合并查询:union. Select命令1.【union【all】select命令2】 8.计算与分 组查询:avg按列计算平均值 sum按列计算值总和 count(*)按列统计个数 min求一列最 小值 max求一列最大值 9.round(m,n) N为保留小数个数 10.分组group by having count (*) 11.查询结果处理 a.放到永 久表into dbf表名 table表名 b. 放到临时文件:into cursor文件名 c.放到文本文件:to file d.放到数组:into array 12.数据定义功能a.建立表结构creata table b.create database建 立数据库 b.修改表结构:alter table +add字段+alter字段+drop字段+rename修改字段名 c. 增加字段时定义数据完整性alter table表名 add字段 check 逻辑表达式 d.修改字段时定义数据完 整性 alter table表名 alter字段set check逻辑表达式 11.删除表:drop table表名 13.数据操纵 功能 a.插入记录insert into 表名 values表达式 b.修改记录update 表名 set字段名 where逻 辑表达式 c.删除记录:delete from表名 where条件(没有从物理删除)
Transact-SQL语法
6.3
•
Transact-SQL运算符与表达式 运算符与表达式
Transact-SQL运算符包括:算术运算 运算符包括: 运算符包括 位运算符、比较运算符、逻辑运算符。 符、位运算符、比较运算符、逻辑运算符。 • Transact-SQL表达式可以包含列名、 表达式可以包含列名、 表达式可以包含列名 文字、运算符或函数的任何组合。 文字、运算符或函数的任何组合。 • 本节将主要介绍每种运算符及其功能。 本节将主要介绍每种运算符及其功能。 • 下面以表格的形式对各种运算符进行 说明。 说明。
6.1 •
•
Transact-SQL常量 常量
关于SQL SQL标识符 6.1.1 关于SQL标识符
在SQL Server中,服务器、数据库和 中 服务器、 数据库对象(如表、视图、 索引、 数据库对象(如表、视图、列、索引、触 发器、过程、约束、规则等)都有标识符, 发器、过程、约束、规则等)都有标识符, 数据库对象的名称被看成是该对象的标识 符。 • 大多数对象要求带有标识符, 大多数对象要求带有标识符,但有些 对象(如约束)中标识符是可选项。 对象(如约束)中标识符是可选项。
6.赋值运算符
• 赋值运算符形式上和等于运算符“ 赋值运算符形式上和等于运算符“=” 是完全一致的,但用于变量时表示赋值。 是完全一致的,但用于变量时表示赋值。
数据库教学资料第6章t-sql语言基础PPT课件
T-SQL是结构化查询语言(SQL)的一个扩展,专门针对Microsoft SQL Server数据库系统。它提供了许多额外 的功能和命令,使得对数据库的操作更加高效和强大。T-SQL具有丰富的语言特性,包括条件语句、循环语句、 存储过程、触发器等,可以用来执行复杂的查询、数据处理和数据库管理任务。
T-SQL语言还支持存储过程、触发 器、视图等高级功能,可以大大简 化复杂的业务逻辑和数据处理流程, 降低系统开发和维护成本。
T-SQL的未来发展前景
1
随着云计算、大数据等技术的快速发展,T-SQL 语言将继续发挥重要作用,支持更多的数据处理 场景和应用领域。
2
未来,T-SQL语言将不断演进和完善,支持更多 的数据类型、函数和操作符,提高数据处理效率 和安全性。
3
变量和常量的声明与赋值
使用DECLARE语句声明变量,使用SET或 SELECT语句为变量赋值。
流程控制语句
IF语句
用于根据条件执行不同的代码块。
WHILE语句
用于重复执行一段代码直到满足特定条件。
CASE语句
用于根据条件执行不同的代码块,类似于IF-ELSE结构。
GOTO语句
用于将程序控制转移到指定的标签位置。
使用存储过程和触发器
存储过程
使用CREATE PROCEDURE语句创建一个 存储过程,该过程可以包含一系列的TSQL语句,用于执行特定的数据库操作。
VS
触发器
使用CREATE TRIGGER语句创建一个触 发器,该触发器将在指定的事件(如 INSERT、UPDATE或DELETE操作)发生 时自动执行相应的操作。
同时,T-SQL语言将与新兴技术如人工智能、机 器学习等相结合,拓展其在数据分析、预测和智 能决策等领域的应用价值。
《数据库系统概论》各章复习试题及答案---副本
数据库系统概论复习资料:第一章:一、选择题:1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。
在这几个阶段中,数据独立性最高的是阶段。
A.数据库系统 B.文件系统 C.人工管理 D.数据项管理【答案:】A2.数据库的概念模型独立于。
A.具体的机器和DBMS B.E-R图 C.信息世界 D.现实世界【答案:】A3.数据库的基本特点是。
A.(1)数据可以共享(或数据结构化) (2)数据独立性 (3)数据冗余大,易移植 (4)统一管理和控制B.(1)数据可以共享(或数据结构化) (2)数据独立性 (3)数据冗余小,易扩充 (4)统一管理和控制C.(1)数据可以共享(或数据结构化) (2)数据互换性 (3)数据冗余小,易扩充 (4)统一管理和控制D.(1)数据非结构化 (2)数据独立性 (3)数据冗余小,易扩充 (4)统一管理和控制【答案:】B4. 是存储在计算机内有结构的数据的集合。
A.数据库系统B.数据库 C.数据库管理系统 D.数据结构【答案:】B5.数据库中存储的是。
A.数据 B.数据模型C.数据以及数据之间的联系 D.信息【答案:】C6. 数据库中,数据的物理独立性是指。
A.数据库与数据库管理系统的相互独立 B.用户程序与DBMS的相互独立C.用户的应用程序与存储在磁盘上数据库中的数据是相互独立的 D.应用程序与数据库中数据的逻辑结构相互独立【答案:】C7. 数据库的特点之一是数据的共享,严格地讲,这里的数据共享是指。
A.同一个应用中的多个程序共享一个数据集合 B.多个用户、同一种语言共享数据C.多个用户共享一个数据文件 D.多种应用、多种语言、多个用户相互覆盖地使用数据集合【答案:】D8.数据库系统的核心是。
A.数据库 B.数据库管理系统 C.数据模型 D.软件工具【答案:】B9. 下述关于数据库系统的正确叙述是。
A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型一致 D.数据库系统比文件系统能管理更多的数据【答案:】A10. 数将数据库的结构划分成多个层次,是为了提高数据库的①和②。
sql server 2008案例教程及实训 第6章 数据查询
6.2.5 INTO子句
练习:复制一张表BookInfo,并将新表保 存为BookInfo1。
SELECT * INTO BookInfo1 FROM BookInfo
6.2.6 无FORM子句的SELECT语句
过滤类型
比较运算符
逻辑运算符 字符串比较
值的范围 列的范围
未知值
搜索条件 =、>、<、>=、<=、 <>、!>、!<、!= NOT、AND、OR LIKE、NOT LIKE BETWEEN、NOT BETWEEN IN、NOT IN IS NULL、IS NOT NULL
1. like匹配符:
_ 是单个字符匹配符,只能匹配一个字符 % 是字符匹配符,可匹配任意长度的字符串。 [] 匹配符可以指定匹配的范围,
【例6.10】显示图书信息中的前10%行的信息
select top 10 percent * from BookInfo
6. 消除重复记录(Distinct)
【例6.11】查询借阅信息表中的所有借书 证号,不显示重复行。
select DISTINCT 借书证编号 from BorrowList
6.在结果中显示常数
不带FROM子句的SELECT语句是对系统 变量或常量的操作,不属于从数据库的表格中进 行数据检索的范畴,此时SELECT只做显示之用, 不做检索之用。
【例6.21】不带FROM子句的SELECT语 句举例。
SELECT 1+2 SELECT @@VERSION
第6章程序设计语言习题与答案
第六章习题(1)复习题1、简述自然语言与形式语言的概念以及区别、汇编语言与机器语言的概念及区别。
自然语言是某一社会发展中形成的一种民族语言,而形式语言是进行形式化工作的元语言,它是以数学和数理逻辑为基础的科学语言。
用机器指令形式编写的程序称为机器语言,用带符号或助记符的指令和地址代替二进制代码成为语言进化的目标。
这些使用助记符语言的语言后来就被称之为汇编语言。
(P135P136)2、什么是高级程序设计语言?它有什么特点?高级语言是汇编语言的一种抽象。
高级语言的设计目标就是使程序员摆脱汇编语言细节的繁琐。
高级语言同汇编语言都有一个共性,那就是:它们必须被转化为机器语言,这个转化的过程称为解释或编译。
(1)高级语言接近算法语言,易学、易掌握;(2)高级语言设计出来的程序可读性好,可维护性强,可靠性高;(3)高级语言与具体的计算机硬件关系不大,其程序可移植性好,重用率高;(4)高级语言自动化程度高,开发周期短,利于提高程序的质量。
(P138)3、列举程序设计语言的几种范型。
程序语言大致分为命令式程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。
(P138-140)4、简述语言虚拟机。
提示:语言虚拟机是某种语言的解释器。
语言虚拟机是建立在硬件和操作系统之上,针对不同的硬件和操作系统有不同的虚拟机,通过语言虚拟机屏蔽掉硬件的差异。
这样使得硬件系统能够支持这种语言编写的程序的有效执行。
目前最流行的语言虚拟机是Java虚拟机。
(P147)5、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?提示:主要有编译、解释等方式,也有两种方式的混合使用的形式。
编译是使用编译器将高级语言编写的源程序转换成计算机可以执行的机器语言可执行程序,也可以理解为用编译器产生可执行程序的动作。
编译方式是一次编译,然后执行程序可以反复多次执行。
解释是另一种将高级语言转换为可执行程序的方式。
第6章 关系数据库标准语言SQL
出ON的顺序。 left join 左连接 / right join 右连接
例 从“学生档案表”、“学生成绩表”、“课程代码表”中, 查询99212班成绩>=80分各门课程,要求显示学号,姓 名,课程名称,成绩。 Select A.学号,A.姓名,B.课程名称,C.成绩 ; From 学生档案表 A,课程代码表 B,; 学生成绩表 C Where A.学号=C.学号 .And.; B.课程代码=C.课程代码 .And. ; 班级="99212" .And. C.成绩>=80
6-1 SQL概述
1、SQL是结构化查询语言(Structured Query Language的
缩写) 2、特点:
是一种一体化语言 是一种高度非过程化语言 非常简洁 可以以命令方式交互使用(也可以作为程序代码)
3、SQL的功能:
数据查询 数据定义 数据操纵 数据控制(此功能VFP没有)
◆ WHERE<连接条件>子句的作用是将若干个数据表,通过两两 数据表(按公共字段的值相等)的连接,产生一个包含若干个 数据表有关字段的数据信息。<连接条件>是指两数据表用公共 字段进行关联的连接条件。注意:<连接条件>中字段名前必须 冠以数据表别名,两者之间用英文状态下的“.”或“->”隔开。 如果有两个以上数据表打开,则必须用AND将多个<连接条件> 进行连接;还可以加过滤条件对参与操作的记录进行选择。< 连接条件>和<过滤条件>之间必须用AND连接。 ◆ 不论是<过滤条件>,还是<连接条件>中的有关字段也都注明工 作区号或别名,尤其是公共字段。
自考《数据库系统原理》填空题总结
第一章节数据库系统基本概念1.文件系统中的数据独立性是指(设备)独立性。
2.在数据库方式下的信息处理中,(数据)占据了中心位置。
3.DBMS是位于(用户)和(OS)之间的一层数据管理软件。
4.数据模型不仅描述数据本身的特点,还要描述(数据之间的联系)。
5.DBS中,用户的数据和磁盘中的数据之间转换由(DBMS)实现。
6.在层次、网状模型中,用(指针)导航数据;而在关系模型中,用(关键码)导航数据。
7.数据库的三级模式结构是对(数据)的三个抽象级别。
8.DBS中存放三级结构定义的DB称为(数据字典)。
9.DBS的全局结构体现了其(模块功能)结构。
10.DBMS为应用程序运行时开辟的 DB系统缓冲区,主要用于(数据传输)和(模式转换)。
11.层次模型用(树)型结构来表示实体间的联系。
12.在数据的人工管理阶段,程序与数据是(一一对应)的关系。
13.定义数据库的安全性和完整性的工作由(DBA)完成。
14.数据独立性的好处是(数据存储方式的变化不会影响到应用程序的使用)。
15.数据库的三级体系结构使用户能抽象地使用数据,不必关心(数据在计算机中的表示和存储) 。
16.概念设计阶段用到实体、实体集、属性和实体标识符等4个术语;逻辑设计阶段用到字段、记录、文件和关键码等4个术语;第二章节数据库设计和 ER模型1.ER数据模型一般在数据(概念设计)阶段使用。
2.“为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的(物理设计)阶段。
3.数据模型是用来描述数据库的结构和语义的,数据模型有(概念数据模型)和(结构数据模型)两类,ER模型是(概念数据模型)。
4.数据实施阶段包括两项重要的工作,一项是数据(载入),另一项是应用程序的编码和调试。
5.ER图向关系模型转化要解决的问题是如何将实体和实体之间的联系转换成关系模式,如何确定这些关系模式的(属性和键)。
6.数据库的物理设计是对一个给定的(基本数据)模型选取一个最合适应用环境的物理结构的过程。
SQL语句学习教程
目录概述 (2)第一章SQL*PLUS 工具软件的使用 (6)第二章基本查询 (10)第三章条件查询 (14)第四章单行函数 (17)第五章多表查询 (21)第六章组函数 (24)第七章子查询 (26)第八章运行期间指定变量 (30)第九章创建基表 (32)第十章ORACLE数据字典 (37)第十一章操纵数据 (39)第十二章修改基表及其约束 (44)第十三章创建序列 (47)第十四章创建视图 (49)第十五章创建索引 (52)概述20世纪70年代初,E.F.Codd 在计算机学会(Association of Computer Machinery, 简写为ACM)期刊Communications of the ACM(ACM 通讯)发表了题为”A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的论文,该论文提出的关系数据库模型成为今天最为权威的关系型数据库管理模型。
IBM公司首先使用该模型开发出了结构化英语查询语言SEQUEL(Structured English Query Language),作为其关系数据库原型System R的操作语言,实现对关系数据库的信息检索。
SEQUEL后来简写为SQL,即Structured Query Language(结构化查询语言)的缩写。
ORACLE公司于1997年推出了第一个商业应用的SQL软件。
20世纪80年代初,美国国家标准化组织(ANSI)开始着手制订SQL标准,最早的ANSI标准于1986年颁布,它也被称为SQL-86。
标准的出台使SQL作为标准的关系数据库语言的地位得到加强。
SQL标准几经修改和完善,目前SQL 语言方面新的ANSI标准是1992年制定的ANSI X3.135-1992,“Database Language SQL”。
此标准也被国际电工委员会(International Electro technical Commission, 即IEC)所属的国际标准化组织(International Standards Organization, 即ISO)所接受,并将它命名为ISO/IEC9075:1992, “Database Language SQL”。
数据库原理与应用(SQL Server ) 第6章 创建数据库和创建表
数据库原理与应用(SQL Server)
12
6.2.2 修改数据库
在数据库创建后,用户可以根据需要对数据库进行以下修改: ● 增加或删除数据文件,改变数据文件的大小和增长方式。 ●增加或删除日志文件,改变日志文件的大小和增长方式。 ● 增加或删除文件组。 【例6.2】在test数据库(已创建)中增加数据文件testbk.ndf和日志 文件testbk_log.ldf。 (1)启动SQL Server Management Studio,在左边“对象资源管 理器”窗口中展开“数据库”节点,选中数据库“test”,单击鼠标右 键,在弹出的快捷菜单中选择“属性”命令。
server.database.scheme.object
例如,DELL-PC.stsc.dbo.student即为一个完全限定名。
数据库原理与应用(SQL Server)
4
6.1.1 逻辑数据库
(2)部分限定名
使用完全限定名往往很繁琐且没有必要,经常省略其中的某些部
分。在对象全名的4个部分中,前3个部分均可被省略,当省略中间的部
创建多个,也可以没有,辅助数据文件的默认扩展名为.ndf。 (3)日志文件(Transaction Log) 日志文件用于保存恢复数据库所需的事务日志信息。每个数据库
至少有一个日志文件,也可以有多个,日志文件的扩展名为.ldf。
数据库原理与应用(SQL Server)
7
6.1.2 物理数据库
3. 数据库文件组 在数据库中,为了管理和分配数据将多个文件组织在一起,组成 文 件 组 , 对 它 们 进 行 整 体 管 理 , 以 提 高 表 中 数 据 的 查 询 效 率 , SQL Server提供了两类文件组:主文件组和用户定义文件组。 (1)主文件组。 包含主要数据文件和任何没有指派给其它文件组的文件,数据库 的系统表均分配在主文件组中。 (2)用户定义文件组。 包含所有使用 “CREATE DATABASE”或“ALTER DATABASE” 语句并用 “FILEGROUP”关键字指定的文件组。
第六章 SQL 课件
1
LOGO
本章主题
什么是索引 索引的不同类型 索引的大小限制 好索引和坏索引在质量上的差别 如何用图形化方式或用代码方式来构建索引 如何修改索引
索 引
数据库的索引类似图书的目录, 数据库的索引类似图书的目录,图书的目录能帮助读者无需阅读 全书就可快速地查找到所需的信息.在数据库中, 全书就可快速地查找到所需的信息.在数据库中,索引能够使数据库 程序不用浏览整个表,就可以找到表中的数据. 程序不用浏览整个表,就可以找到表中的数据.索引是一个表中所包 含的属性值的列表,它说明了表中该属性值所在行的存储位置. 含的属性值的列表,它说明了表中该属性值所在行的存储位置.用户 可以利用索引快速访问数据库表中的特定信息.例如, 可以利用索引快速访问数据库表中的特定信息.例如,若想根据学生 的学号来查找特定的学生,则按"学号" 的学号来查找特定的学生,则按"学号"列建立索引将大大缩短查询 的时间. 的时间. 本章的主要内容是介绍索引的基本概念,索引的类型和索引选项, 本章的主要内容是介绍索引的基本概念,索引的类型和索引选项, 以及如何创建,管理和删除索引. 以及如何创建,管理和删除索引.
1 2 3 4 5
6
(1) 聚集索引
聚集索引对表数据页中的数据进行排序,然后再重新存储到磁盘上, 聚集索引对表数据页中的数据进行排序,然后再重新存储到磁盘上, 即索引信息与数据信息是混为一体的,它的叶节点中存储的是实际数据. 即索引信息与数据信息是混为一体的,它的叶节点中存储的是实际数据. 由于聚集索引对表中的数据是经过排序的, 由于聚集索引对表中的数据是经过排序的,因此通过聚集索引查找数据 的速度很快.但由于聚集索引是将表的所有数据重新排列, 的速度很快.但由于聚集索引是将表的所有数据重新排列,它所需要的 空间特别大,大概相当于表中数据所占空间的120% 120%. 空间特别大,大概相当于表中数据所占空间的120%.表的数据行只能以 一种排序的方式存储在数据页上,所以一个表只能有一个聚集索引. 一种排序的方式存储在数据页上,所以一个表只能有一个聚集索引.聚 集索引一般创建在表中经常搜索的列或按顺序访问的列上. 集索引一般创建在表中经常搜索的列或按顺序访问的列上.创建聚集索 引时应考虑以下几个因素: 引时应考虑以下几个因素: 每个表只能有一个聚集索引. 每个表只能有一个聚集索引. 数据页中数据的物理顺序和索引页中行的物理顺序是一致的, 数据页中数据的物理顺序和索引页中行的物理顺序是一致的,创 建任何非聚集索引之前要首先创建聚集索引, 建任何非聚集索引之前要首先创建聚集索引,这是因为聚集索引将改变 数据页中数据的物理顺序. 数据页中数据的物理顺序. 索引键值的惟一性使用UNIQUE UNIQUE关键字或由内部的惟一标识符明 索引键值的惟一性使用UNIQUE关键字或由内部的惟一标识符明 确维护. 确维护. 在索引的创建过程中, Server临时使用当前的数据库的磁盘 在索引的创建过程中,SQL Server临时使用当前的数据库的磁盘 空间,所以要保证有足够的空间创建聚集索引. 空间,所以要保证有足够的空间创建聚集索引.
第6章 组函数
6.1 组函数的概念
SQL语言提供以下几个组函数(e为NUMBER类型表达式): (1)AVG(e)——计算一组行中e值的平均值 (2)COUNT(e)——计算一组行中e值为非空值的行数 (3)COUNT(*)——计算表中的行数(包括重复值和空值) (4)MAX(e)——计算一组行中e值的最大值 (5)MIN(e)——计算一组行中e值的最小值 (6)STDDEV(e)——计算一组行中e值的标准差 (7)SUM(e)——计算一组行中e值的总和 (8)VARIANCE(e)——计算一组行中e值的方差
网络数据库程序设计 25
6.3 使用GROUP BY子句
例6.14 SQL> select customer#,order#, 2 sum(quantity*retail) "order Total" 3 from orders natural join orderitems 4 natural join books 5 group by customer#,order# 6 order by customer# desc,order#;
网络数据库程序设计 18
6.3 使用GROUP BY子句
说明: • SELECT:SELECT子句中的每个表达式必须是以下内容之一: (1)一个常量。 (2)一个没有参数的函数(如Sysdate,User)。 (3)组函数,如SUM、AVG、MIN、MAX、COUNT。 (4)与GROUP BY子句中的表达式相匹配的内容。 • GROUP BY:对查询结果进行分组。GROUP BY子句总是和组函 数一起使用的。 • HAVING:利用HAVING关键字为分组统计进一步设置条件,找 出每一类别的组中满足指定条件的数据。
SQL语言基础
【例6-5】将学生表学生所属系(Dept)长度改为 20。 ALTER TABLE Student MODIFY(Dept CHAR (20)); ⑶ 删除某些列 可以对已定义表中的列进行删除。 【例6-6】将学生表Student中班级(Class)列删除。 ALTER TABLE Student drop(Class )); 在没有视图和约束引用该列时,删除才能正常 进行。
【例6-9】为STUDENT表创建学号升序 惟一性索引,为SC表创建学号升序和课 程号降序索引。 CREATE UNIQUE INDEX st_snum on student(snum); CREATE INDEX sc_snum_cnum on sc(snum,cnum desc)
2.删除索引 删除索引的命令格式为:DROP INDEX <索引名 >; 索引建立后,由系统使用和维护,不需要用户干 预。建立索引是为了提高查询数据的效率,但如 果某阶段数据变动频繁,系统维护索引的代价会 增加,可以先删除不必要的索引。 【例6-10】删除STUDENT表ST-SnuM索引。 Drop INDEX st_snum; 删除索引,不仅物理删除相关的索引数据,也从 数据字典中删除该索引的描述。
【例6-11】教务处经常用到学号(SNum)、姓名 (SName)、性别(Sex)、系别(Dept)课程号 (CNum)、课程名(CName)、学分(Credit)、 成绩(Grade)数据,为该用户创建一个视图,便 于对数据的使用。 CREATE VIEW st_cu_sc(学号,姓名,性别,系别,课 程号,课程名,学分,成绩) AS SELECT SNum, Sname,Sex, Dept,Cnum, Cname, Credit, Grade From student,course,sc Where student. SNum=sc.SNum and um=course. Cnum WITH CHECK OPTION;
第6章 关系数据库标准语言SQL
关系数据库标准语言SQL1.1SQL概述1.11 SQL的标准化历程SQL是1974年提出的;IBM公司首先实现了关系数据库管理系统;1987年SQL被作为国际标准。
1.12 SQL的功能特点SQL集数据查询,数据操作,数据定义和数据控制功能于一体。
具有以下特点:综合统一:非关系模型的数据语言一般都分为模式数据定义语言,外模式数据定义语言,与数据存储有关的描述语言以及数据操作语言,分别用于定义模式,外模式,内模式和进行数据的存取和处理。
而SQL则集数据定义语言,数据操作语言,数据控制语言的红能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动。
高度非过程化:非关系数据模型的数据操作语言是面向过程的语言,使用这样的语言进行数据操作,必须制定存取路径。
而SQL进行数据操作,用户只需提出“做什么”,而不用指明“怎么做”,因此用户无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
面向集合的操作方式:非关系模具模型采用的是面向标记的操作方式,操作的对象都是一条记录。
而SQL语言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可是是元组的集合。
灵活的使用方式:SQL既是自含式语言,又是嵌入式语言。
作为自含式语言,他能够独立的用联机交互的使用方式,用户可以在键盘上直接键入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言程序中,供程序员设计程序时使用。
语言简易,易学易用,功能强:SQL功能极强,具有完备的表达能力。
但由于设计巧妙,语言十分简洁,完成数据定义,数据操作,数据控制的核心功能只用了9个动词。
1.13 SQL的基本组成(1)SQL数据库的三级模式结构SQL支持数据库三级模式结构,在SQL中,外模式对应于“视图(View)”和部分基本表,模式对应于基本表“Base Table”,内模式对应于“存储文件”。
一个SQL数据库模式是基本表的集合。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL语言基本数据类型——货币型
Money: 8 个字节,精确到货币单位的千分之十。 Smallmoney: 4 个字节,精确到货币单位的千 分之十。 限制到小数点后 4 位。 可以带有适当的货币符号。例如,100 英镑可表示 为 £100。
6.2 数据定义
数据定义包含的操作: 1、数据表的定义与删除
示例2
例2:添加限制工资表的最低工资小于等于最高工资 的约束。 ALTER TABLE 工作 ADD CONSTRAINT CHK_Job_Salary CHECK ( 最低工资 <= 最高工资 )
ALTER TABLE Course DROP COLUMN Period
数据定义——数据表的定义与删除
3、 删除数据表 DROP TABLE <表名> { [, <表名> ] … }
例:删除SC表的语句为: DROP TABLE SC
数据定义——数据表的定义与删除
完整性约束条件的作用对象 实现数据完整性
2、修改数据表结构
3、数据完整性
数据定义——数据表的定义与删除
1、创建表 Create Table <表名> (<列名1> <数据类型1> [<列级完整性约束1>] [,<列名2>] <数据类型2>[<列级完整性约束 2>][,……] [,<列名n>] <数据类型n>[<列级完整性约束 n>] [<表级完整性约束n>])
SQL语言基本数据类型——字符型
二进制字符串类型
Binary(n):固定长度,n <= 8000。 Varbinary(n):可变长度,n <=8000 。 注:n为二进制数据的字节数 Image:大容量、可变长二进制字符数据,可用于存 储文件。
SQL语言基本数据类型——日期型
Datetime:8字节,年月日时分秒毫秒 (例:‘2001/08/03 10:30:00.000’ ) SmallDateTime:4字节,年月日时分 (例: ‘2001/08/03 10:30:00’ )
完整性约束条件的作用对象
完整性检查是围绕完整性约束条件进行的,因此, 完整性约束条件是完整性控制机制的核心。完整 性约束条件的作用对象可以是表、元组和列。 列级约束 元组约束 关系约束
列级约束
列级约束主要是对列的类型、取值范围、精度等 的约束,具体包括: 对数据类型的约束:包括数据类型、长度、精度 等。 对数据格式的约束:如规定学号的前两位表示学 生的入学年份,第三位表示系的编号,第四位表 示专业编号,第五位代表班的编号等等。 对取值范围的约束:如学生的成绩取值范围为 0~100。 对空值的约束。
数据定义——数据表的定义与删除
2、修改表结构 Alter Table <表名> [Add <新列名> <数据类型>[<完整性约束 >][,……]] [Drop[[[Constraint]<约束名>]|[C0lumn<列 名>]][,……]] [Alter <列名> <数据类型>[,……]]
数据定义——数据表的定义与删除
数据定义——数据表的定义与删除
创建学生表
CREATE TABLE Student ( Sno char ( 7 ) PRIMARY KEY, Sname char ( 10 ) NOT NULL, Ssex char (2), Sage tinyint , Sdept char (20 ) )
几点说明
数据定义——数据表的定义与删除
列级完整性约束
NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。 CHECK:限制列的取值范围。 PRIMARY KEY:指定本列为主码。 FOREIGN KEY:定义本列为引用其他表的外码。使 用形式为: [FOREIGN KEY(<外码列名>)] REFERENCES <外表名>(<外表列名>)
1.高度的综合 2.非过程化 3.采用面向集合的操作方式 4.一种语法结构两种使用方式 5.语言结构简捷 6.支持三级模式结构
6.1.2 SQL语言的功能
(1)数据定义功能 (2)数据查询功能 (3)数据更新功能 (4)视图管理功能 (5)数据控制功能
6.2 数据定义
SQL语言基本数据类型 (1)数值型 (2)字符型 (3)日期、时间型 (4)逻辑型 (5)货币型 (6)OLE型
元组约束
元组的约束是元组中各个字段之间的联系的约束, 如: 开始日期小于结束日期, 职工的最低工资不能低于规定的最低保障金。
关系约束
指若干元组之间、关系之间的联系的约束。 如: 学号的取值不能重复也不能取空值, 学生修课表中的学号的取值受学生表中的学号 取值的约束
实现数据完整性
UNIQUE 约束 确保在非主键列中不输入重复值。 应用在客观具有唯一性质的列上,如身份证号、 社会保险号等。 格式: ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] UNIQUE(<列名> [, … n] )
示例
例:为雇员表的“电话号码”列添加UNIQUE约束。 ALTER TABLE 雇员表 ADD CONSTRAINT UK_SID UNIQUE(电话号码)
例1、为SC表添加“修课类别”列,此列的定义为: XKLB char(4)
ALTER TABLE SC ADD XKLB char(4) NULL
例2、将新添加的XKLB的类型改为char(6)。
ALTER TABLE SC ALTER COLUMd列。
DEFAULT约束 当向表中插入数据时,如果没有为定义了 DEFAULT 的列提供值,则是隐式要求为此列使用默认值。 一个Default只能约束一列。 格式: ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] DEFAULT 默认值 FOR 列名
示例
例:定义雇员表的工资的默认值为1000。 ALTER TABLE 雇员 ADD CONSTRAINT DF_SALARY DEFAULT 1000 FOR 工资
SQL语言基本数据类型——字符型
普通编码字符串类型
Char(n):定长存储,n<=8000 Varchar(n):不定长存储(按实际长度存储), 长度最大不超过n , n<=8000 (注:n 为字符个数) Text:存储大于8000字节的文本
统一字符编码字符串类型
nchar(n):定长存储,n<=4000 nvarchar(n):不定长存储,长度最大不超过n , n<=4000 ntext:存储大于8000字节的文本 特点:每个字符占两个字节
FOREIGN KEY约束 用于建立和加强两个表数据之间的连接的一列或多列 格式: ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] FOREIGN KEY(<列名>)REFERENCES 引用表名(<列名>)
示例
例:为雇员表的工作编号添加外码引用约束,此列 引用工作表的工作编号列。 ALTER TABLE 雇员 ADD CONSTRAINT FK_job_id FOREIGN KEY (工作编号) REFERENCES 工作表 (工作编号)
约束定义
3、外码引用约束
指明本表外码列引用的表及表中的主码列。 [ FOREIGN KEY (<本表列名>)] REFERENCES <外表名>(<外表主码列名>)
例: FOREIGN KEY (sno) REFERENCES 学生表(sno)
数据定义——数据表的定义与删除
创建课程表
CREATE TABLE Course ( Cno char(10) NOT NULL, Cname char(20) NOT NULL, Ccredit tinyint , Semester tinyint, PRIMARY KEY(Cno) )
数据定义——数据表的定义与删除
创建SC表
CREATE TABLE SC ( Sno char(7) NOT NULL, Cno char(10) NOT NULL, Grade tinyint, XKLB char(4) , PRIMARY KEY ( Sno, Cno ), FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )
CHECK约束
通过限制输入到列中的值来强制域的完整性。 可定义同表多列之间的约束关系 格式: ALTER TABLE 表名 ADD [ CONSTRAINT 约束名 ] CHECK (逻辑表达式)
示例1
例1:在雇员表中,添加限制雇员的工资必须大于等 于500的约束。 ALTER TABLE 雇员 ADD CONSTRAINT CHK_Salary CHECK ( 工资 >= 500 )
PRIMARY KEY 约束 保证实体完整性 每个表有且只有一个PRIMARY KEY 约束 格式: ALTER TABLE 表名 ADD [ CONSTAINT 约束名 ] PRIMARY KEY ( 列名 [, … n ] )
示例
例:对雇员表和工作表分别添加主码约束。
ALTER TABLE 雇员表 ADD CONSTRAINT PK_EMP PRIMARY KEY (雇员编号) ALTER TABLE 工作表 ADD CONSTRAINT PK_JOB PRIMARY KEY (工作编号)