《数据库系统概论》 -- 3.1 SQL概论和DDL

3.1 SQL特点

       综合统一

                   集数据定义语言、数据操纵语言、数据控制语言的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动

                   关系模型中实体和实体间的联系均用关系表示,数据结构的单一性带来了数据操作符的统一性

       高度非过程化

                   存取路径的选择以及SQL的操作过程由系统自动完成,提高了数据独立性

       面向集合的操作方式

                   relation-at-a-time

       以同一种语法结构提供多种使用方式

                   独立的语言:可以直接命令行键入SQL命令操作

                   嵌入式语言:也可以嵌入到高级语言(C、C++、JAVA)程序中

       语言简洁,易学易用

                   核心功能只用9个动词

        SQL功能               动词

        数据查询               SELECT

        数据定义               CREATE, DROP, ALTER

        数据操纵               INSERT, UPDATE, DELETE

        数据控制               GRANT, REVOKE

3.2 SQL基本概念

         基本表:本身独立存在的表,一个关系对应一个基本表,一个或多个基本表对应一个存储文件

         索引:一个表可以带若干索引,索引也存放在存储文件中

         视图:从一个或几个基本表到处的表,数据库中存放视图的定义而不存放视图对应的数据

3.3 数据定义

  操作对象                                     操作方式

                                              创建                                     删除                                     修改

  模式                                CREATE SCHEMA              DROP SCHEMA                

  表                                    CREATE TABLE                DROP TABLE                      ALTER TABLE

  视图                                CREATE VIEW                    DROP VIEW                       

  索引                                CREATE INDEX                  DROP INDEX                      ALTER INDEX

  模式创建

    格式         CREATE SCHEMA [<模式名>] AUTHORIZATION <用户名> [<表定义子句>|<视图定义子句>|<授权定义子句>]

    说明         创建模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象;

        <模式名>省略时缺省与<用户名>保持一致;

        可以在创建模式同时创建表、视图,或授权

    举例         为用户WANG定义一个学生-课程模式S-T

          CREATE SCHEMA S-T AUTHORIZATION WANG;

               为用户ZHANG创建一个TEST模式,并在其中定义一个表TAB1

          CREATE SCHEMA TEST AUTHORIZATION ZHANG

            CREATE TABLE TAB1(COL1 SMALLLINT,

                                   COL2 INT,

                                   COL3 CHAR(20),

                                   COL4 NUMERIC(10,3),

                                   COL5 DECIMAL(5,2)

                                   );

    注:附录--01.schema和database的区别

  模式删除

    格式         DROP SCHEMA <模式名> <CASCADE|RESTRICT>;

    说明         CASCADE:级联,在删除模式时,删除该模式中的所有数据库对象

        RESTRICT:限制,在删除模式时,如果模式中已经定义了数据库对象,则拒绝该删除语句的执行

    举例         级联删除TEST模式

          DROP SCHEMA TEST CASCADE;

  基本表创建

    格式         CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]

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

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

    说明         如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上;

        否则即可以定义在列级,也可以定义在表级

        主码有多个属性构成,必须写到表级完整性约束处

    举例         CREATE TABLE Student (

                    Sno CHAR(9) PRIMARY KEY,

                    Sname CHAR(20) UNIQUE,

                    Ssex CHAR(2),

                    Sage SMALLINT,

                    Sdept CHAR(20)

                    );

               被参照表和参照表可以是同一个表

          CREATE TABLE Course (

                    Cno CHAR(4) PRIMARY KEY,

                    Cname CHAR(40) NOT NULL,

                    Cpno CHAR(4),

                    Ccredit SMALLINT,

                    FOREIGN KEY (Cpno) REFERENCES Course(Cno)

                    );

    注:附录--02.数据类型、03.模式与表

  修改基本表

    格式         ALTER TABLE <表名>

            [RENAME <新表名>]

            [ADD [COLUMN] <新列名> <新数据类型> [<新列级完整性约束>]]

            [ADD <新表级完整性约束>]

            [DROP [COLUMN] <列名> [CASCADE|RESTRICT]]

            [DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]]

            [ALTER COLUMN <列名> [(<新列名> <新数据类型>) | <新数据类型>] | set default <值>];

    说明         RENAME--修改表名

        ADD--增加新列、新的列级完整性约束条件、新的表级完整性约束条件

        DROP--删除表中的列、指定的完整性约束条件

        ALTER COLUMN--修改原有的列定义(列名、数据类型)、设置列的默认值

    举例         向Student表增加“入学时间”列,数据类型为日期型

          ALTER TABLE Student ADD Sentrance DATE;

               将Student表中年龄的数据类型由字符型改为整数型

          ALTER TABLE Student ALTER COLUMN Sage INT;

               增加Course表中课程名称必须唯一的约束条件

          ALTER TABLE Course ADD UNIQUE(Cname);

 

  删除基本表

    格式         DROP TABLE <表名> [RESTRICT|CASCADE];

    说明         如果选择为RESTRICT,则表不能被其他表的约束引用(如CHECK、FOREIGN KEY),不能索引,不能有视图,不能有触发器(trigger),不能有存储过程或函数;

        不同RDBMS对于RESTRICT和CASCADE的处理不同,需参考用户手册

  建立索引

    格式         CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名> [<次序>] [, <列名> [<次序>]] ...);

    说明         UNIQUE--此索引的每一个索引值只对应唯一的数据记录

        CLUSTER--要建立的索引时聚簇索引???

        索引可以建在该表的一列或多列上,每个列名后面可以用<次序>指定所引致的排列次序,ASC-升序(默认),DESC-降序

    举例         为Student表按照学号升序建立唯一索引

          CREATE UNIQUE INDEX Stusno ON Student(Sno);

               为Course表按照课程号升序建立唯一索引

          CREATE UNIQUE INDEX Coucno ON Course(Cno);

               为SC表按照学号升序,课程号降序建立唯一索引

          CREATE UNIQUE SCno ON SC(Sno, Cno DESC);

    注:附录--04.索引理解、05.数据字典

  修改索引

    格式    ALTER INDEX <旧索引名> RENAME TO <新索引名>;

  删除索引

    格式         DROP INDEX <索引名>;

    说明         删除索引时,会同时从数据字典中删去有关该索引的描述

