第四章 关系数据库的建立

44
韩韩韩韩 韩韩 数数数数 数数数数数 数数数数 数数数数数 数数数数数数数 数数数数数数数 韩韩韩 韩韩韩韩韩韩韩韩 SQL 韩韩 韩韩韩韩韩韩韩韩韩 韩韩韩韩韩韩韩韩韩 韩韩韩韩 韩韩韩韩 韩韩韩韩韩韩韩韩

Upload: melvin-hansen

Post on 03-Jan-2016

132 views

Category:

Documents


10 download

DESCRIPTION

第四章 关系数据库的建立. SQL 概述 数据库的创建与管理 基本表的创建与管理 数据查询 数据更新 视图的创建与管理. 第一节 SQL 概述. 一、 SQL 的特点与功能 二、 SQL Server 概述 三、 SQL Server 2000 的主要组件. 一、 SQL 的特点与功能. 1. 功能 除了查询( Query ),还包括操纵( Manipulation )、定义( Definition )和控制( Control )。 2. 特点: (1) 高度非过程化 (2) 面向集合的操作方式 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第四章 关系数据库的建立

SQL 概述 数据库的创建与管理 基本表的创建与管理 数据查询 数据更新 视图的创建与管理

Page 2: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第一节 SQL 概述

一、 SQL 的特点与功能

二、 SQL Server概述

三、 SQL Server 2000的主要组件

Page 3: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

一、 SQL 的特点与功能

1.功能

除了查询(Query),还包括操纵(Manipulation)、定义( Definition)和控制( Control)。

2.特点:(1) 高度非过程化(2) 面向集合的操作方式(3) 简洁易学,灵活易用(4) 使用方式灵活方便

Page 4: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

标准 SQL语言只能完成数据库的大部分操作,仍然有小部分操作标准 SQL语言无法胜任,许多数据库厂商针对自己的数据库软件版本做了某些扩充和修改,增加了一些非标准的 SQL 语言。

经扩充后的 SQL语言称为扩展 SQL语言。应用于Microsoft公司的数据库产品 SQL Server中的Transact-SQL 语言就是一种典型的扩展 SQL 语言。

Page 5: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

二、 SQL Server 概述

1. SQL Server 的发展简史

2. SQL Server 2000 的特点(1) 与 Internet 的紧密结合

(2) 可扩展性和可用性

(3) 企业级数据库

(4) 简单、友好的操作方式

(5) 数据仓库支持

Page 6: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

3. SQL Server 2000的体系结构(1) 客户机/服务器( C/S )体系结构(2) 数据库体系结构(3) 关系数据库引擎体系结构

Page 7: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

1. SQL Server 2000的服务器端组件 ( 1) SQL Server Service

( 2) SQL Server Agent

