MySQL 建立数据表和数据类型说明
之前简单写了一下 MySQL 最基本的 增、删、改、查,这里继续来写 MySQL 建立数据表和数据类型说明。
如果要看 MySQL 最基本的 增、删、改、查,可以访问:MySQL 最基本的 增、删、改、查 。
数据类型
目前 MySQL 的数据类型可以简单划分为 数值类型、字符串类型、日期时间类型,下面是个类型的说明:
数值类型
下面是数值类型和范围说明:
- TINYINT 类型,范围从 -128 到 127,无符号 从 0 到 255 ,占用为 1 字节
- SMALLINT 类型,范围从 -32768 到 32767,无符号 从 0 到 65535 ,占用为 2 字节
- MEDIUMINT 类型,范围从 -8388608 到 8388607,无符号 从 0 到 16777215 ,占用为 3 字节
- INT 类型,范围从 -2147483648 到 2147483647,无符号 从 0 到 4294967295 ,占用为 4 字节
- BIGINT 类型,范围从 -9223372036854775808 到 9223372036854775807,无符号 从 0 到 18446744073709551615 ,占用为 8 字节
浮点数类型
下面是范围和占用说明:
- FLOAT 单精度浮点数,范围从 -3.402823466E+38 到 -1.175494351E-38、或 0 和 1.175494351E-38 到 3.402823466E+38,占用为 4 字节
- DOUBLE 双精度浮点数,范围从 -1.7976931348623157E+308 到 -2.2250738585072014E-308,或 0 和 2.2250738585072014E-308 到 1.7976931348623157E+308,占用为 8 字节
注意!其中的 E+38
或者 E-38
之类的是科学计数法。
字符串类型
- CHAR 固定长度字符串,创建表时需要指定长度,如果实际存入的字符数达不到设置的长度会使用空格填充,占用的字节数就是设置的长度
- VARCHAR 可变长度字符串,创建表时可以指定最大长度限制,最多可存入 65535 个字符,占用的字节数和字符数和字符编码相关
- TINYTEXT 可变长度字符串,最大长度为 255 字符,占用为 1 字节
- TEXT 可变长度字符串,最大长度为 65535 字符,占用为 2 字节
- MEDIUMTEXT 可变长度字符串,最大长度为 16777215 字符,占用为 3 字节
- LONGTEXT 可变长度字符串,最大长度为 4294967295 字符,占用为 4 字节
注意!一般情况下 英文、数字、半角符号 都是 1 个字符占 1 个字节,中文和全角符号根据编码不同占用也会不一样,常用的 UTF-8 编码 中文和全角符号 1 个字符占 3 个字节。
日期时间类型
下面是日期时间范围和格式说明:
- DATE 类型,可存储日期值,范围从 1000 年 1 月 1日 到 9999 年 12 月 31日,格式为:
YYYY-MM-DD
。存储占用为:3 字节 - TIME 类型,可存储时间值,范围从 -838:59:59/838:59:59,格式为:
HH:MM:SS
,存储占用为:3 字节 - YEAR 类型,可存储年份值,范围从:1901 年 到 2155 年,格式为:
YYYY
,存储占用为:1 字节 - DATETIME 类型,可存储日期和时间值,范围从:1000 年 1 月 1 日 00:00:00 到 9999 年 12 月 31 日 23:59:59,格式为:
YYYY-MM-DD HH:MM:SS
,存储占用为:8 字节 - TIMESTAMP 类型,可存储时间戳,范围从:1970 年 1 月 1 日 00:00:00 到 1970 年 1 月 1 日 00:00:00 + 2147483647 秒,格式为:
YYYYMMDD HHMMSS
,存储占用为:4 字节
不过在实际开发中日期时间类型一般很少会用到,大多都是用 INT
类型来存储时间戳,主要是存储整数类型的时间戳方便计算和转换时区。
枚举类型
枚举类型(ENUM)是一种用来存储预定义数据的类型,也就是说它存储的数据都是在创建表时就定义好的,比如我创建了一个用来存储性别的枚举类型字段,定义的值为 男
、女
、其他
,以后这个字段我只能存储 男
、女
、其他
。
枚举类型的数据在你创建表时就已经存入了,后面增加的数据也只是存储一个所以值,所以枚举类型的占用也比较小,一般不超过 26 组值的占用为 1 字节。27 到 512 组为 2 字节。
建立数据表
下面建立一张名为:msg
的表:
CREATE TABLE msg (
user_name VARCHAR (20),
content VARCHAR (20000),
time INT
)
其中 CREATE TABLE
就是 建立表格,msg
就是 表名,user_name
、content
、time
就是 字段名,VARCHAR
和 INT
是 数据类型,VARCHAR
后面的数字是 指定最大长度。这里的字段相当于是表的 列。
使用 DESC
+ 表名 可以查看表结构,如下:
DESC msg
下面是msg
表的结构:
+-----------+----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------+------+-----+---------+-------+
| user_name | varchar(20) | YES | | NULL | |
| content | varchar(20000) | YES | | NULL | |
| time | int(11) | YES | | NULL | |
+-----------+----------------+------+-----+---------+-------+
下面是表结构说明:
Field
:字段名Type
:数据类型和最大长度Null
:允许为空Key
:键Default
:默认值Extra
:额外设置
可以看到上面建立的表格结构比较简单,除了设置 字段名 和 数据类型 外基本没有设置其它内容。
下面重新建立 msg
表格:
CREATE TABLE msg (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL DEFAULT 0,
content VARCHAR (20000) NOT NULL DEFAULT '',
time INT NOT NULL DEFAULT 0
)
其中 id
后面的 AUTO_INCREMENT
就是自动生成编号,PRIMARY KEY
就是 主键 关于 主键下面会有说明,NOT NULL
就是禁止为空,DEFAULT
是默认 后面的是 默认值。
主键相当于是表中的唯一标识,一张表中只能设置一个字段为主键,主键的内容不能相同。例如把 id
设置为 主键,第 1 条数据的 id
为 1
,第 2 条数据的 id
就不能为 1
。
下面是 msg
表的结构:
+---------+----------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------+----------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | | 0 | |
| content | varchar(20000) | NO | | | |
| time | int(11) | NO | | 0 | |
+---------+----------------+------+-----+---------+----------------+
其中 content
的默认值为 ''
就相当于是空字符串。
下面创建一个包含枚举类型的表格:
CREATE TABLE user (
name VARCHAR (20) NOT NULL,
gender ENUM ('man', 'woman', 'other') NOT NULL
)
上面的 gender
字段就是枚举类型字段,man
、woman
、other
就是预存入的枚举值。
增加字段
如果你建好了一张表,但是发现建表的时候忘记写某个字段的话,你还可以给已经建好的表格添加字段。
下面给 msg
表添加一个 comment
字段:
ALTER TABLE msg ADD
comment VARCHAR (250) NOT NULL DEFAULT ''
其中的 ALTER TABLE
就是 更改表格,msg
就是 表名,ADD
就是 添加,后面的就是要添加的字段信息。
如果表格之前存储了数据的话,添加字段后新字段的值就是默认值。
删除字段
如果需要删除数据表的字段可以使用:
ALTER TABLE 表名 DROP COLUMN 字段名
下面删除 msg
表的 time
字段:
ALTER TABLE msg DROP COLUMN time
更改字段名和数据类型
字段名和数据类型需要同时设置:
ALTER TABLE 表名 CHANGE 之前的字段名 新字段名 数据类型
下面把 user
表的 name
字段改为 user_name
:
ALTER TABLE user CHANGE name user_name Varchar (20) NOT NULL
如果你只需要更改名称的话,字段数据类型可以按照之前的写,只改数据类型也是一样的。
如果你不知道建表时的设置可以使用:
SHOW CREATE TABLE 表名
查看建表语句。
删除表格
下面删除 msg
表:
DROP TABLE msg
其中的 msg
就是 表名。
重命名表
下面把 msg
表 重命名为 message
:
RENAME TABLE msg TO message
其中的 msg
就是原名称,message
就是新名称,这句 SQL 语句很好理解。
相关文章:
版权声明:本文为原创文章,版权归 Mr. Ma's Blog 所有,转载请联系博主获得授权。
本文地址:https://www.misterma.com/archives/806/
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。