python—day37 数据库基本类型

创建表语法:

  1)create table 表名(字段名 类型[(宽度)约束条件])

  类型:使用限制字段必须以什么样的数据类型传值

  约束条件:约束条件是在类型之外添加一些额外限制;

  注意:

    1.在同一张表中,字段名是不能相同

    2.宽度和约束条件是可选,字段名和类型是必须的

    3.最后一个字段后不加逗号

  2)基本数据类型整型

  1.作用:id号,各种号码,年龄,级别;

  2.分类:tinyint,int,bigint;

扫描二维码关注公众号,回复: 176603 查看本文章

  3.测试:默认整型都是有符号的;

     create table t1(x tinyint);  -128,127 有符号

    insert into t1 values(128),(-129);  

    create table t2(x tinyint unsigned);  0,255 无符号

    insert into t2 values(-1),(256);   

    create table t3(x int unsigned);

    insert into t3 values(4294967296);

    create table t4(x int(12) unsigned);

    insert into t4 values(4294967296123);

    强调:

    对于整型来说,数据类型后的宽度不是储存限制,而是显示宽度限制;所以在创建表中,如果字段采用的是整型类型,完全无需指定显示宽度,默认的显示宽度,足够显示完整当初存放的数据;

  显示时,不够8位用0填充,如果超出8位则正常显示;

    create table t5(x int(8) unsigned zerofill);

    insert into t5 values(4294967296123);

    insert into t5 values(1);

    select * from t5;

  3) 查看sql_mode

  mysql> show variables like "%sql_mode%";

 

  修改sql_mode为严格模式:在该模式下,如果插入的数据超过限制,则会立即报错;

  set global sql_mode = "strict_trans_tables";

  4)浮点型

  1.作用:储存身高、体重、薪资

  2.分类:float、double、decimal

  3.测试:

  相同点:

    (1):对于三者来说,多能存放30位小数;

  不同点:

    (1):精度的排序从低到高:float,double,decimal

    (2):  float与double类型都存放的整数位比decimal更多

    create table t6(x float(255,30));

    create table t7(x double(255,30));

    create table t8(x decimal(65,30));

    insert into t6 values(1.111111111111111111111111111111);

    insert into t7 values(1.111111111111111111111111111111);

    insert into t8 values(1.111111111111111111111111111111);

  mysql>select * from t6;

  

    mysql>select * from t7;

  

  mysql>select * from t8;

  

   5)字符类型:

  1.作用:姓名、地址、描述类的信息

  2.分类: char 定长、varchar 变长

  3.测试:字符的宽度限制单位是字符个数;

  create table t9(x char(4));#超出4个字符会报错,不够4个字符则用空格补全;

  create table t10(x varchar(4));#超过4个字符会报错,不够4个字符那么字符有几个就存几个;

  insert into t9 values('hello');

  insert into t10 values('hello');

  insert into t9 values('a');

  insert into t10 values('a');

  set global sql_medo = "strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

  select char_length(x) from t9;

  select char_length(x) from t10;

  注意:

  针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中;

  但会在读出结果时自动去掉末尾空格,因为末尾的空格在以下场景中是无用;

  insert into t9 valuse('egon  '),('alex'),('lxx');

  mysql>select * from t9 where x='egon';

  x字段明确地等于一个值,该值后填充空格是没有用的;

  select * from t10 where x like 'lxx';

  x字段模糊匹配一个值,该值后填充空格是有用的;

对比char 与 varchar

  name char(5)

  #缺点:浪费空间!

  #优点:存取速度快!

  egon alex lxx  wxx  yx   ;

  name varchar(5)

  #缺点:存取速度都慢

  #优点:节省空间

(1bytes+egon)(1bytes+alex)(1bytes+lxx)

  注意:

    如果在存取的值都一样的情况下char更省空间;

  6)日期类型:

  1.作用:时间关系

  2.分类:date、time、datetime、year

    

猜你喜欢

转载自www.cnblogs.com/kermitjam/p/9008336.html