( 3)MS DTC (Microsoft Distributed Transaction Coordinator Service,微软分布式事务协调器( 4)Microsoft Search Service

2. SQL Server 2000客户端组件( 1) 企业管理器:可以完成几乎所有操作。

( 2)查询分析器:编辑和执行 SQL语句。

三、 SQL Server 2000的主要组件

Page 8: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第二节 数据库的创建与管理

一、 SQL Server 数据库的构成

二、创建数据库

三、修改数据库

四、删除数据库

Page 9: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

一、 SQL Server数据库的构成

1. SQL Server的数据库文件( 1)主数据文件 用于存储数据库数据,并包含数据库的启动信息。扩展名是 .mdf 。( 2 )辅助数据文件 用于存储不能置于主数据文件中的所有数据。扩展名是 .ndf 。( 3)日志文件 用于存储对数据库中数据的操作记录。扩展名是 .ldf 。

Page 10: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

2. SQL Server 2000的默认数据库( 1)系统数据库 master--记录了 SQL Server所有的服务器级系统信息,所有的注册账户和密码以及所有的系统设置信息,所有用户定义数据库的存储位置和初始化信息。 model--记录了所有的临时表格、临时数据和临时创建的存储过程 empdb--建立新数据库的模板,包含了将复制到每个数

据库中的系统表 msdb -- 被 SQL Server Agent用于进行复制、作业调

度以及管理报警等活动

Page 11: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

( 2)示例数据库 pubs--模仿一个图书出版公司建立的数据库模型。有出版者 (publishers)、出版物( titles)、作者( authors)、书店( stores)、员工 (employee)

等表 。 Northwind--模仿一个贸易公司的数据库模型。雇员( Employees) ,顾客( Customers),运输商( Shipper),供货商( Supplier),销售区( Territories),订单( Order )等表 。

Page 12: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

1. 使用企业管理器创建数据库

2. 使用 Transact-SQL语句创建数据库 CREATE DATABASE 数据库名[ ON

[ < 数据文件定义 1 > [ ,<数据文件定义 2>,...]]

[ , < 文件组 1 > [ ,<文件组 2> ] ]

[ LOG ON { < 日志文件定义 1 > [ ,< 日志文件定义 2>,…]}]

二、创建数据库

Page 13: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.1 要创建一个名为 pubs1数据库,指定数据库初始大小为10MB,最大容量为 50MB,数据库文件的增量为 5MB,并同步建立事务日志。

CREATE DATABASE pubs1ON ( NAME = pubs_dat, FILENAME = 'c:\data\pubs1dat.mdf', SIZE = 10 MB, MAXSIZE = 50 MB, FILEGROWTH = 5 MB )LOG ON( NAME = 'pubs_log', FILENAME = 'c:\data\pubs1log.ldf', SIZE = 5 MB, MAXSIZE = 25 MB, FILEGROWTH = 5 MB )

Page 14: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

2. 使用 Transact-SQL语句修改数据库ALTER DATABASE 数据库名{ ADD FILE <数据文件定义 1 > [ ,< 数据文件定义 2>,... ] | ADD LOG FILE < 日志文件定义1 > [ ,<日志文件定义

2>,…] | REMOVE FILE 数据文件名| MODIFY FILE < 数据文件定义 > | MODIFY NAME = 新数据库名}

三、修改数据库

1. 使用企业管理器修改数据库

Page 15: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.3 将 pubs1数据库的容量扩充到 80MB。ALTER DATABASE pubs1 MODIFY FILE (NAME = pubs_dat, SIZE = 80MB)例 4.4 向 pubs1 数据库添加一个 5 MB 大小的辅助数据文件。ALTER DATABASE pubs1ADD FILE ( NAME = pubsdat2, FILENAME = 'c:\Data\pubsdat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB)

Page 16: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

DROP DATABASE 数据库名例 4.5 删除 Archive 数据库。 DROP DATABASE Archive

四、删除数据库

1. 使用企业管理器删除数据库2. 使用 Transact-SQL语句删除数据库

Page 17: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第三节 基本表的创建与管理

一、创建基本表

二、修改基本表

三、删除基本表

四、建立与删除索引

Page 18: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

一、创建基本表

1. 基本表结构的定义

( 1)使用企业管理器定义基本表的结构 ( 2)使用 SQL的 CREATE TABLE 语句定义基本表CREATE TABLE <表名 > (<列名 1><数据类型 >[列级完整性约束条件 ]

[,<列名 2><数据类型 >[列级完整性约束条件 ]]…

[,<表级完整性约束条件 >])

Page 19: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.6 创建表 4-5所示的 publishers表。CREATE TABLE publishers (

pub_id char(4) NOT NULL UNIQUE, /*列级完整性约束, pub_id 取值唯一,不许取空值 */

pub_name varchar (40) ,

city varchar (20) ,

state char (2),

country varchar(30) DEFAULT ‘USA’ )

Page 20: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

2. 基本表数据的输入( 1)用企业管理器为表输入数据( 2)使用 SQL的 INSERT语句为表输入数据INSERT INTO <表名 > [<列名列表 >] VALUES( <值列表 >)表例 4.7 向 employee表中插入一条新员工记录’( PMA42628M’, ‘Accorti’, 13, 35, ‘0877’, 1992-08-

27)。INSERT INTO employee VALUES(‘PMA42628M’,’Accorti’,13,35,’0877’,’1992-08-27’)

Page 21: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

用 SQL的 ALTER TABLE语句修改基本表的一般格式为:

ALTER TABLE<表名>[ADD <新列名><数据类型>[<完整性约束>]][ADD PRIMARY KEY <列名>][ADD FOREIGN KEY <列名> REFERENCES <表名

>(<列名>) ][DROP <完整性约束>][DROP COLUMN <列名>][ALTER COLUMN <列名><新数据类型>]

二、修改基本表

Page 22: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.9 为 employee表增加新列 fname,数据类型为 20个可变长字符,并为 pub_id列添加外键约束。

ALTER TABLE employee ADD fname varchar(20) ADD FOREIGN KEY (pub_id) REFERENCES

publishers(pub_id)例 4.10 将 publishers表中的 state列的数据类型改为 10个可变长字符。

ALTER TABLE publishersALTER state varchar(10)

Page 23: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

三、删除基本表

用 SQL的 DROP TABLE语句删除基本表的一般格式是:

DROP TABLE <表名 >

例 4.11 删除原来创建的 employee表。DROP TABLE employee

Page 24: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

( 1)建立索引 CREATE [UNIQUE][CLUSTER]INDEX<索引名 > ON <表名 >( <列名 >[<次序 >][,<列名 >[<次序 >]]

…)例:在 employee表中的 lname 列上建立一个聚簇索引

CREATE CLUSTER INDEX ind-lname ON employee(lname)

( 2 )删除索引 DROP INDEX <索引名 > 例 4.12 删除 employee表中的 ind-lname索引。 DROP INDEX ind-lname

四、建立与删除索引

Page 25: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第四节 数据查询

一、单表查询

二、连接查询

三、嵌套查询

Page 26: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

一、单表查询

1.选择表中的若干列查询指定列例 4.12 查询 employee表中全体员工的工号、姓和名。

SELECT emp_id,fname,lname FROM employee 查询全部列例 4.13 查询全体员工的详细记录。SELECT * FROM employee

查询经过计算的值 例 4.14 查询全体员工的工号和姓名。SELECT emp_id, fname+‘ ’ +lname emp_name FROM employee

Page 27: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

2. 选择表中的若干元组在 SELECT语句中加入WHERE 子句例 4.16 ’查询所有公司编号为 0877’ 且级别大于 35的员工工号。SELECT emp_id FROM employee WHERE pub_id=’0887’ AND job_lvl>35 例 4.17 ’查询所有在 1991-1-1’ ’到 1996-12-31’之间聘用的员工工号与聘用时间。SELECT emp_id, hire_date FROM employee WHERE hire_date BETWEEN ’1991-1-1’ AND ’1996-12-31’

Page 28: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.18 “查询所有位于 Boston” “和 New York”的出版公司的公司名和城市。SELECT pub_name,city FROM publishers WHERE city IN (‘Boston’,’New York’)

例 4.19 ’查询所有工号以 P’开头的员工工号和姓名。 SELECT emp_id, fname, lname FROM employee WHERE emp_id LIKE ‘P%’

例 4.20 查询所有州为空的出版公司的信息。 SELECT * FROM publishers WHERE state IS NULL

注意这里的 IS不能用等号 (= ) 代替。

Page 29: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

消除取值重复的行:在 SELECT语句中加入DISTINCT关键字例 4.21 查询 employee表中所有员工的级别及所在出版公司的编号。SELECT job_lvl, pub_id FORM employee比较:SELECT DISTINCT job_lvl, pub_id FORM employee

Page 30: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

3.对查询结果排序 在 SELECT语句中加入 ORDER BY子句 例 4.22 查询 employee ’表中所有公司编号为 9952’的员工信息。结果以聘用时间按升序排列。

SELECT * FROM employee WHERE pub_id=’ 9952’ ORDER BY hire_date

4.使用计算函数汇总数据 在 SELECT后使用表 4-10给出的函数 例如:查询 employee表中 job_id的最大值和最小值 SELECT MAX(job_id),MIN(job_id) FROM

employee注:计算函数不能与其它未使用函数的列混合出现,也不能出现在

WHERE子句中。

Page 31: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

5.对查询结果分组 在 SELECT语句中加入 GROUP BY子句例 4.23 查询 employee表中同一出版公司的人数。SELECT pub_id, COUNT(*) num FROM employee GROUP BY pub_id 如果分组后,还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,要用HAVING代替WHERE子句。例 4.24 查询 employee表中人数超过 3人的出版公司编号。SELECT pus_id FROM employee GROUP BY pus_id HAVING COUNT(*)>3注:查询列要么是分组依据列,要么是计算函数。

Page 32: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

连接查询中用来连接两个表的条件称为连接条件,其一般格式为:

[<表名 1>.<列名 1><比较运算符 >[<表名 2>.]<列名 2>

例 4.25 查询各员工所对应的公司情况,要求显示员工工号、对应的公司名、公司所在城市。

SELECT employee.emp_id, publishers.pub_name, publishers.city FROM

employee, publishers WHERE employee.pub_id=publishers.pub_id … 还可以使用: FROM 表 1 JOIN 表 2 ON 连接条件

包括内连接: INNER JOIN 外连接: LEFT OUTER JOIN, RIGHT OUTER

JOIN, FULL OUTER JOIN

二、连接查询

Page 33: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

三、嵌套查询

在 SQL —语言中, 个 SELECT-FROM-WHERE语句称为一个查询块。将一个查询块嵌套在另一个查询块的WHERE子句或 HAVING短语条件中的查询称为嵌套

查询。例 4.26 查询与姓 Accorti具有相同公司编号的所有员工(但不包括 Accorti)的信息。SELECT * FROM employee

WHERE pub_id IN ( SELECT pub_id FROM employee where lname=’Accorti’)

AND lname!=’Accorti’

Page 34: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

嵌套查询可实现多表之间相关内容的查询。例 4.27 查询级别为 35的员工所对应的出版公司的名称与所在城市。

SELECT pub_name, city FROM publishersWHERE pub_id IN ( SELECT pub_id FROM

employee where job_lvl=35)

Page 35: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第五节 数据更新

一、插入数据

二、修改数据

三、删除数据

Page 36: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

一、插入数据

插入单个元组 见第三节(使用 SQL的 INSERT语句为表输入数据) 插入子查询结果INSERT INTO 表名 [(<属性列 1>[, <属性列名 2>]..)] 子查询

例 4.28 将 employee表中所有级别大于 100的员工工号、姓名存入一个新表 emp1( emp_id, name)中。

INSERT INTO emp1

SELECT emp_id, fname+ ‘ ’+lname FROM employee WHERE job_lvl>100

Page 37: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

二、修改数据

UPDATE <表名 >

SET <属性列 1>=<表达式 1>[, <属性列 2>=<表达式2>]…

[WHERE<条件表达式 >] 修改一个元组的值 修改多个元组的值 带子查询的修改语句

Page 38: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.29 将 employee ’表中员工号为 PMA42628M’的员工的聘用’日期改为 1992-08-30’。

UPDATE employee SET hire_date=’1992-08-30’

WHERE emp_id=’PMA42628M’

例 4.30 将所有员工的级别上调 1级。UPDATE employee SET job_lvl= job_lvl+1

例 4.31 ’将对应出版公司名为 Binnet&Hardley’的员工的工作等级修改为 12。

UPDATE employee SET job_id=12

WHERE pub_id = (SELECT pub_id FROM publishers WHERE pub_nameid=’Binnet&Hardley’)

Page 39: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

三、删除数据

DELETE FROM 表名 [WHERE<条件表达式 >] 删除一个元组的值 删除多个元组的值 带子查询的删除语句

Page 40: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

例 4.32 ’ 由于员工号为 PMA42628M’的员工离职,需要在员工表 employee中将其删除。

DELETE FROM employee WHERE emp_id=’ PMA42628M’

例 4.33 删除所有出版公司的元组。DELETE FROM publishers例 4.34 ’删除对应出版公司所在州为 NY’的员工的记录。

DELETE FROM employee WHERE pub_id IN (SELECT pub_id FROM publishers

WHERE state=’NY’)

Page 41: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

第六节 视图的创建与管理 一、创建视图

CREATE VIEW <视图名 >[<列名 1>[, <列名 2>]…]AS <子查询 >[WITH CHECK OPTION] 例 4.35 创建一个只包括公司编号为 '9952'的员工信息的视图 v_employee。

CREATE VIEW v_employee AS SELECT

emp_id,fname,lname,job_id,job_lvl,hire_date, pub_id FROM employee WHERE pub_id= '9952'

WITH CHECK OPTION

Page 42: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

二、查询视图同查询表

三、更新视图类似更新表(1) 若视图是由两个以上基本表导出的,则此视图不允许更新。(2) 若视图的字段来自字段表达式或常数,则不允许对此视图执行

Insert和 Update操作,但允许执行 Delete操作。(3) 若视图定义中含有 Group By或 Distinct子句,则此视图不允许更新。

(4) 若视图中有嵌套查询,并且内层查询的 From子句涉及的表也是导出该视图的基本表,则此视图不允许更新。

(5) 一个不允许更新的视图上定义的视图也不允许更新。

Page 43: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

五、视图的作用 ( 1)为用户集中数据,简化用户的数据查询和处理。( 2 )屏蔽数据库的复杂性,有利于数据库的重构。( 3)简化用户权限的管理,加强对机密数据的安全保

护。( 4 ) 多角度看待同一数据,有利于数据共享。

四、删除视图DROP VIEW <视图名>

Page 44: 第四章 关系数据库的建立

韩耀军等 编著

数据库系统原理与应用数据库系统原理与应用 机械工业出版社机械工业出版社

复习思考题3、 4、 6、 8、 10 (双)