MySQL创建表
MySQL创建表
1、数值类型
| 类型 | 大小 | 范围(有符号的) | 范围(无符号) | 用途 |
|---|---|---|---|---|
| tinyint | 1字节 | (-128,127) | (0,255) | 小整数值 |
| smallint | 2字节 | (-32768,32767) | (0,65535) | 大整数值 |
| int | 4字节 | (-2147483648,2147483647) | 大整数值 | |
| float | 4字节 | 单精度浮点型 | ||
| double | 8字节 | 双精度浮点型 | ||
| decimal | (m,d)如果m大于dm+2 否则为d+2 | 依赖于m和d的值 | 依赖于m和d的值 | 小数值(更加精准) |
-
创建表
mysql> create table testnum( -> ttinyint tinyint, -> tsmallint smallint, -> tint int, -> tfloat float(6,2), -> tdouble double(6,2), -> tdecimal decimal(6,2) -> ); -
创建表结构的主体
create table 表名( 字段名 字段类型 约束条件 字段说明..., .... 主键索引, 常规索引, 唯一索引 ); -
表插入语句
-
指定字段名插入数据
insert into 表名(字段名[,字段名...]) values (值1[,值2...])
-
不指定字段名插入数据(所有字段都插入值)
insert into 表名 values (值1[,值2...])
-
注意
从左到右 依次对应
-
-
注意
- decimal存储类型 小数更加精准 还可以节省存储空间
- float/double/decimal 在存储值的时候 如果开启了不严谨报错 则会按最大的值进行截取
- 我们数值类型后面都不需要给值 比如 int(3) 不够能限制值的存储长度 只有在zerofill的时候 零填充才有意义
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 | YYYY-MM-DD HH:MM:SS | 混合日期和时间 |
-
创表语句
mysql> create table testdate( -> tdate date, -> ttime time, -> tyear year, -> tdatetime datetime default now(), -> ttimestamp timestamp -> ); -
注意
- timestamp 值默认不为空 默认值为当前的时间戳
- 存储时间的时候 最好存储时间戳 方便我们对日期进行计算啊
3、字符串类型
| 类型 | 大小(字节) | 用途 |
|---|---|---|
| char | 0-255 | 定长字符串 |
| varchar | 0-255 | 变长字符串 |
| tinyblob | 0-255 | 不超过255个字符的二进制字符串 |
| tinytext | 0-255 | 短文本字符串(不可以根据指定的值进行限制) |
| blob | 0-65535 | 二进制形式的长文本数据 |
| text | 0-65535 | 长文本数据 |
| mediumblob | 二进制形式的中等长文本数据 | |
| loneblob | 0-4294697295 | 二进制形式的长文本数据 |
| lonetext | 0-4294697295 | 极大文本字符串数据 |
| enum(成员1[,成员2...]) | 65535 | 枚举 多个值逗号隔开 |
| set(成员1[,成员2...]) | 64 | 集合 多个值逗号隔开 |
-
创建表
mysql> create table teststring( -> tchar char(5), -> tvarchar varchar(5), -> ttext text, -> tenum enum('w','m'), -> tset set('a','b','c') -> ); -
插入数据
insert into teststring values('lucky', 'lucky', 'lucky','w', 'a'); -
字符串注意事项
-
char和varchar的区别
-
char的执行效率高于varchar(但占用空间大)
因为varchar会将长度转换为实际存储长度
char如果给定字符小于指定的长度 则使用null占位
-
varchar相对于char节省空间
-
char与varchar的存储长度最大都为255
-
如果开启了不严谨报错 依然都是按照最大的长度去截取
-
-
枚举和集合的区别
- enum只能选择列出的多个成员中的某一个
- set可以列出所给定的成员的一个到多个
- set可以选择多个成员 如果有重复的则会自动去重
-
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16011901.html

浙公网安备 33010602011771号