附:

  01.schema和database的区别

    schema是一个名字空间,创建在某个database下的;一个database下可以包含多个schema。
    schema的好处有三点:
      1.多个用户使用同一个数据库而不会相互影响。
      2.对数据库中的对象进行逻辑分组,更便于管理。
      3.各个应用分别使用各自的模式,以避免命名冲突。

    各个数据库产品的database和schema定义不尽相同,需具体情况具体分析

  02.数据类型(不同关系数据库管理系统的数据类型不尽相同)

    数据类型                               含义

    CHAR(n)/         同CHARACTER(n)

    CHARACTER(n)                   长度为n的定长字符串

    VARCHAR(n)/       同CHARACTERVARYING(n)

    CHARACTERVARYING(n)    最大长度为n的变长字符串

    CLOB                                    字符串大对象

    BLOB                                    二进制大对象

    INT/           同INTEGER

    INTEGER                              长整数(4字节)

    SMALLINT                            短整数(2字节)

    BIGINT                                 大整数(8字节)

    NUMERIC(p,d)                     定点数,小数点前有p位(不包括小数点、符号),小数点后有d位

    DECIMAL(p,d)/      同DEC(p,d)

    DEC(p,d)                              同NUMERIC

    REAL                                    取决于机器精度的单精度浮点数

    DOUBLE PERCISION           取决于机器精度的双精度浮点数

    FLOAT(n)                             可选精度的浮点数,精度至少为n位数字

    BOOLEAN                            逻辑布尔值

    DATE                                    日期,包含年、月、日,格式为YYYY-MM-DD

    TIME                                     时间,包含时、分、秒,格式为HH:MM:SS

    TIMESTAMP                         时间戳类型

    INTERVAL                            时间间隔类型

  03.模式与表

         每一个基本表都属于某一个模式,当定义基本表时有三个方法定义它所属的模式

                CREATE TABLE "S-T".Student(...);

                创建模式同时创建表

                设置所属的模式

                       1.创建数据库对象时没有指定所属模式,会根据搜索路径来确定该对象所属的模式;

                       2.搜索路径包含一组模式列表,第一个存在的模式会被用来作为数据库对象所属模式;

                       3.通过show search_path;查看当前搜索路径;

                       4.DBA可通过SET search_path TO "S-T", PUBLIC;设置当前搜索路径

  04.索引理解

         用户可以根据应用环境的需要在基本表上建立一个或多个索引,以提供多种存储路径,加快查找速度

         索引分类

                顺序文件上的索引:

                       针对按指定属性值升序或降序存储的关系,在该属性上建立一个顺序索引文件

                       索引文件由属性值和相应的元组指针组成。

                B+树索引:

                       将索引属性组织成B+树的形式,

                       B+树的叶节点为属性值和相应的元组指针。

                       优点:动态平衡

                散列索引:

                       建立若干个桶,将索引属性按照其散列函数值映射到相应桶中

                       桶中存放索引属性值和相应的元组指针

                       优点:查找速度快

                位图索引:

                       用位向量记录索引属性中可能出现的值,每个位向量对应一个可能值

         不同RDBMS支持的索引类型不同。

         索引应该由DBA或表的owner来创建和维护。

         用户不能显示选择索引。索引是RDBMS的内部实现技术,属于内模式

  05.数据字典

         数据字典是RDBMS内部的一组系统表

         记录了数据库中所有定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、一些统计信息等

         执行DDL,实际就是更新数据字典表中的对应信息

         根据数据字典中的信息进行查询优化和查询处理

posted @ 2017-09-03 22:24  yc紫日  阅读(376)  评论(0编辑  收藏  举报