数据库复习⑦
Posted 伊甸一点
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库复习⑦相关的知识,希望对你有一定的参考价值。
数据库复习⑦
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>);
举例说明:
5.删除满足某些条件的元组
DELETE FROM <relation>
WHERE <condition>;
删除所有元组 Delete all Tuples
DELETE FROM <relation>
6.更新关系表
更新某些元组值语句:
UPDATE <relation>
SET <list of attribute assignments>
WHERE <condition on tuples>
更新多个元组值:
==========================================
=================Views 视图================
7.创建视图
CREATE VIEW <name> AS <query>;
举例说明:
使用视图进行相关查询操作
8.使用视图进行查询操作
视图其实就是关系表,不过视图并不在物理空间上存储。
使用上述视图进行查询操作:
9.更新视图
(1)若视图的字段是来自字段表达式或常数,则不允许对此视图执行INSERT、UPDATE操作,允许执行DELETE操作;
(2)若视图的字段是来自库函数,则此视图不允许更新;
(3)若视图的定义中有GROUP BY子句或聚集函数时,则此视图不允许更新;
(4)若视图的定义中有DISTINCT任选项,则此视图不允许更新;
(5)若视图的定义中有嵌套查询,并且嵌套查询的FROM子句中涉及的表也是导出该视图的基表,则此视图不允许更新;
(6)若视图是由两个以上的基表导出的,此视图不允许更新;
(7)一个不允许更新的视图上定义的视图也不允许更新;
(8)由一个基表定义的视图,只含有基表的主键或候补键,并且视图中没有用表达式或函数定义的属性,才允许更新。
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约束。
11.建立与删除索引
在一个基本表上最多只能建立一个聚簇索引。
聚簇索引的用途:对于基于聚簇索引列的 查询(特别是范围查询),可以提高查询 效率
聚簇索引的适用范围:
聚簇索引列存在大量非重复值
很少对基表进行增删操作
很少对其中的变长列进行修改操作
CREATE [ UNIQUE ] [CLUSTER] INDEX <索引名>
ON < 表名 >(< 列名 > [ 次序 ][, 列名 ][< 次序 >] )
用<表名>指定要建索引的基本表名字;
索引可以建立在该表的一列或多列上,各列名之间用逗号分隔
用 <次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC
UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引
数据库复习⑧摘要: 实体完整性约束、断言、触发器
以上是关于数据库复习⑦的主要内容,如果未能解决你的问题,请参考以下文章