
DDL的基础语法
在 DDL 中,我们常用的功能是增删改,分别对应的命令是 CREATE、DROP 和 ALTER。需要注意的是,数据库一旦创建,名称将不可以更改。
1.对数据库进行定义
CREATE DATABASE nba; // 创建一个名为 nba 的数据库
DROP DATABASE nba; // 删除一个名为 nba 的数据库
2.对数据表进行定义,需要注意的是,创建数据表时,至少要定义好一个字段。语句最后以分号‘;’作为结束符,最后一个字段的定义结束后没有逗号。
(1)创建数据表
CREATE TABLE player(
name varchar(255)
);//创建一个名叫player的数据表
字段常用数据类型:
char(n) 固定长度字符串,用户指定长度n;
varchar(n) 可变长度的字符串,用户指定最大长度n;
int 整数类型
float(n) 浮点数,精度至少为n位
nummeric(p,d) 定点数,精度由用户指定。这个数有p位数字(加上一个符号位),其中d位数字在小数点的右边。
字段的七大约束:
a.PRIMARY KEY约束: NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。需要注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。总结起来就是,一张表只有一个非空唯一的键,定义它为主键。
CREATE TABLE Persons(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
);
b.FOREIGN KEY约束:保证一个表中的数据匹配另一个表中的值的参照完整性。
CREATE TABLE Orders(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_ID)
);
c.UNIQUE约束:保证某列的每行必须有唯一的值。
CREATE TABLE Persons(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id,Address)
) ;
d.NOT NULL 约束:指示某列不能存储 NULL 值。
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
e.DEFAULT约束:规定没有给列赋值时的默认值。
CREATE TABLE Persons(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'
) ;
f.CHECK 约束:保证列中的值符合指定的条件。
CREATE TABLE Persons(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
) ;
(2)修改数据表
a.添加字段,比如我在数据表中添加一个 age 字段,类型为int(11);
ALTER TABLE player ADD (age int(11));
b.修改字段名,将 age 字段改成player_age;
ALTER TABLE player RENAME COLUMN age to player_age;
c. 修改字段的数据类型,将player_age的数据类型设置为float(3,1)
ALTER TABLE player MODIFY (player_age float(3,1));
d.删除字段, 删除刚才添加的player_age字段
ALTER TABLE player DROP COLUMN player_age;
3.设计数据表的原则
“三少一多”原则:简单可复用,简单指的是用更少的表、更少的字段、更少的联合主键字段来完成数据表的设计。可复用则是通过主键、外键的使用来增强数据表之间的复用率。因为一个主键可以理解是一张表的代表。键设计得越多,证明它们之间的利用率越高。
1.数据表的个数越少越好
RDBMS 的核心在于对实体和联系的定义,也就是 E-R 图(Entity Relationship Diagram),数据表越少,证明实体和联系设计得越简洁,既方便理解又方便操作。
2.数据表中的字段个数越少越好
字段个数越多,数据冗余的可能性越大。设置字段个数少的前提是各个字段相互独立,而不是某个字段的取值可以由其他字段计算出来。当然字段个数少是相对的,我们通常会在数据冗余和检索效率中进行平衡。
3.数据表中联合主键的字段个数越少越好
设置主键是为了确定唯一性,当一个字段无法确定唯一性的时候,就需要采用联合主键的方式(也就是用多个字段来定义一个主键)。联合主键中的字段越多,占用的索引空间越大,不仅会加大理解难度,还会增加运行时间和索引空间,因此联合主键的字段个数越少越好。
4.使用主键和外键越多越好
数据库的设计实际上就是定义各种表,以及各种字段之间的关系。这些关系越多,证明这些实体之间的冗余度越低,利用度越高。这样做的好处在于不仅保证了数据表之间的独立性,还能提升相互之间的关联使用率。
-----整理自《极客时间》,《菜鸟教程》,《数据库系统概念》,侵权删