9.1 数据类型
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。对于我们约束数据的类型有很大的帮助
9.1.1 数值类型
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
|---|---|---|---|---|
| INT | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
| DOUBLE | 8 字节 | (-1.797E+308,-2.22E-308) | (0,2.22E-308,1.797E+308) | 双精度浮点数值 |
| DOUBLE(M,D) | 8个字节,M表示长度,D表示小数位数 | 同上,受M和D的约束 DOUBLE(5,2) -999.99-999.99 | 同上,受M和D的约束 | 双精度浮点数值 |
| DECIMAL(M,D) | DECIMAL(M,D) | 依赖于M和D的值,M最大值为65 | 依赖于M和D的值,M最大值为65 | 小数值 |
9.1.2 日期类型
| 类型 | 大小 | 范围 | 格式 | 用途 |
|---|---|---|---|---|
| DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 时间值或持续时间 |
| YEAR | 1 | 1901/2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 | YYYYMMDD HHMMSS | 混合日期和时间值,时间戳 |
9.1.3 字符串类型
| 类型 | 大小 | 用途 |
|---|---|---|
| CHAR | 0-255字符 | 定长字符串 char(10) 10个字符 |
| VARCHAR | 0-65535 字节 | 变长字符串 varchar(10) 10个字符 |
| BLOB(binary large object) | 0-65535字节 | 二进制形式的长文本数据 |
| TEXT | 0-65535字节 | 长文本数据 |
- CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
- BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。
9.2 数据表的创建(CREATE)
....
列名 数据类型 [约束] //最后一列的末尾不加逗号
)[charset=utf8] //可根据需要指定表的字符编码集
9.2.1 创建表
| 列名 | 数据类型 | 说明 |
|---|---|---|
| subjectId | INT | 课程编号 |
| subjectName | VARCHAR(20) | 课程名称 |
| subjectHours | INT | 课程时长 |
#依据上述表格创建数据表,并向表中插入 3 条测试语句
CREATE TABLE subject(
subjectId INT,
subjectName VARCHAR(20),
subjectHours INT
)charset=utf8;
INSERT INTO subject(subjectId,subjectName,subjectHours) VALUES(1,'Java',40);
INSERT INTO subject(subjectId,subjectName,subjectHours) VALUES(2,'MYSQL',20);
INSERT INTO subject(subjectId,subjectName,subjectHours) VALUES(3,'JavaScript',30);
9.3 数据表的修改(ALTER)
ALTER TABLE 表名 操作;
9.3.1 向现有表中添加列
#在课程表基础上添加gradeId 列
ALTER TABLE subject ADD gradeId int;
9.3.2 修改表中的列信息
#修改课程表中课程名称长度为10个字符
ALTER TABLE subject MODIFY subjectName VARCHAR(10);
9.3.3 删除表中的列
#删除课程表中 gradeId 列
ALTER TABLE subject DROP gradeId;
9.3.4 修改列名
#修改课程表中 subjectHours 列为 classHours
ALTER TABLE subject CHANGE subjectHours classHours int ;
9.3.5 修改表名
#修改课程表的subject 为 sub
ALTER TABLE subject rename sub;
9.4 数据表的删除(DROP)
DROP TABLE 表名
9.4.1 删除学生表
#删除学生表
DROP TABLE subject;