第三章 关系数据库查询语言SQL

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20112011-2-25
主讲:王颂华
9
3.2 数据定义
3.2.3 索引的建立与删除
1.建立索引 1.建立索引 索引是数据库随机检索的常用手段,它实际上是记 录的关键字与其相应地址的对应表。借助于索引结构,可 以迅速查找到某个属性A 以迅速查找到某个属性A具有指定值的那些元组。对一个 基本表,可以按需要建立若干个索引,以便提供多种存取 路径。 建立索引的语句格式为: CREATE[UNIQUE][CLUSTER]INDEX<索引名 CREATE[UNIQUE][CLUSTER]INDEX<索引名 > ON<表名>(<列名1>[<次序>],[<列名2>[<次序 ON<表名>(<列名1>[<次序>],[<列名2>[<次序 >]]… >]]…);
3.2 数据定义
2)主关键字的定义 一个关系可能有多个候选关键字,但在定义基本表 时只能定义一个主关键字。一个关系的主关键字由一个或 几个属性构成,在CREATE TABLE中声明主关键字有两 几个属性构成,在CREATE TABLE中声明主关键字有两 种方法: (1)在列出关系模式的属性时,在属性及其类型后加 上保留字PRIMARY KEY,表示该属性是主关键字。 上保留字PRIMARY KEY,表示该属性是主关键字。 (2)在列出关系模式的所有属性后,再附加一个声明: PRIMARY KEY(<属性1>[,<属性2>,…]) KEY(<属性1 ,<属性2>,… 如果关键字由多个属性构成,则必须使用第二种方 法。
20112011-2-25 主讲:王颂华 12
3.3 数据查询
3.3.1 单表查询
在对单独的一个关系进行查询时,可以查询表中的 一到多个列,也可以按条件查询表中的记录,还可以对查 询结果进行排序,使用计算函数对查询数据进行汇总,使 用分组子句对查询结果进行分组计算等。 1. 查询表中的列 1)查询全部列 【例3-10】 选择Stu表中的所有列。 10】 选择Stu表中的所有列。 SELECT Sno,Sname,Ssex,Sbirth,Sdept FROM Stu 在本例中,一一列出所有属性名的方法太烦琐了, 20112011-2-25 13 主讲:王颂华 可用通配符“ 可用通配符“*”简化表示。 SELECT * FROM Stu
20112011-2-25
主讲:王颂华
14
3.3 数据查询
2. 查询表中的记录 1)查询满足条件的元组 查询满足条件的元组是通过WHERE子句实现的。 查询满足条件的元组是通过WHERE子句实现的。 在查询时,主要使用以下一些运算符来给出查询条件,包 括比较运算符:= 括比较运算符:=,>,<,>=,<=,< >;字符匹配 >=,<=, >;字符匹配 运算符:LIKE, 运算符:LIKE,NOT LIKE;确定范围运算符: LIKE;确定范围运算符: BETWEEN AND,NOT BETWEEN AND;集合成员运 AND, AND;集合成员运 算符:IN, 算符:IN,NOT IN;逻辑运算符:NOT,AND,OR和 IN;逻辑运算符:NOT,AND,OR和 判断空值的IS NULL, 判断空值的IS NULL,IS NOT NULL。 NULL。 【例3-13】 查询Study表中课程号为C2的学生学号与成 13】 查询Study表中课程号为C2的学生学号与成 绩。
20112011-2-25
主讲:王颂华
6
3.2 数据定义
3)外部关键字的定义 外部关键字的定义是建立参照完整性的约束,它是 关系模式的另一种重要约束。根据参照完整性的概念,在 SQL中有两种方法用于说明一个外部关键字。 SQL中有两种方法用于说明一个外部关键字。 (1)如果外部关键字只有一个属性,可以在它的属性名 和类型后面直接用REFERENCES 和类型后面直接用REFERENCES说明它参照了某个表的 REFERENCES说明它参照了某个表的 某些属性(必须是主关键字) 某些属性(必须是主关键字)。 标准的语法格式是: REFERENCES<表名><属性> REFERENCES<表名><属性> (2)在CREATE TABLE语句的属性列表后面增加一个或 )在CREATE TABLE语句的属性列表后面增加一个或 几个外部关键字说明,其格式为: FOREIGN KEY<属性>REFERENCES<表名><属 KEY<属性>REFERENCES<表名><属 性> 20112011-2-25 7 主讲:王颂华 其中,第一个“属性”是外部关键字,第二个“ 其中,第一个“属性”是外部关键字,第二个“属 性”是被参照的属性。
20112011-2-25
SELECT Sno, Score FROM Study WHERE Cno='C2'
主讲:王颂华
15
3.3 数据查询
2)查询指定范围的记录 确定范围运算符BETWEEN AND和 确定范围运算符BETWEEN AND和NOT BETWEEN AND本质上是一个逻辑运算符,可以用来查 AND本质上是一个逻辑运算符,可以用来查 找值在(不在)指定范围内的元组。一般用于比较数值型 数据,列名或表达式的类型要与下限值或上限值的类型相 同。其中BETWEEN后边指定范围的下限,AND后边指定 同。其中BETWEEN后边指定范围的下限,AND后边指定 范围的上限。 【例3-17】 列出Study表中成绩在80~90分的学生名单。 17】 列出Study表中成绩在80~90分的学生名单。 SELECT Sno,Score FROM Study WHERE Score BETWEEN 80 AND 90
3.2 数据定义
2. 基本表的修改 对表结构进行增加或删除列的命令为: ALTER TABLE <表名> <表名> ADD<列名><数据类型>[列级完整性约束条件]| ADD<列名><数据类型>[列级完整性约束条件]| DROP<列级完整性约束条件>| DROP<列级完整性约束条件>| MODIFY<列名>< MODIFY<列名><数据类型>[列级完整性约束条 ><数据类型>[ >[列级完整性约束条 件]; 【例3-6】在表Stu中实现以下修改:(1)增加属性 在表Stu中实现以下修改:(1 Sage,(2)删除属性Sbirth,(3)将Sdept属性长度 Sage,(2)删除属性Sbirth,(3)将Sdept属性长度 改为15。 改为15。 (1)ALTER TABLE Stu ADD Sage SMALLINT; SMALLINT; 不论基本表中原来是否已经有数据,新增加的列一律 为空值。 (2)ALTER TABLE 主讲:王颂华DROP Sbirth; Stu Sbirth; 20112011-2-25 8 (3)ALTER TABLE Stu MODIFY Sdept CHAR(15); CHAR(15);
3.3 数据查询
2)查询部分列 【例3-11】 选择Stu表中的Sname、Sdept列。 11】 选择Stu表中的Sname、Sdept列。 SELECT Sname,Sdept FROM Stu 3)查询经过计算的列 【例3-12】查询Stu表中全部学生的姓名和年龄,去掉重 12】查询Stu Stu表中全部学生的姓名和年龄,去掉重 名的记录。 SELECT DISTINCT Sname AS StudentName, StudentName, YEAR(DATE())- YEAR(DATE())-YEAR(SBirth) AS Sage FROM Stu
20112011-2-25 主讲:王颂华 10
3.2 数据定义
2. 删除索引 当需要删除一个索引的时候,可使用下面的语句: DROP INDEX<索引名>; INDEX<索引名>
20112011-2-25
主讲:王颂华
11
3.3 数据查询
SQL的句型为SELECT-FROM-WHERE。 SQL的句型为SELECT-FROM-WHERE。 SELECT命令的语法格式为: SELECT命令的语法格式为: SELECT [ALL|DISTINCT] <目标列名>[AS <显示列名>][,<目标列名 目标列名>[AS <显示列名>][,<目标列名 >[AS <显示列名>]…] <显示列名>]… FROM <表名|视图>[AS <本地别名>] [,<表名| <表名|视图>[AS <本地别名>] [, 表名| 视图>] 视图>] [AS <本地别名>]…] <本地别名>]… [WHERE <条件表达式>] <条件表达式>] [GROUP BY <分组列名1>[,<分组列名 <分组列名1>[,<分组列名 2>…]][HAVING <分组条件表达式>] 2>… <分组条件表达式>] [ORDER BY <排序列名1>[ASC|DESC][,<排序选 <排序列名1>[ASC|DESC][,<排序选 项2>[ASC|DESC]…]] 2>[ASC|DESC]…
20112011-2-25
主讲:王颂华
2
3.2
数据定义
3.2.1 数据定义语句和数据类型
数据定义语句与数据类型是学习SQL数据定义功能的基 数据定义语句与数据类型是学习SQL数据定义功能的基 础。SQL的数据定义语句及所支持的数据类型见课本第35页。 础。SQL的数据定义语句及所支持的数据类型见课本第35页。
第3章 关系数据库查询语言 SQL
3.1 3.2 3.3 3.4 3.5 SQL概述 SQL概述 数据定义 数据查询 数据更新 视图
20112011-2-25
主讲:王颂华
1
3.1
SQL概述 SQL概述
SQL有许多优点 SQL有许多优点 : (1)综合统一,功能完备。 (2)高度非过程化。 (3)面向集合的操作方式。 (4)能以多种方式使用并具有统一的语法结构。 (5)语言简洁,易学易用。
3.2.2 基本表的定义、修改与删除 基本表的定义、
1.基本表的定义 1)表结构的定义 建立数据库最重要的一步就是定义基本表的结构,表的定 义通过CREATE TABLE命令来实现。SQL用于创建基本表的语 义通过CREATE TABLE命令来实现。SQL用于创建基本表的语 法结构为: CREATE TABLE <表名> <表名> (<列名> <数据类型>[列级完整性约束条件] 列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条件]] … 列名> <数据类型>[列级完整性约束条件]] [,<表级完整性约束条件>] ); 表级完整性约束条件>] 20112011-2-25 3 主讲:王颂华
20112011-2-25 主讲:王颂华 5
3.2ห้องสมุดไป่ตู้数据定义
方法二: CREATE TABLE Stu (Sno CHAR(8), CHAR(8), Sname CHAR(8), CHAR(8), Ssex CHAR(2), CHAR(2), Sbirth DATE, DATE, Sdept CHAR(20), CHAR(20), PRIMARY KEY(Sno)); KEY(Sno));
20112011-2-25 主讲:王颂华 4
3.2 数据定义
【例3-2】 建立一个学生表Stu,它由Sno(学号)、 建立一个学生表Stu,它由Sno(学号) Sname(姓名)、 Ssex(性别)、Sbirth(出生日期)、 Sname(姓名)、 Ssex(性别)、Sbirth(出生日期)、 Sdept(所在院系)5个列组成,其中Sno为主关键字。 Sdept(所在院系)5个列组成,其中Sno为主关键字。 (提示:因为关键字由一个属性构成,两种定义方法都可 使用。) 方法一: CREATE TABLE Stu (Sno CHAR(8) PRIMARY KEY, KEY, Sname CHAR(8), CHAR(8), Ssex CHAR(2), CHAR(2), Sbirth DATE, DATE, Sdept CHAR(20)); CHAR(20));
3.2 数据定义
3. 基本表的删除 删除基本表的语句格式为: DROP TABLE<表名>[RESTRICT|CASCADE]; TABLE<表名>[RESTRICT|CASCADE]; 【例3-7】 删除课程表Course。 删除课程表Course。 DROP TABLE Course CASCADE;
相关文档
最新文档