DDL
Data Definition Language 数据定义语言
-
定义数据库结构
-
定义数据表结构
-
增 GREATE
-
删 DROP
-
改 ALTER
注意:DDL在事务过程中会自动COMMIT
eg.
定义
数据库定义:
CREATE DATABASE base_name;
DROP DATABASE base_name;
数据表定义:
CREATE TABLE table_name;
创建用户表user name为varcher(255) id为int 且id为自增
GREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT,
name varcher(255) NOT NULL
);
完整语句:
DROP TABLE IF EXISTS 'user';
CREATE TABLE user (
'id' int(11) NOT NULL,
'name' varcher(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
'height' float(3,2) NULL DEFAULT 0.00,
PRIMARY KEY ('id') USING BTREE,
UNIQUE INDEX 'name'('name') USING BTREE,
)ENGINE = InnoDB CHARACTER SET = UTF8 COLLATE = utf8_general_ci ROW_FORMAT=Dynamic;
创建之前删除:
DROP TABLE IF EXISTS 'user';
字符集utf8
name varcher(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
排序规则:
utf8_general_ci
表示对大小写不敏感utf8_bin
表示对大小写敏感
设置主键:
PRIMARY KEY ('id') USING BTREE
将id设置为主键,并且是同BTREE的方式建立索引
将name字段添加唯一索引(UNIQUE)同时也使用BTREE的方式建立索引
数据库引擎使用InnoDB
全局字符集utf8,排序规则utf8_general_ci
,行格式为Dynamic
修改
- 添加字段
ALTER TABLE user ADD (age int(11));
- 修改字段名
ALTER TABLE user RENAME COLUMN age to user_age;
- 修改字段格式
ALTER TABLE user MODIFY (age float(3,1));
- 删除字段
ALTER TABLE user DROP COLUMN age;
常见约束
- 主键约束 (唯一,非空,有且仅有一个,可以是一个字段也可以是多个字段的总和)
- 外键约束 (确保表与表之间的完整性,可重复,可为空)
- 唯一性字段约束(唯一, 可为空)
- 非空约束 (非空)
- 默认约束 (DEFAULT 定义默认值)
- CHECK约束 (定义字段值的有效范围)
数据表的设计原则
- 保证数据正确性,插入删除更新的时候如何约束验证?
- 降低数据表的冗余量
- 使用方便
- 数据表个数越少越好
- 表越少,数据结构越简洁
- 数据表中字段数越少越好
- 字段少冗余程度小
- 数据表中的联合字段索引越少越好
- 联合索引过多,占用空间越大,对性能影响越大,理解程度也会增加
- 主键和外键的使用越多越好
- 键用的多,代表利用率高 (争议,权衡性能和数据正确性)/