Java工程师-15-16周MySQL基础-第二章(数据库表的相关操作)

120 阅读2分钟

第二章 数据库表的相关操作

image.png

2.1 定义逻辑库、数据表

image.png

image.png

image.png

image.png

image.png

image.png

image.png

SHOW TABLES; # 查看逻辑空间中有那些表
DESC student; # 查看表的结构
SHOW CREATE TABLE student; # 查看建表的sql语句

2.2 mysql数据类型

2.2.1 数字

image.png

十进制的浮点数转换成二进制的浮点数会损失精度,重要的数据比如钱,应该使用DECIMAL类型
DECIMAL类型是使用字符串保存的,不会损失精度。

2.2.2 字符串

image.png

后三种不能规定最大字符数量,VARCHAR可以规定

正常情况使用VARCHAR就够了,如果字符过多,MySQL读写速度将下降,应该使用NoSQL进行存储和读写。

2.2.3 日期类型

image.png

2.3 修改数据表的结构

2.3.1 添加字段

image.png

ALTER table student
ADD address VARCHAR(20) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;

2.3.2 修改字段类型和约束

image.png

ALTER table student
MODIFY home_tel VARCHAR(20) NOT NULL;

DESC student;

2.3.3 修改字段名称

image.png

ALTER table student
CHANGE address home_address VARCHAR(20) NOT NULL;
DESC student;

2.3.4 删除字段

image.png

ALTER table student
DROP home_address,
DROP home_tel;
DESC student;

2.4 字段约束

2.4.1 数据库范式

  • 构造数据库必须遵守一定的规则,这种规则就是范式
  • 目前关系数据库有6种范式,一般情况下,只满足第三范式即可

image.png

image.png

image.png

满足第三范式已经满足第一和第二范式

因为主键的检索速度是非常快的,满足第三范式可以提高数据库的查询效率。

image.png

2.4.2 字段约束

image.png

image.png

image.png

MySQL中没有BOOLEAN类型,会映射成TINYINT,TRUE映射成1,FALSE映射成0。

image.png

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
);

image.png

image.png

image.png

image.png

真实生产环境一定不能使用外键约束

2.5 索引

索引机制就是提升检索速度的。

image.png

2.5.1 创建索引

两种添加索引的时机:

  • 建表的时候创建索引
  • 添加记录的时候添加索引

image.png

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 添加和删除索引

image.png

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;

image.png

2.5.3 索引的使用原则

image.png