本文已参与「新人创作礼」活动,一起开启掘金创作之路。
4、日期和时间列类型
所有时间和日期列类型的类型名及其说明和所占的字节数见下表:
| 类型名 | 说明 |
|---|---|
| DATE | ‘YYYY-MM-DD’格式表示的日期值 |
| TIME | 'hh:mm:ss'格式表示的时间值 |
| DATETIME | 'YYYY-MM-DD hh:mm:ss'格式 |
| TIMESTAMP | 'YYYYMMDDhhmmss'格式表示的时间戳值 |
| YEAR | 'YYYY'格式的年份值 |
注意:(1)每个时间和日期列类型都有一个零值,当插入非法数值时就用零值来添加
(2)表示日期时必须先按:年,月,日的顺序给出
(3)DATE,TIME,DATETIME分别是存储日期,时间与日期和时间的组合,其格式为"YYYY-MM-DD","hh:mm:ss"和"YYYY-MM-DD hh:mm:ss",对于DATETIME类型,日期和时间部分都需要。
(4)TIMESTAMP
时间戳列类型以YYYYMMDDhhmmss的格式来表示值,主要用于记录更改或创建某个记录。
5、常见数据类型
| 分类 | 备注和说明 | 数据类型 | 说明 |
|---|---|---|---|
| 二进制数据类型 | 存储非字符和文本的数据 | BLOB | 可用来存储图像 |
| 文本数据类型 | 字符数据包括任意字母、符号或者数字字符的组合 | char | 固定长度的非Unicode字符数据 |
| varchar | 可变长度非Unicode数据 | ||
| text | 存储长文本信息 | ||
| 日期和时间 | 日期和时间在单引号内输入 | time | 时间 |
| date | 日期 | ||
| datetime | 日期和时间 | ||
| 货币数据类型 | 用于财务数据 | decimal | 定点数 |
| Bit数据类型 | 表示是/否的数据 | bit | 存储布尔数据类型 |
| 数值型数据 | 该数据仅包含数字,包括整数、负数以及浮点数 | intsmallint | 整数 |
| floatdouble | 浮点数 |
6、常见的完整性约束
| 类型 | 说明 |
|---|---|
| PRIMARY KEY | 主码约束主键) |
| UNIQUE | 唯一性约束 |
| NOT NULL | 非空值约束 |
| AUTO_INCREMENT | 用于整数列默认自增1 |
| UNSIGNED | 无符号整数 |
| DEAULT default_value | 默认值约束 |
| DEAULT cur_timestamp | 创建新记录时默认保存当前时间(仅适用timestamp数据列) |
| ON UPDATE cur_timestamp | 修改记录时默认保存当前时间(仅适用timestamp数据列) |
| CHARACTER SET name | 指定字符集(仅使用字符串) |
7、数据表的类型(在表上右键,点击对象信息,可以看到表的类型)
在创建一个新的MySQL数据表时,可以为它设置一个类型,其中最重要的3中类型是:
(1)MyISAM:成熟、稳定和易于管理
(2)InnoDB:加入事物、数据行级锁定机制、外键约束条件、崩溃恢复等新功能(常用)
(3)HEAP:只存在于内存中,可做临时表
create table tmp(...)ENGINE=MyISAM
8、主键和外键
(1)索引:优化查询速度
(2)数据表之间的关联/引用关系是依赖具体的主键(primary key)和外键(foreign key)建立起来的。
(3)主键:帮助MySQL以最快的速度把一条特点的数据记录的位置确定下来
注意:主键必须是唯一的
主键应该是紧凑的,因此整数类型比较适合
(4)外键:引用另外一个数据表的某条记录
注意:外键列类型尽可能与主键列类型保持一致
外键列应该加上NOT NULL
例子:
主键:
CREATE TABLE student(
sid INT NOT NULL auto_increment PRIMARY KEY,
name VARCHAR(20) NOT NULL
)
外键:(自动检查外键是否匹配,仅适用InnoDB)
CREATE TABLE score(
cid INT NOT NULL auto_increment PRIMARY KEY,
score INT,
sid INT,
FOREIGN KEY(sid)REFERENCES student(sid)
);
创建完表之后再创建外键的方法:
格式:ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY(外键) REFERENCES 另一个表名(参考主键);
ALTER TABLE score ADD CONSTRAINT sid FOREIGN KEY(sid) REFERENCES student(sid);
删除外键:
格式:ALTER TABLE 表名 DROP FOREIGN KEY 外键名字(注意:这里是外键的名字,而不是外键列名)
ALTER TABLE score DROP FOREIGN KEY sid
9、主表和从表
(1)当主表中没有对应的记录时,不能将记录添加到字表