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');
    
  • 字符串注意事项

    1. char和varchar的区别

      • char的执行效率高于varchar(但占用空间大)

        因为varchar会将长度转换为实际存储长度

        char如果给定字符小于指定的长度 则使用null占位

      • varchar相对于char节省空间

      • char与varchar的存储长度最大都为255

      • 如果开启了不严谨报错 依然都是按照最大的长度去截取

    2. 枚举和集合的区别

      • enum只能选择列出的多个成员中的某一个
      • set可以列出所给定的成员的一个到多个
      • set可以选择多个成员 如果有重复的则会自动去重
posted @ 2022-03-16 10:54  寻月隐君  阅读(262)  评论(0编辑  收藏  举报