zoukankan      html  css  js  c++  java
  • 数据库复习⑦

    数据库复习⑦

    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

    数据库复习⑧摘要: 实体完整性约束、断言、触发器

    数据库复习⑧友情链接:http://www.cnblogs.com/zpfbuaa/p/5597851.html

  • 相关阅读:
    leetcode 264: Ugly Number II
    leetcode 260: Single Number III
    leetcode 241: Different Ways to Add Parentheses
    清远市技术学院大学城网
    英德市职业技术学校大学城网
    清远市田家炳中学大学城网
    清远市清城区清城中学大学城网
    清远市第一中学大学城网
    当前最热的技术
    Python 学习视频
  • 原文地址:https://www.cnblogs.com/zpfbuaa/p/5596903.html
Copyright © 2011-2022 走看看