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号
浙公网安备 33010602011771号