zoukankan      html  css  js  c++  java
  • mysql数据类型

    mysql数据类型-int

    int 的有符号和无符号的区别

    • 有符号的int可以插入负值,无符号的int不可以插入负值

    整型的每一种都分无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。

    无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的正整数数据,比如16位系统中一个smallint能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。

    由于在计算机中,整数是以补码形式存放的。根据最高位的不同,如果是1,有符号数的话就是负数;如果是无符号数,则都解释为正数。另外,unsigned若省略后一个关键字,大多数编译器都会认为是unsigned int。

    简而言之就是由于Int型占4字节,也就是16位,2^16 = 65535,如果有符号位就+ -两边均分,如果没有就全给+。

    int 有符号测试

    #创建一个有符号的int类型的abc的表
    create table bcd (a int,b int);#int类型不声明则默认为有符号
    
    #插入数据
    insert into bcd values(1,2);
    
    #查询数据
    select * from bcd;
    
    #查询2-1:结果为1
    select b-a from bcd;
    
    #查询1-2:结果为-1
    select a-b from bcd;

    测试结果:

    int 无符号测试

    #创建一个无符号的int类型的abc的表
    create TABLE abc (a int unsigned,b int unsigned);
    
    #插入数据
    insert into abc values(1,2);
    
    #查询数据
    select * from abc;
    
    #查询2-1:结果为1
    select b-a from abc;
    
    #查询1-2:结果异常
    select a-b from abc;

     测试结果:超出精度异常

    int(n):其中的n是什么意思?

    • n 的意思是显示长度:若结果长度小于 n 则会自动前面加 0 进行补齐,若结果长度不小于 n 则正常显示

    #创建一个int(4)的数据库表
    create table test_int_n (a int(4) zerofill);-- Ps:若不加 zerofill 则没什么鸟用
    #在里面插入两条数据(一个值为1;一个值为123456)
    insert into test_int_n values(1),(123456);
    

    #mysql bin 命令行>查询结果

    Ps:在工具中查询无效果

     

    mysql中的int自增

    • 1.自增只能创建在主键上面
    • 2. null 和 0 都可以自自增
    • 3. 可以在自增列插入负值

    1.自增只能创建在主键上面

    #创建自动增长:会报错
    create table test_auto_increment(a int auto_increment);

    #创建自动增长:创建成功
    create table test_auto_increment(a int auto_increment primary key);

     

     null 和 0 都可以自增

    测试插入 null
    #在自增表里面插入数据
    insert into test_auto_increment values(null),(10),(null),(100),(null);
    
    #查询自增表中的数据
    select * from test_auto_increment;

     

    测试插入0

    插入前查询

    #在自增表中插入0:是和null一样自增的
    insert into test_auto_increment values(0);

     插入后查询:

     

     Ps : 插入 0 或 插入 null 执行一次后结果为 102 ,若把 102 删除后,再执行插入 0 或 插入 null ,则会在 102 的基础上自增,无关 102 是否被删除

    3.可以在自增列插入负值

    #在自增表中插入负值:是可以执行成功的
    insert into test_auto_increment values(-1);

    mysql数据类型-字符类型

    字符(n)中的 n 是字符还是字节?

    char(n) 和varchar(n) 中的 n 是字符还是字节?

    答:字符。

    text(n)  中的 n 是字符还是字节?

    答:字节。

    除了 char 和 varchar 中的 n 是字符,其他的都是字节。

    数据库中有true和false吗?

    数据库中只有0和1,没有true和false;

    1:相当于 true;0:相当于false。

    #1:相当于true
    select 'a' = 'a';
    #0:相当于false
    select 'a' = 'b';

    运行结果:

    数据库中排序规则里面的 bin 和 ci 是什么意思?

    bin:二进制的方式存储的,大小写敏感(不会忽略大小写)。

    ci:大小写不敏感(会忽略大小写)。

    sql测试:

    1:相当于 true;0:相当于false。

    #设置为utf8mb4_bin
    set names utf8mb4 collate utf8mb4_bin;

     

    1:相当于 true;0:相当于false。

     

    mysql数据类型-时间类型

    date、timestamp和datetime的区别是什么?

    • date表示日期,其范围为1000-01-01到9999-12-31
    • datetime表示日期时间,其范围是1000-01-01 00:00:00到9999-12-31 23:59:59
    • timestamp表示时间戳,1970-01-01 00:00:00到2038-01-19 03:14:07,timestamp具有自动初始化和自动更新功能。

      timestamp:有时区的概念;datetime:没有时区的概念

    sql测试timestamp和datetime的区别

    #创建一个时间类型的表
    create table test_time (a timestamp,b datetime);
    
    #插入数据
    insert into test_time values(NOW(),NOW()); 
    #查询时间的环境变量
    select @@time_zone;

     当时间的环境变量为 SYSTEM 时,看不出区别

    #修改时间的环境变量
    set time_zone='+00:00';

      当时间的环境变量为 +00:00时,则可以看出两个时间不同

     一般所有时间都是北京东八区的时间。

  • 相关阅读:
    jQuery(3)——DOM操作
    jQuery(2)——选择器
    jQuery(1)——了解jQuery
    JavaScript(10)——Ajax以及跨域处理
    JavaScript(9)——call与apply
    JavaScript(8)——JSON
    JavaScript(7)——事件2.0
    JavaScript(6)——事件1.0
    JavaScript(5)——DOM
    spring mvc+spring+mybatis搭建javaWeb项目时遇到的一些问题
  • 原文地址:https://www.cnblogs.com/mjtabu/p/12885043.html
Copyright © 2011-2022 走看看