暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL数据库学习笔记:(二)数据库定义语言DDL

编程思录 2018-09-25
1324
点击上方蓝色字关注啃饼小记~

数据库定义语言

它主要用于定义关系数据库的模式,外模式和内模式,以实现对关系数据库的基本表,视图以及索引文件的定义
、修改和删除等操作。说的简单一点就是数据库的基本表,索引,视图及存储文件的定义,修改和删除你都会用到它。

数据库

1.创建数据库
语法格式
 CREATE DATABASE <数据库名>
实例
 create database 学生管理

2.修改数据库
语法格式
 ALTER DATABASE <数据库名>
实例
 alter database 学生管理

3.撤销(删除)数据库
语法格式
 DROP DATABASE <数据库名>
实例
 drop database 学生管理

基本表

创建基本表

语法格式
 CREATE TABLE <表名>(<列名><数据类型>[<列级完整性约束条件>]
[,<列名>[<数据类型>[<列级完整性约束条件>]]...]
[<列级完整性约束条件>]);
实例

create table 学生(
学号 char(6),
姓名 char(10),
性别 char(2),
年龄 smallint,
班级号 char(5));

create table 课程(
课程号 char(6),
课程名 char(20),
学分 smallint,
周学时 smallint);

create table 考试(
学号 char(6),
课程号 char(6),
成绩 smallint);

完整性约束

1.primary key约束 :也称主键约束,用于定义主键,保证主键的唯一性和非空性。
语法格式

1、primary key直接写在列名及其类型之后

create table 学生(
学号 char(6) primary key,
姓名 char(10),
性别 char(2),
年龄 smallint,
班级号 char(5));

2、primary key直接在相应的列名及其类型后单独列出
CONSTRAINT <约束名> PRIMARY KEY

create table 学生(
学号 char(6) constraint pk_kch primary key,
姓名 char(10),
性别 char(2),
年龄 smallint,
班级号 char(5));

3、在create table语句列出基本表的所有列之后,再附加一个声明
PRIMARY KEY(<列名1>[,<列名2>,...n])

create table 考试(
学号 char(6),
课程号 char(6),
成绩 smallint,
constraint pk_ks primary key(学号,课程号));

2.foreign key约束 :也称外键约束,用于维护两个基本表之间的一致性关系。
语法格式

1、如果外键只有一列,可以在它的列名和类型后面直接用references说明它参照了某个基本表的某些列(必须是主键)
REFERENCES <表名>(<列名>)

2、在属性列表后面增加一个或者几个外键说明
FOREIGN KEY (<列名>) REFERENCES <表名>(<列名>)

3、在相应列名及其类型后单独列出并指定约束名
CONSTRAINT <约束名> FOREIGN KEY (<列名>) REFERENCES <表名>(<列名>)

create table 考试(
学号 char(6),
课程号 char(6),
成绩 smallint,
constraint pk_ks1 primary key(学号,课程号)
constraint pk_sk2 foreign key (学号) references 学生(学号)
constraint pk_sk3 foreign key (课程号) references 课程(课程号));

3.unique 约束: 唯一性约束,注意它和主键约束的区别。
(A) unique 约束,主要用在非主键的一列或者多列要求数据唯一的情况。
(B) unique 约束,允许在该列上存在NULL值,而主键绝不允许出现这种情况。
(C) 可以在一个表上设置多个unique约束,而在一个表上只能设置一个主键。
语法格式
列级unique约束
 CONSTRAINT <约束名> UNIQUE

create table 学生(
学号 char(6) primary key,
姓名 char(10) constraint un_xm unique,
性别 char(2),
年龄 smallint,
班级号 char(5));

表级unique约束
 CONSTRAINT <约束名> UNIQUE(<列名>[,<列名2>,...])

create table 课程(
课程号 char(6),
课程名 char(20),
学分 smallint,
周学时 smallint,
constraint un_one unique(课程名,学分));

4.check 约束: 检查约束,维护域的完整性。
语法格式

CONSTRAINT <约束名> CHECK (<约束条件表达式>)

create table 学生(
学号 char(6) primary key,
姓名 char(10),
性别 char(2),
年龄 smallint constraint ch_nl check (年龄>= 20 and 年龄<= 65),
班级号 char(5));

5.NULL 或NOT NULL 约束: 是否允许值为空,前者允许,后者不允许。

修改基本表

语法格式

ALTER TABLE <表名> [ADD <新列名> <数据类型> [ <完整性约束> ] [,...n] ]
[DROP [[[CONSTRAINT]<约束名>] | [COLUMN <列名>]] [,...n]】
[MODIFY <列名> <数据类型> [,...n] ]

alter table 学生 add 入学时间 datetime;

alter table 课程 drop column 周学时;

alter table 考试 drop constraint pk_ks2;

撤销基本表

注意
一旦撤销就无法恢复,除非事先有备份。不能用它撤销系统表。
语法格式

DROP TABLE <表名>

索引

创建索引

语法格式

CREATE [UNIQUE] [CLUSTERED] INDEX <索引名> ON <表名> (<列名1>[<次序1>],<列名2>[<次序2>],...)
[UNIQUE]该索引的每一个索引值只对应唯一的数据记录:[CLUSTERED] 聚簇索引,SQL server专用。其中,升序ASC ,降序DESC ,默认为升序排列,可不写。

create unique clustertd index idx_xh on 学生(学号);

create unique index idx_kch on 课程(课程号);

create unique clustertd index idx_xh_kch on 考试(学号 desc, 课程号 asc);

撤销索引

语法格式

DROP INDEX <索引名> [,...n]

drop index 课程.idx_kch ,考试.idx_xh;

视图

创建视图

语法格式

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

create view view_001
as select 学号,姓名,年龄,班级号
from 学生
where 班级号="01001";

撤销视图

语法格式

DROP VIEW <视图名>

查询视图

因为查询视图实际上就是对基本标的查询,所以方法和前面一样,不另加赘述。

存储过程

创建存储过程

语法格式

CREATE PROC[EDURE] <存储过程名> [RECOMPILE |ENCRYPTION | RECOMPILLE,ENCRYPTION] AS <SQL语句序列>
[RECOMPILE] 表示每次执行存储过程时,都要对其进行重新编译和优化
[ENCRYPTION] 表示隐藏存储过程的文本

create proc proc_boy with recompile,encryption
as
select 学号,姓名,年龄
from 学生
where 班级号="01001" and 性别="男";

修改存储过程

语法格式

ALTER PROC[EDURE] <存储过程名> [RECOMPILE |ENCRYPTION | RECOMPILLE,ENCRYPTION] AS <SQL语句序列>
注意
一次只能修改一个存储过程。

撤销存储过程

语法格式

DROP PROCEDURE <存储过程名>[,...n]

总结一下

数据库定义语言DDL就是对数据库(database),基本表(table),视图(view),索引(index),存储过程(procedure)进行创建(create),修改(alter),撤销(或删除)(drop)的语言。

写在后面

今天关于数据库的定义语言就写到这里了,下次笔记就介绍一下数据库中用于数据管理的语言DML。

今天的分享就到这里了,如果你有任何不懂的问题,可以发信息或者留言喽。

长按识别二维码关注

THANK YOU

Design by Envse

最后修改时间:2019-12-16 10:20:46
文章转载自编程思录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论