SQL的数据定义包括数据库定义、表定义、视图和索引的定义,一个关系数据库管理系统的实例中可以建立多个数据库,一个数据库中通常包括多个表、视图、索引等。
在下文给出的SQL语句中,均先给出语句框架,再通过实例来帮助理解
1 数据库
1.1 创建数据库
CREATE DATABASE <数据库名> CHARACTER SET <字符集>;
CREATE DATABASE `csdn`;
CREATE DATABASE `csdn` CHARACTER SET 'gbk';
1.2 删除数据库
DROP DATABASE <数据库名>;
DROP DATABASE `csdn`;
2 表
2.1 创建表
CREATE TABLE <表名>
(
<列名> <数据类型> [列级完整性约束条件],
<列名> <数据类型> [列级完整性约束条件],
...
<列名> <数据类型> [列级完整性约束条件],
<表级完整性约束条件>
);
以创建学生表为例,通常我们在使用一个数据库时应使用USE指定数据库,若不指定,则创建的表将位于当前系统默认的数据库下;也可以在创建表时在表名前加上<数据库名>.来指定:
USE csdn;
CREATE TABLE student
(
Sno CHAR(9) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT
);
CREATE TABLE csdn.student
(
Sno CHAR(9) PRIMARY KEY,
Sname VARCHAR(20) NOT NULL,
Ssex CHAR(2),
Sage SMALLINT
);
表级完整性约束条件通常会在主码由多个属性组成或指定外码时使用,以学生选课表为例(注意创建学生选课表之前需要先创建好课程表喔,同学生表的创建类似),学生选课表的主码由Sno和Cno组成,且Sno和Cno为外码,分别为学生表和课程表的主码:
CREATE TABLE sc
(
Sno CHAR(9),
Cno CHAR(4),
Grade SMALLINT,
PRIMARY KEY(Sno,Cno),
FOREIGN KEY (Sno) REFERENCES student(Sno),
FOREIGN KEY (Cno) REFERENCES course(Cno)
);
2.2 删除表
DROP TABLE <表名>;
DROP TABLE csdn.student;
2.3 修改表
- ADD COLUMN 用于增加新列
- DROP COLUMN 用于删除列
- ALTER、MODIFY、CHANGE 均可以用于修改列属性
- ADD 还可增加表级完整性约束条件
ALTER TABLE <表名>
ADD COLUMN <新列名> <数据类型> [列级完整性约束条件],
DROP COLUMN <列名>,
ALTER COLUMN <列名> <数据类型> [列级完整性约束条件],
MODIFY COLUMN <列名> <数据类型> [列级完整性约束条件],
CHANGE COLUMN <旧列名> <新列名> <数据类型> [列级完整性约束条件],
ADD [表级完整性约束条件];
以修改学生表为例,下列语句可以实现删除Ssex列,将Sname的数据类型改为char(20),增加Sdept列且数据类型为char(20)。
ALTER TABLE csdn.student
DROP COLUMN Ssex,
MODIFY COLUMN Sname char(20),
ADD COLUMN Sdept char(20);
如果还想修改列的名称(同时也可以修改数据类型),则可以使用CHANGE语句:
ALTER TABLE csdn.student
CHANGE COLUMN Sdept Dept varchar(30);
3 视图
视图是数据库中的一种重要机制,它是从一个或几个基本表(或视图)导出的表,是一个虚表!数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表。
3.1 创建视图
- 子查询是SELECT语句
- WITH CHECK OPTION 对视图的增删改操作进行检验,保证其满足子查询的条件
CREATE VIEW <视图名> [(<列名>[,<列名>]...)]
AS
<子查询>
[WITH CHECK OPTION]
例如,创建计算机学院学生的视图:
CREATE VIEW CS_student
AS
SELECT Sno,Sname,Sage
FROM Student
WHERE Sdept='CS'
WITH CHECK OPTION;
3.2 删除视图
DROP VIEW <视图名>;
DROP VIEW csdn.CS_student;
实际上,视图的创建、删除、查询、更新等还涉及许多进一步的规定,在数据定义部分我们仅简单提一下视图创建和删除的基本操作。
4 索引
建立索引是加快数据库查询速度的有效手段,用户可以根据需要在基本表上建立一个或多个索引,以避免全表扫描。但是索引也需要占据一定的存储空间,而且当表更新时,索引也要进行相应的更新,因此要根据实际需要有选择地创建索引。一般来说,目前索引是关系数据库管理系统的内部实现技术,因此用户不用太操心。
关于MySQL中数据定义方面的SQL语言就简单整理以上这些啦~