数据库学习 SQL的数据定义(DDL)

SQL语言的数据定义部分,也被称为DDL,包括对SQL模式(Schema)、基本表(关系,Table)、视图(View)、索引(Index)的创建和撤销操作。
表又称作关系,行又称作记录、元祖,列又称为属性、字段
CREATE可以用来创建SQL模式、基本表、视图和索引等。
DROP可以用来撤销SQL模式、基本表、视图和索引等。
ALTER可以用来修改SQL模式、基本表、视图和索引等。

SQL模式的创建和撤销

一个SQL模式定义为基本表的集合。一个SQL模式由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引)的定义。

SQL模式的创建:

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>
但是由于“SQL模式”这个名称学术味太浓,因此大多数DBMS中不愿采用这个名称,而是用“数据库(Database)”这个名词,因此创建语句往往为:
CREATE DATABASE <模式名>
SQL Server 2008 R2例子:
这里写图片描述

SQL模式的撤销:

DROP SCHEMA <模式名> [CASCADE|RESTRICT]
撤销方式有两种,CASCADE(连锁式)方式将会把SQL模式及其下属的基本表、视图、索引等所有元素全部撤销;RESTRICT(约束式)方式只有当SQL模式中没有任何下属元素时,才能撤销SQL模式,否则拒绝执行DROP语句。
SQL Server 2008 R2例子:
这里写图片描述

SQL提供的基本数据类型

数值型

INT或INTEGER 全字长二进制整数
SMALLINT 半字长二进制整数
DEC(p[,q])或压缩十进制数,共p位,其中小数点后有q位,
FLOAT 双字长的浮点数
CHAR(n)或CHARTER(n) 长度为n的定长字符串
VARCHAR(n) 最大长度为n的变长字符串
DATE 日期型,格式为YYYY-MM-DD
TIME 时间型,格式为HH.MM.SS

基本表的创建、修改和撤销

基本表的创建

CREATE TABLE <表名>
(<列名1> <类型> [<该列的完整性约束>]
[ ,<列名2> <类型> [ <该列的完整性约束>]]…
[<,表级完整性约束>])

<该列的完整性约束>:该列上数据必须符合的条件。最常见的有:
NOT NULL 该列值不能为空
NULL 该列值可以为空
UNIQUE 该列值不能有相同者
DEFAULT 该列上某值未定义时的默认值
<表级完整性约束>:对整个表的一些约束条件,常见的有定义主码(外码),各列上数据必须符合的关联条件等。
主键是作为表的行的唯一标识的候选关键字,主键子句为:
PRIMARY KEY(主键名)
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。由此可见,外键表示了两个关系之间的相关联系,并可以作为参照关系,外键子句为:
FOREIGN KEY(外键名) REFERENCES <参照表名>(参照的主键)

SQL Server 2008 R2例子:
创建学生表S:学号,姓名,性别,出生日期,籍贯,手机号码,院系号

CREATE TABLE S
(
    xh CHAR(4) NOT NULL,
    xm CHAR(20) NOT NULL,
    xb CHAR(2) NOT NULL,
    csrq DATE NOT NULL,
    jg CHAR(20) NOT NULL,
    sjhm CHAR(11) NOT NULL,
    yxh CHAR(2) NOT NULL,
    PRIMARY KEY(xh)
);

创建院系表D:院系号,名称,地址,联系电话;

CREATE TABLE D
(
    yxh CHAR(2) NOT NULL,
    mc CHAR(20) NOT NULL,
    dz CHAR(20) NOT NULL,
    lxdh CHAR(8) NOT NULL,
    PRIMARY KEY(yxh)
);

创建教师表T:工号,姓名,性别,出生日期,学历,基本工资,院系编号;

CREATE TABLE T
(
    gh CHAR(4) NOT NULL,
    xm CHAR(20) NOT NULL,
    xb CHAR(2) NOT NULL,
    csrq DATE NOT NULL,
    xl CHAR(10) NOT NULL,
    jbgz FLOAT(2) NOT NULL,
    yxh CHAR(2) NOT NULL,
    PRIMARY KEY(gh)
);

创建课程表C:课号,课名,学分,学时,院系号;(默认学分4,学时40)

CREATE TABLE C
(
    kh CHAR(8) NOT NULL,
    km CHAR(20) NOT NULL,
    xf INT NOT NULL,
    xs INT NOT NULL,
    yxh CHAR(2) NOT NULL,
    PRIMARY KEY(kh)
);

创建开课表O:学期,课号,工号,上课时间

CREATE TABLE O
(
    xq CHAR(20) NOT NULL,
    kh CHAR(8) NOT NULL,
    gh CHAR(4) NOT NULL,
    sksj CHAR(20) NOT NULL,
    PRIMARY KEY(kh,gh),
    FOREIGN KEY(kh) REFERENCES C(kh),
    FOREIGN KEY(gh) REFERENCES T(gh),
);

创建选课表E:学号,学期,课号,工号,平时成绩,考试成绩,总评成绩;(成绩范围1-100)

CREATE TABLE E
(
    xh CHAR(4) NOT NULL,
    xq CHAR(20) NOT NULL,
    kh CHAR(8) NOT NULL,
    gh CHAR(4) NOT NULL,
    pscj INT,
    kscj INT,
    zpcj INT,
    PRIMARY KEY(xh,kh,gh),
    FOREIGN KEY(xh) REFERENCES S(xh),
    FOREIGN KEY(kh) REFERENCES C(kh),
    FOREIGN KEY(gh) REFERENCES T(gh),
);

这里写图片描述

基本表的修改和撤销

基本表的结构是可以随环境的变化而修改的,即根据需要增加、修改或删除其中一列(或完整性约束条件等)。
ALTER TABLE<表名>
[ADD <列名> <数据类型>[完整性约束]]
[DROP <列名>]
[MODIFY <列名> <数据类型>[完整性约束]]

增加新属性

ALTER TABLE <基本表名> ADD <新属性名> <新属性类型>
SQL Server 2008 R2例子:

ALTER TABLE T ADD jg CHAR(20)
删除原有属性

ALTER TABLE <基本表名> DROP <属性名> [CASCADE|RESTRICT]
这里CASCADE和RESTRICT的作用与DROP中相同

ALTER TABLE T DROP jg 
基本表的撤消

DROP TABLE <表名> [CASCADE|RESTRICT]

DROP TABLE T

索引的创建和撤消

在一个基本表上,可建立若干索引。有了索引,可以加快查询速度。

索引的建立

CREATE[UNIQUE]INDEX <索引名>
ON <表名> ( <列名> [ASC|DESC])…
本语句为规定<表名>建立一索引,索引名为<索引名>。
UNIQUE表示此索引的每一个索引值只对应唯一的数据记录,ASC表示索引值按升序排列,DESC表示索引值按降序排列,默认为ASC。
SQL Server 2008 R2例子:
在学生表中建立索引idx1:院系号升序,姓名降序
在课程表中建立索引idx2:课名

CREATE INDEX idx1
ON S
(
    yxh ASC,
    xm DESC
);
CREATE INDEX idx2
on C
(
    km
);

这里写图片描述

索引的删除

DROP INDEX <索引名>
本语句将删除规定的索引。该索引在数据字典中的描述也将被删除。

猜你喜欢

转载自blog.csdn.net/q418030645/article/details/78806917