SQL概述数据定义查询更新视图数据控制嵌入式SQL
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作对象
表 视 索 图 引
操作方式 创 建 删 除 修 改 CREATE TABLE DROP TABLE CREATE VIEW DROP VIEW CREATE INDEX DROP INDEX ALTER TABLE
视图是基于基本表的虚表,索引是依附于基本表的, 因此,SQL通常不提供修改视图定义和索引定义的操作。 (删除后重建;Oracle允许直接修改视图定义)
24
格式
SELECT [ALL|DISTINCT] <目标列表达式>
[, <目标列表达式>]……
FROM
[WHERE [GROUP
<表名或视图名>[,<表名或视图名>] …
<条件表达式>] BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]];
2019/3/28
数据库原理
12
修改基本表
基本表的修改操作: 改变表名 增加列 改变列的数据类型 删除列的约束 删除列
改变列名
2019/3/28
数据库原理
14
格式:ALTER TABLE <表名>
[ADD <新列名> <数据类型>[完整性约束]]
[DROP <完整性约束名>] [MODIFY <列名> <数据类型>] [RENAME <旧表名> TO <新表名>]; 增加新列和新的完整性约束条件 删除指定的完整性约束条件 修改列的定义(列名和数据类型) 改变表名
视图是从一个或多个基本表中导出的表,本身不存储 在数据库中,只有其定义,可以将其理解为一个虚表。
基本表是本身独立存在的表,每个基本表对应一个 存储文件,一个表可以带若干索引,存储文件及索引组成 了关系数据库的内模式。
2019/3/28
数据库原理
6
3.2 数据定义
表3.2 SQL的数据定义语句
2019/3/28
数据库原理
19
建立索引
[UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名> (<列名>[<次序>],[, <列名>[<次序>]]…);
格式:CREATE
对指定的表的列建立索引。
UNIQUE 表示索引值唯一。
CLUSTER 表示索引是聚簇索引,指索引项的顺序与表中
2019/3/28
数据库原理
10
例2 :建立学生S、课程C、选课SC三个表 C表:
CREATE TABLE C (C# CHAR(6) NOT NULL, CNAME CHAR(30) NOT NULL, TNAME CHAR(8), PC# CHAR(6), PRIMARY KEY (C#));
CREATE UNIQUE INDEX SCIDX ON S(S# ASC, C# DESC);
2019/3/28
数据库原理
21
例9:为学生Student表建立聚簇索引(按学生姓名升序建索引)。
CREATE
CLUSTER INDEX SNAMEIDX ON Student(Sname);
一个基本表最多只能建立一个聚簇索引。建立索
2019/3/28
数据库原理
17
删除基本表
DROP TABLE <表名>;
格式:
删除一个表,及与该表相关的索引、视图、码和外部码。 例7: 删除Student表。 DROP TABLE Student;
2019/3/28
数据库原理
18
3.2.2 建立与删除索引
建立索引是加快查询速度的有效手段,一个基本 表上可建立一个或多个索引,以提供多种存取路径, 加快查找速度。 建立与删除索引由DBA或表的属主负责完成,用户 不必也不能选择索引。
数据库原理
31
3.查询经过计算的值
学生表:Student(Sno, Sname, Ssex, Sage, Sdept) 例4. 查询全体学生的姓名及其出生年份。 SELECT FROM Sname, 2006- Sage Student;
2019/3/28
数据库原理
32
例5. 查询全体学生的姓名、出生年份和所有系,要求用小 写字母表示所有系名。
1986年美国国家标准局(ANSI)的数据库委员会X3H2批准
SQL作为关系数据库语言的美国标准(SQL-86) 。 ANSI 不断修改和完善SQL标准,公布了SQL-89、 SQL-92(SQL2)、SQL-99(SQL3) 大部分DBMS产品都支持SQL,成为操作数据库的标准语言
2019/3/28
SELECT
FROM SELECT
Sname, 'Year of Birth:', 2006- Sage, LOWER(Sdept)
Student; Sname NAME, 'Year of Birth:' BIRTH, 2006- Sage
数据库原理
2
3.1 SQL概述
SQL是一种介于关系代数和关系演算之间的结构化查询语言。
3.1.1 SQL的特点
综合统一
集DDL、DML、DCL的功能于一体,可以独立完成数据库生命周期中的全部活动。
高度非过程化
无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
面向集合的操作方式
2019/3/28
数据库原理
25
SELECT…FROM常用语句执行过程
SELECT… FROM… WHERE… GROUP… ⑤ ① ② ③ 投影 TABLE→内存 选取元组 分组
HAVING…
[{UNION|… SELECT… ORDER BY…… ] }
④
⑥ ①~⑤ ⑦
选择分组
查徇结果的集合运算
SELECT Sno, Sname FROM Student; 查询各列的先后 例2. 查询全体学生的姓名、学号、所在系。 顺序可以与表中 的顺序不一致。 SELECT Sname, Sno, Sdept
FROM
Student;
2019/3/28
数据库原理
28
2019/3/28
数据库原理
29
2.查询全部列
记录的物理顺序一致。 索引一旦建立,交由系统使用和维护。
2019/3/28
数据库原理
20
例8: 为学生-课程数据库中的S, C, SC三个表建立索引。
其中S表按学号升序建唯一索引,C表按课程号升序建唯一 索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX SIDX ON S(S#); CREATE UNIQUE INDEX CIDX ON C(C#);
2019/3/28
数据库原理
15
例4:在Student表中增加“入学时间”列,数据类型为日期型。
ALETR TABLE Student ADD Scome DATE;
例5:把年龄的数据类型改为半字长整数.
ALETR TABLE Student MODIFY Sage SMALLINT;
例6:删除学生姓名必须取唯一值的约束。 ALETR TABLE Student DROP UNIQUE(Sname);
操作对象、查找结果、插入、删除、更新操作的对象可以是元组集合。
以同一种语法结构提供两种使用方式
可独立的用于联机交互的使用方式,用户可在终端键入SQL命令对数据库进行操 作;SQL语句可嵌入到高级语言程序中,供程序员设计程序时使用。
语言简单,易学易用
核心功能只有9个动词。
数据库原理 3
2019/3/28
第 3章
关系数据库标准 语言SQL
SQL概述
数据定义 查询 更新 视图 数据控制 嵌入式SQL
2019/3/28
数据库原理
1
●
SQL的发展及现状
1974年,由Boyce和Chamberlin提出。 1975-1979,IBM公司San Jose Research Lab研制了 关系数据库管理系统原型System R并实现了这种语言。
2019/3/28
数据库原理
4
3.1.2 SQL语言的基本概念
SQL 用户
视图1
视图2
外模式
基本表1
基本表2
基本表3
基本表4
模式
存储文件1
存储文件2
内模式
图3.1 SQL对关系数据库模型的支持
2019/3/28 数据库原理 5
基本概念:
用户可以用SQL语言对视图(View)和基本表(Base Table)进行查询等操作,在用户观点里,视图和表一样, 都是关系。
数据库原理
23
3.3 查 询
数据查询是数据库应用的核心功能。
基本结构 Select From Where
A1, A2, ..., An R1, R2, ..., Rm P
π A1 ,
Select
A2, ..., An(σp(R1×R2×...×Rm))
Where From
2019/3/28
数据库原理
( Sno
Sname
Ssex Sage Sdept
2019/3/28
CHAR(20) UNIQUE,
CHAR(1), INT, CHAR(15));
数据库原理 9
例2 :建立学生S、课程C、选课SC三个表 S表:
CREATE TABLE S ( S# CHAR(6) NOT NULL, /* 学号 SNAME CHAR(8) NOT NULL, /* 姓名 SAGE SMALLINT, /* 年龄 SD CHAR(10), /* 系名 SEX CHAR(2) DEFAULT '男' /* 性 别 CHECK((SEX='男') OR (SEX='女')), PRIMARY KEY (S#));
排序输出
2019/3/28
数据库原理
26
3.3.1 单表查询
选择表中的若干列 选择表中Байду номын сангаас若干元组
对查询结果排序
使用集函数 对查询结果分组
2019/3/28
数据库原理
27
1.查询指定列
学生表:Student(Sno, Sname, Ssex, Sage, Sdept)
例1. 查询全体学生的学号及姓名。
2019/3/28
数据库原理
7
3.2.1 定义、删除与修改基本表
定义基本表
格式:CREATE TABLE <表名>
(<列名> <数据类型>[列级完整性约束条件] [,<列名> <数据类型>[列级完整性约束条件]]…… [,<表级完整性约束条件>]); 建立一个新表,表中无记录
2019/3/28
学生表:Student(Sno, Sname, Ssex, Sage, Sdept)
例3. 查询全体学生的全部信息。 SELECT Sno, Sname, Ssex, Sage, Sdept
FROM
Student;
等价于
SELECT * FROM Student;
2019/3/28
数据库原理
30
2019/3/28
引后,更新索引列数据时,往往导致表中记录的物理
顺序的变更,代价较大,因此对于经常更新的列不宜 建立聚簇索引。
2019/3/28
数据库原理
22
删除索引
格式: DROP INDEX <索引名>; 例10: 删除Student表的SNAMEIDX索引。 DROP INDEX SNAMEIDX ;
2019/3/28
数据查询 (Data Query) S Q L 语 言
数据操纵 (Data Manipulation) 数据定义 (Data Definition) 数据控制 (Data Control)
表3.1 SQL语言的动词 SQL 功能 数据查询 数据定义 数据操纵 数据控制 SELECT CREATE, DROP, ALTER INSERT, UPDATE, DELETE GRANT, REVOKE 动 词
数据库原理
8
例1 :建立学生表Student,它由学号Sno、姓名Sname、性 别Ssex、年龄Sage、所在系Sdept五个属性构成。其中学号 不能为空,值是唯一的,并且姓名取值也唯一。 CREATE TABLE Student
CHAR(5) NOT NULL UNIQUE, /* 列级完整性 约束条件
/* /* /* /*
课程号 课程名 教师姓名 先行课
2019/3/28
数据库原理
11
例2 :建立学生S、课程C、选课SC三个表 SC表: CREATE TABLE SC (S# CHAR(6) NOT NULL, /* 学号 C# CHAR(6) NOT NULL, /* 课程号 GR SMALLINT DEFAULT NULL, /* 成绩 PRIMARY KEY (S#,C#), FOREIGN KEY (S#) REFERENCES S(S#), FOREIGN KEY (C#) REFERENCES C(C#), CHECK (GR IS NULL) OR (GR BETWEEN O AND 100)) ;