你的位置:首页 > 数据库

[数据库]数据库复习⑦


数据库复习⑦

2016年6月18日

20:03

Main DDL & DML & Views 数据定义语言、数据操纵语言、视图

=============DDL数据定义语言=============

1.声明一个关系表和删除一个关系表

Simplest form is:

CREATE TABLE <name> (

<list of elements>

);

And you may remove a relation from the database schema by:

DROP TABLE <name>;

常用的数据类型:

INT

REAL or FLOAT

CHAR(n) = 定长字符串有n个字符

VARCHAR(n) = 变长字符串最多有n个字符

DATE: 'yyyy-mm-dd'

TIME:'hh:mm:ss'

一个关系表中最多有一个PRIMARY KEY主键但是UNIQUE属性列可以有多个;

主键要求非空NULL,UNIQUE 可以有NULL值存在

2.向已有表中添加属性列

ALTER TABLE<name> ADD

<attribute declaration>

举例说明:

ALTER TABLE Bars ADD

phone CHAR(16)DEFAULT ‘unlisted’;

3.删除某一属性列

ALTER TABLE<name>

DROP <attribute>

举例说明: ALTER TABLE Bars DROP license;

==========================================

=============DML数据操纵语言=============

4.插入一个或多个元组值 Insert

INSERT INTO <relation>

VALUES (<list of values>);

举例说明:

clip_image002

clip_image004

5.删除满足某些条件的元组

DELETE FROM <relation>

WHERE <condition>;

clip_image006

删除所有元组 Delete all Tuples

DELETE FROM <relation>

clip_image008

6.更新关系表

更新某些元组值语句:

UPDATE <relation>

SET <list of attribute assignments>

WHERE <condition on tuples>

clip_image010

更新多个元组值:

clip_image012

==========================================

=================Views 视图================

7.创建视图

CREATE VIEW <name> AS <query>;

举例说明:

clip_image014

使用视图进行相关查询操作

clip_image016

8.使用视图进行查询操作

视图其实就是关系表,不过视图并不在物理空间上存储。

clip_image018

使用上述视图进行查询操作:

clip_image020

clip_image022

9.更新视图

(1)若视图的字段是来自字段表达式或常数,则不允许对此视图执行INSERT、UPDATE操作,允许执行DELETE操作;

(2)若视图的字段是来自库函数,则此视图不允许更新;

(3)若视图的定义中有GROUP BY子句或聚集函数时,则此视图不允许更新;

(4)若视图的定义中有DISTINCT任选项,则此视图不允许更新;

(5)若视图的定义中有嵌套查询,并且嵌套查询的FROM子句中涉及的表也是导出该视图的基表,则此视图不允许更新;

(6)若视图是由两个以上的基表导出的,此视图不允许更新;

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

8)由一个基表定义的视图,只含有基表的主键或候补键,并且视图中没有用表达式或函数定义的属性,才允许更新。

clip_image024

10.WITH CHECK OPTION的视图

为视图添加with check option,可以在通过视图进行增删改操作时,不破坏视图定义中的谓词条件(即子查询中的条件表达式)

CREATE VIEW

F_Student1(stdnum,name,sex,age,dept) AS

SELECT * FROM Student

WHERE Ssex='女';

进行以下更新操作:

UPDATE F_Student1

SET Ssex = '男'

WHERE age = 18

结果会将18岁的女生性别改为男

SELECT *

FROM F_Student1

结果和之前的数据相比,那些18岁的女生都不见了。

因此需要加上Check约束。

clip_image026

clip_image028

11.建立与删除索引

clip_image030

在一个基本表上最多只能建立一个聚簇索引。

聚簇索引的用途:对于基于聚簇索引列的 查询(特别是范围查询),可以提高查询 效率

聚簇索引的适用范围:

聚簇索引列存在大量非重复值

很少对基表进行增删操作

很少对其中的变长列进行修改操作

clip_image032

CREATE [ UNIQUE ] [CLUSTER] INDEX <索引名>

ON < 表名 >(< 列名 > [ 次序 ][, 列名 ][< 次序 >] )

用<表名>指定要建索引的基本表名字;

clip_image034

索引可以建立在该表的一列或多列上,各列名之间用逗号分隔

用 <次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引

clip_image036

clip_image038