• 《数据库系统概论》 -- 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,实际就是更新数据字典表中的对应信息

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

  • 相关阅读:
    李宏毅2021春机器学习课程笔记——通过训练集上的Loss可获得的信息
    python学习-NotImplementedError的使用
    代码运行优化
    django实现上传文件读取文件内容
    django-admin上传下载文件
    AtCoder Beginner Contest 191 F
    敏感词过滤 AC自动机
    面经知识点
    select poll epoll实例
    socket用法
  • 原文地址:https://www.cnblogs.com/yc913344706/p/7471418.html
Copyright © 2020-2023  润新知