SQL语句整理(二) 数据定义语言DDL

前言:

这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点。

我的教材是人大王珊老师的《数据库系统概论》。

因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试后我也没有心情继续整理了)。

希望能对大家有帮助。

1. 模式 SCHEMA

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

eg:

 CREATE SCEMA"S-T" AUTHORIZATION WANG;

Note:

 用户可以在定义模式的同时创建基本表、视图,定义授权:

  CREATE SCHEMA<模式名> AUTHORIZATION <用户名> [<表定义子句>|

  <视图定义子句>|<授权定义子句>];

  eg:

   CREATE SCHEMA TEST AUTHORIZATION ZHANG

   CREATE TABLE TAB1

    ( COL1 SMALLINT,

      COL2 INT,

      COL3 CHAR(20),

      COL4 NUMERIC(10,3),

      COL5 DECIMAL(5,2)

    );

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

eg:

 DROP SCHEMA ZHANG CASCADE;

Note:

 CASCADE --> 级联 --> 连带将模式中的数据库对象都删除

 RESTRICT -> 限制 --> 有下属数据库对象时,不删除

2. 表 TABLE

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

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

                          ...

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

eg:

 CREATE TABLE Course

  ( Cno CHAR(4) PRIMARY KEY,

    Cname CHAR(20) UNIQUE,

    Cpno CHAR(4),

    Ccredit SMALLINT,

    FOREIGN KEY (Cpn) REFERENCES Course(Cno)

  );

Note:

 1.PRIMARY KEY (Sno,Cno)

 2.UNIQUE(Cname)

 3.“主码”同时也可以是“外码”

 4.“数据类型”见 P83

 5.定义“表”所属“模式”:

    显示给出模式名:

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

    显示当前搜索路径:

     SHOW searched_path;

     默认值:$user,PUBLIC

    数据库管理员设置搜索路径:

     SET searched_path TO "S-T",PUBLIC;

DROP TABLE <表名> <CASCADE|RESTRICT>;

Note:
 1.CASCADE --> 级联 --> 连带将模式中的数据库对象都删除
    RESTRICT -> 限制 --> 有下属数据库对象时,不删除
 2.默认:RESTRICT

ALTER TABLE <表名>
[ ADD [COLUMN] <新列名> <数据类型> [完整性约束] ]
[ ADD <表级完整性约束> ]
[ DROP [COLUMN] <列明> <CASCADE|RESTRICT> ]
[ DROP CONSTRAINR <完整性约束名> [RESTRICT|CASCADE] ]
[ ALTER COLUMN <列名> <数据类型> ];

Note:
DROP [COLUMN] <列名> <CASCADE|RESTRICT> 中:
CASCADE --> 自动删除引用了该列的其它对象,如视图
RESTRICT -> 如果该列被其它对象引用,则不删除

3. 视图 VIEW

CREATE VIEW <视图名> [<列名>[,<列名>]...]
AS
<子查询>
[ WITH CHECK OPTION ];

eg:

 CREATE VIEW IS_S1(Sno,Sname,Grade)

 AS

 SELECT Student.Sno,Sname,Grade

 FROM Student.SC

 WHERE Sdept='IS'

   AND Student.Sno=SC.sno

   AND SC.Cno='1';

Note:

 1.WITH CHECK OPTION --> 对视图进行数据操纵(UPDATE、INSERT、DELETE)

   操作时要保证更新、插入、删除的行满足视图定义中<子查询>表达式

 2.属性列名要么全指定,要么全省略

   省略时默认由<子查询>中各个列的诸字段组成

     以下3种情况必须显示指出视图的所有列名:

    1) <子查询>中对应的列名是聚集函数或列表达式

    2) 多表连接时,选出的视图字段在多个表中是同名字段

    3) 需要在视图中为该列启用新的名字

DROP VIEW <视图名> [CASCADE];

eg:

 DROP VIEW IS_S1 CASCADE;

Note:

 CASCADE --> 级联 --> 将由该视图导出的所有视图都删除

猜你喜欢

转载自www.cnblogs.com/daheww/p/10495030.html