SQL从入门到放弃系列——DDL建库和建表[四]

2019年6月21日00:58:43 发表评论 195
摘要

了解DDL基础语法。
使用DDL定义数据表时,都有哪些约束性。
使用DDL设计数据库时,都有哪些重要原则。

DDL的基础语法和设计工具

DDL(Data Definition Language)数据定义语言。它定义了数据库的结构和表的结构。

在DDL中,常用功能是增删改,分别对应create,drop,alter。在执行DDL时,不需要commit就可以完成任务。

对数据库进行定义

CREATE DATABASE nba;
DROP DATABASE nba;

对数据表进行定义

CREATE TABLE table_name;

 

创建表结构

一般使用Navicat,表结构转储为SQL文件后,发现表名和字段名都使用了反引号,这是为了避免它们的名称和MySQL保留字段相同。

CREATE TABLE `player` ( `pla...

建表例子:

CREATE TABLE player (
	player_id INT (11) NOT NULL auto_increment,
	player_name VARCHAR (255) NOT NULL
);

 

修改表结构

添加字段

ALTER TABLE player ADD (age INT(11));

修改字段名

ALTER TABLE player rename COLUMN age TO player_age;

修改字段数据类型

ALTER TABLE player MODIFY (player_age float(3,1));

删除字段,删除刚添加的player_age字段

ALTER TABLE player DROP COLUMN player_age;

 

数据表常见约束

创建数据表时对字段进行约束的目的在于保证RDBMS里面数据的准确性和一致性。

常见约束如下:

主键约束(primary key)

unique+not null

外键约束(foreign key)

确保表与表之间引用的完整性。一张表的外键是另一张表的主键。可重复,可为空。

唯一性约束(unique)

除主键外,对其他字段进行唯一性约束。

唯一性约束和普通索引(normal index)之间有区别:唯一性约束相当于创建了一个约束和普通索引,目的是保证字段的正确性;普通索引只是提升数据检索的速度,并不对字段的唯一性进行约束。

NOT NULL约束(not null)

定义字段必须有值不为空。

DEFAULT(default)

表明字段默认值。

CHECK约束

用于检查特定字段取值范围的有效性。CHECK约束的检查结果不能为false,例如对身高、年龄的数值进行CHECK约束。

 

设计数据表的原则

数据表越少越好

RDBMS的核心在于对实体和联系的定义,也就是E-R图。数据表越少,证明实体和联系设计的越简洁,方便理解和操作。

表中字段越少越好

字段越多,数据冗余的可能性越大。这个是相对的,通常在数据冗余和检索效率中进行平衡。

表中联合主键的字段个数越少越好

设置主键目的是确定唯一性,当一个字段无法确定唯一性的时候,就要采用联合主键的方式。联合主键的字段越多,占用索引空间越大,不仅会增加理解难度,还会增加运行时间和索引空间。

使用主键和外键个数越多越好

数据库的设计实际就是定义各种表,以及各种字段间的关系。关系越多,说明实体之间的冗余度越低,利用度越高。这样不仅保证了数据表之间的独立性,还能提升相互之间的关联使用率。

 

关于外键的争议

SQL从入门到放弃系列——DDL建库和建表[四]

(本文完)

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
  • A+
所属分类:SQL

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: