数据库概论----SQL数据定义

  关系数据库系统系统支持三级模式结构,其模式,外模式和内模式中的基本对象有模式,表,视图和索引等。因此SQL的数据定义功能包括模式定义,表定义,视图和索引的定义。

数据库概论----SQL数据定义

   一个数据库管理系统中可以建立多个数据库,一个数据库可以建立多个模式,一个模式下有多个表,视图和索引等。

(一) 模式

  1.定义模式:

    CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;

    //当模式名为空时,默认为用户名

    例:为用户SONG创建一个模式TEST。

    CREATE SCHEMA TEST AUTHORIZATION SONG;

    

    在CREATE SCHEMA 中可以接受CREATE TABLE ,CREATE VIEW和GRANT子句。

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

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

    CREATE  SCHEMA TEST AUTHORIZATION ZHANG;

    CREATE  TABLE TAB1( COL1  SMALLINT,

               COL2  INT,

               COL3  CHAR(20)

               );

  2.删除模式:

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

    其中CASCDE(级联)表示在删除模式的同时把该模式中所有的数据库对象全部删除;RESTRICT(限制)表示如果该模式已经定义了下属的数据库对象(如表,视图等)则拒绝该删除语句的执行。

 

(二)基本表

  1.定义基本表:

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

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

           ...

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

    例:建立一个Student表。

      CREATE  TABLE  Student

        (Sno CHAR(9)PRIMARY  KEY,       /*Sno是主码*/

        Sname  CHAR(20)UNIQUE.   /*Sname取唯一值*/

        Ssex  CHAR(2),

        Sdept  CHAR(20)

        Sage  SMALLINT

        );

  2.删除基本表:

    DROP  TABLE  <表名>  [RESTRICT  |  CASCADE]

    若选择RESTRICT,则该表的删除是有限制的,欲删除的表不能被其他表的约束所引用,不能有视图,触发器,存储过程或函数;若选择CASCADE,则该表的删除没有限制条件,相关内容一起删除。

 

  3.修改基本表:

    ALTER TABLE <表名>

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

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

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

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

    [ALTER COLUMN <列名><数据类型> ] ;


    ADD子句用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件;DROP COLUMN子句用于删除表中的列;DROP CONSTRAINT子句用于删除指定的完整性约束条件。

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

    ALTER TABLE Student ADD S_entrance DATE;

    例:将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数。

     ALTER TABLE Student ALTER COLUMN Sage INT;

    例:增加课程名称必须取唯一值的约束条件。

    ALTER TABLE Course ADD UNIQUE(Cname);

 

(三)索引

  1.索引的建立:

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

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

    <表名>:要建索引的基本表的名字 

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

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

    CLUSTER:表示要建立的索引是聚簇索引

   2.索引的修改:

    ALTER INDEX <旧索引名> RENAME TO <新索引名>

    例:将SC表的SCno索引名改为SCSno。

      ALTER INDEX SCno RENAME TO SCSno;

  3.索引的删除:

    DROP INDEX <索引名>;

    例:删除Student表的Stusname索引。

      DROP INDEX Stusname;

    

 

    

 

上一篇:mysql数据库表的增删改查及完整性约束


下一篇:oracle 禁用外键约束