目录
数据类型
在 MySQL 中,有三种主要的类型:文本、数字和日期/时间类型。
1.Text 类型:
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的最大长度。最多 255 个字 符。 注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。 |
ENUM(x,y,z,etc.) | 允许你输入可能值的列表。可以在 ENUM 列表中列出最大 65535 个值。如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值: ENUM('X','Y','Z') |
SET | 与 ENUM 类似, SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。 |
2.Number 类型:
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。 0 到 255 无符号*。在括号中规定最 大位数。 |
SMALLINT(size) | -32768 到 32767 常规。 0 到 65535 无符号*。在括号中 规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。 0 to 16777215 无符号*。在 括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。 0 到 4294967295 无 符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372036854775808 到 9223372036854775807 常规。 0 到18446744073709551615 无符号*。在括号中规定最大位 数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
注意:这些整数类型拥有额外的选项 UNSIGNED。通常,整数可以是负数或正数。如果添加 UNSIGNED属性,那么范围将从 0 开始,而不是某个负数。
3.Date 类型:
数据类型 | 描述 |
---|---|
DATE() | 日期。格式: YYYY-MM-DD 注释:支持的范围是从 '1000-01-01' 到 '9999-12-31' |
DATETIME() | 日期和时间的组合。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是'1000-01-01 00:00:00' 到 '9999-12- 31 23:59:59' |
TIMESTAMP() | 时间戳。 TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC |
TIME() | 时间。格式: HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59' |
YEAR() | 2 位或 4 位格式的年。 注释: 4 位格式所允许的值: 1901 到 2155。 2 位格式所允许 的值: 70 到69,表示从 1970 到 2069 |
表的基本操作
1.创建表
基本语法:
CREATE TABLE table_name(
column_name column_type [DEFAULT expr] [comment ''],
-- 列名 数据类型 约束条件 注释 '',
.......
列N 数据类型 约束 comment ''
)
列定义之间以英文逗号,隔开,最后一个字段后不需要逗号
数据表的每行称为一条记录(record),每一列称为一个字段(field)
eg:
2.查看表
a.显示当前数据库中已有的数据表的信息【结构和创建信息】:
SHOW语法:
SHOW TABLES[FROM 数据库名][LIKE wild];
b.查看数据表中各列的信息:
DESCRIBE语法:
{DESCRIBE|DESC}表名[列名];
# or
show columns from 表名称;
c.查看更全面的表定义信息用“SHOW CREATE TABLE 表名”
3.删除表
删除指定的表:
语法:
DROP TABLE [IF EXISTS] 表名;
4.修改表的结构
--修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型;
--增加列
ALTER TABLE 表名 ADD 列名 列类型;
--删除列
ALTER TABLE 表名 DROP 列名;
--列改名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
--更改表名
ALTER TABLE 表名 RENAME 新表名;
RENAME TABLE 表名 TO 新表名;
数据类型及建表应用
创建一个表,每一列对应一个数据类型
mysql> CREATE TABLE user_inf(
-> user_id int(8) comment'用户编号',
-> user_name char(8) comment'用户姓名',
-> user_introduce varchar(200) comment'用户介绍',
-> user_email tinytext comment'用户Email',
-> user_address text comment'用户住址',
-> user_plan mediumtext comment'用户计划',
-> user_note1 mediumblob comment'用户备注1',
-> user_note2 blob comment'用户备注2',
-> description longtext comment'用户描述1',
-> description2 longblob comment'用户描述2',
-> user_gender enum('M','W') comment'用户性别M为男性,W为女性',
-> user_tel tinyint(13) comment'用户电话',
-> user_income mediumint comment'用户薪资',
-> user_height smallint comment'用户身高',
-> user_weight float comment'用户体重',
-> user_bir date comment'用户生日',
-> user_online datetime comment'用户登录具体时间',
-> user_time timestamp comment'时间戳',
-> now_time time comment'现在时间',
-> now_year year comment'现在年份'
-> )engine=InnoDB default character set utf8mb4 collate utf8mb4_0900_ai_ci;
查看表各列信息: