


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