数据库原理与应用-----------------关系数据库的标准查询语言SQL(一)

1.SQL中的数据定义

  SQL支持关系数据库系统的三级模式结构,其模式,外模式和内模式的基本对象有表,视图和索引。

1.1基本表的定义

(1)建表

CREATE TABLE <表名> (

  <属性列名1><数据类型>[<列级完整性的约束条件>];

 <属性列名2><数据类型>[<列级完整性的约束条件>];

  <属性列名3><数据类型>[<列级完整性的约束条件>];

                          ...............

  <属性列名n><数据类型>[<列级完整性的约束条件>];

 [<表级的完整性约束条件>]

);

例如,

CREATE TABLE Student(表名) (

    Sid char(6) not null,  //定义学号Sid,并且不为空

    Sname char(20) not null,  //定义学生名字,并且不为空

    PRIMARY KEY(Sid)    //定义Sid为表级约束,为这个表的主键(主键的介绍下面会说)

);


(2)SQL提供的主要数据类型


(3)完整性的约束条件

 1)实体完整性定义

   主键的建立语法:

    PRIMARY KEY  <属性列组>

(注意,主键可以是一个属性,也可以多个属性)

  设置为主键后,每次插入数据或者对主键进行更新时,RDBMS会按照实体完整性规则进行检查:

   a. 主键是否唯一,如果不唯一就拒接插入或者修改;

  b. 主键是否为空,只要有一个为空就拒接插入或修改。

 2)参照完整性定义

创建外键语法:

    FOREIGN KEY(<外键>) REFERENCES <被参照在表名>(<与外键对应的主键名>)

注意,为保证完整性的实现,需要在定义表时进行约束定义:

  a. ON DELETE{ CASCADE | NO ACTION }: 当删除被参照表的元组(某一主键值)时,参照表中的所有关联元组产生级联操作(也被删除)或被拒接执行。

  b. ON UPDATE  { CASCADE | NO ACTION } : 当修改被参照表中元组的主键时,参照表中的所有关联元组产生级联操作(对应的外键值夜被修改)或拒接执行。


例如,

CREATE TABLE SC (

  SNO CHAR(6) NOT NULL,

  CNO CHAR(6) NOT NULL,

GRADE DEC(4,1) DEFAULT NULL,

PRIMARY KEY(SNO,CNO),                      //在表级定义主键

FOREIGN KEY(SNO) REFERENCES S(SNO)        //定义外键SNO,参照关系S的主键SNO

ON UPDATE CASCADE                               //当修改S的SNO时,级联修改SC中相应的元组

ON DELETE ON ACTION,                          //当删除S的元组会破坏参照完整性时拒接执行

FOREIGN KEY(CNO) REFERENCES C(CNO)                         // 定义外键CNO,参照关系C的主键CNO

ON UPDATE CASCADE                                         //当修改C的CNO时,级联修改SC中相应的元组

ON DELETE NO ACTION,                                   //当删除C的元组会破坏参照完整性时拒接执行

CHECK(GRADE BETWEEN 0.0 AND 100.0));               //定义GRADE的取值在0.0到100.0之间

 3)用户定义完整性

常见的用户定义的完整性约束有:

  a. NOT NULL 或 NULL 约束:NOT NULL 约束下不应许属性值为空,而NULL 约束应许属性值为空。

  b. UNIQUE约束: 为唯一性约束,即不应许属性列中出现重复的属性值。

  c. DEFAULT约束: 为默认值约束。

  d. CHECK约束: 为检查约束。


(4)基本表的修改

 1)增加列或表约束规则

ALTER    TABLE   <表名>   ADD   <属性列名><数据类型>[完整性约束] | <完整性约束>;

例如,ALTER TABLE Student ADD Sbirthday CHAR(20) NOT NULL;

 2)删除原有的列或约束规则

ALTER    TABLE    <表名>

    DROP       {  [CONSTRATNT]<完整性约束> | COLUMN<属性列名> 

                       [CASCADE | RESTRICT] };

CASCADE:  表示在基表中删除某属性列时,所有引用该列的视图和约束也被自动删除。

RESTRICT:  在没有视图或约束引用该属性时,才能被删除。


 3)修改原有列的类型

ALTER    TABLE    <表名>     ALTER     COLUMN        <属性列名><数据类型>;

例如,

a,  在学生表S中加入表示学生所在系SD的属性列。

ALTER   TABLE   S   ADD   SD   CHAR(16);

b,  在学生关系表S补充定义SND为主键。

ALTER  TABLE   S   ADD   PRIMARY   KEY(SNO);

c,  删除基表S中学生的性别SEX属性列。

ALTER   TABLE   S  DROP   COLUMN   SEX;

d,  将基表S中的学生姓名SN长度修改为12.

ALTER    TABLE   S   ALTER   COLUMN   SN   CHAR(12);


(5)基本表的删除

删除表的语法:

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

CASCADE:  表示该表删除没有条件限制。(在删除表的同时,在该表建立的视图和索引等也都会被删除)

RESTRICT:  表示该表的删除是有限制的,如果存在依赖该表的对象,则该表不能被删除。即如果要删除的基本表不能被其他     表的约束所引用,不能有视图,触发器,存储过程或函数等。且该项为默认项。

本文章参考宋金玉 陈萍 陈刚 编著《数据库原理与应用》

猜你喜欢

转载自blog.csdn.net/mr_police/article/details/80651518