09_06、SQL语句的数据类型

一、整型

整型包括:tinyint, smallint, int, bigint

区别是存储数据的范围不一样

    # 验证:默认情况带不带符号
    create table t5 (id tinyint);
    create table t5 (id int);
    insert into t5 (id) values (-129), (128);

   '''结论:默认带符号'''

注意:整型的存储大小取决于类型,而不取决于括号里面的数字,而字符串的话是取决于括号里面的数字。(eg: varchar(32))

二、浮点型

    float(255, 30) # 代表总共255位,小数占30位
    
    double(255, 30) # 代表总共255位,小数占30位
    
    decimal(65, 30) # 代表总共65位,小数占30位

# 区别:
#        精度不一样
#        decimal > double > float
# 验证
    create table t6 (id float(255, 30));
    create table t7 (id double(255, 30));
    create table t8 (id decimal(65, 30));
    
    # 插入数据
    insert into t6 values (1.11111111111111111111111);
    insert into t7 values (1.11111111111111111111111);
    insert into t8 values (1.11111111111111111111111);
   

三、字符串

    char(4)  #
    # 字符串类型,存储的范围是4个字符,超过了直接报错,不超过按照4个字符存
    
    varchar(4)
    # 字符串类型,存储的范围是4个字符,超过了直接报错,不超过有几个存几个

# 验证
    create table t9 (id int, name char(4));
    create table t10 (id int, name varchar(4));
    
    # 插入数据
    insert into t9 (id, name) values(1, 'kevin');
    insert into t10 (id, name) values(1, 'kevin');
    

四、日期

datetime 年月日,时分秒(一般用这种)

date     年月日 

time     时分秒  

year     年份

# 验证
    create table t11 (id int, 
                      reg_time datetime, 
                      reg1_time date,
                      reg2_time time,
                      reg3_time year
                     );
    # 插入数据
    insert into t11 values(1, '2022-1-1 11:11:11', '2022-01-02', '11:11:11', '2022');

 

五、枚举和集合

    枚举:多个里面选一个

# 验证
    create table t12 (
        id int,
        gender enum('男', '女', 'other')
    );
    
    insert into t12 values (1, '男');

    集合:多个里面选多个

# 验证
    create table t13 (
        id int,
        hobby set('music', 'read', 'xj')
    );
    
    insert into t13 values (1, 'music');

六、严格模式

1、 查看mysql的sql_mode

show variables like '%mode%';

2、设置严格模式

1. 直接使用命令修改
    set global sql_mode='STRICT_TRANS_TABLES';
    set global sql_mode='STRICT_TRANS_TABLES,ONLY_FULL_GROUP_BY';
2. 配置文件修改

在my.cnf添加如下配置
[mysqld]
sql_mode='ONLY_FULL_GROUP_BY,NO_AUTO_VALUE_ON_ZERO,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,
NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,PIPES_AS_CONCAT,ANSI_QUOTES'

注意:

MySQL5.6和MySQL5.7默认的sql_mode模式参数是不一样的,5.6的mode是NO_ENGINE_SUBSTITUTION,
其实表示的是一个空值,相当于没有什么模式设置,可以理解为宽松模式。5.7的mode是STRICT_TRANS_TABLES,也就是严格模式。

 

上一篇:Redis数据库


下一篇:NumPy