第二章 数据库表的相关操作
2.1 定义逻辑库、数据表
SHOW TABLES; # 查看逻辑空间中有那些表
DESC student; # 查看表的结构
SHOW CREATE TABLE student; # 查看建表的sql语句
2.2 mysql数据类型
2.2.1 数字
十进制的浮点数转换成二进制的浮点数会损失精度,重要的数据比如钱,应该使用DECIMAL类型
DECIMAL类型是使用字符串保存的,不会损失精度。
2.2.2 字符串
后三种不能规定最大字符数量,VARCHAR可以规定
正常情况使用VARCHAR就够了,如果字符过多,MySQL读写速度将下降,应该使用NoSQL进行存储和读写。
2.2.3 日期类型
2.3 修改数据表的结构
2.3.1 添加字段
ALTER table student
ADD address VARCHAR(20) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;
2.3.2 修改字段类型和约束
ALTER table student
MODIFY home_tel VARCHAR(20) NOT NULL;
DESC student;
2.3.3 修改字段名称
ALTER table student
CHANGE address home_address VARCHAR(20) NOT NULL;
DESC student;
2.3.4 删除字段
ALTER table student
DROP home_address,
DROP home_tel;
DESC student;
2.4 字段约束
2.4.1 数据库范式
- 构造数据库必须遵守一定的规则,这种规则就是范式
- 目前关系数据库有6种范式,一般情况下,只满足第三范式即可
满足第三范式已经满足第一和第二范式
因为主键的检索速度是非常快的,满足第三范式可以提高数据库的查询效率。
2.4.2 字段约束
MySQL中没有BOOLEAN类型,会映射成TINYINT,TRUE映射成1,FALSE映射成0。
CREATE TABLE t_teacher(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
tel VARCHAR(20) NOT NULL UNIQUE,
married BOOLEAN NOT NULL DEFAULT FALSE
);
真实生产环境一定不能使用外键约束
2.5 索引
索引机制就是提升检索速度的。
2.5.1 创建索引
两种添加索引的时机:
- 建表的时候创建索引
- 添加记录的时候添加索引
CREATE TABLE t_message (
id INT UNSIGNED PRIMARY KEY,
content VARCHAR(200) NOT NULL,
type ENUM("公告","通报","个人通知") NOT NULL,
create_time TIMESTAMP NOT NULL,
INDEX idx_type(type)
);
2.5.2 添加和删除索引
DROP INDEX idx_type on t_message;
SHOW INDEX FROM t_message;
CREATE INDEX idx_type on t_message(type);
SHOW INDEX FROM t_message;