Python数据库学习(二)

存储引擎

  • 不同的数据应该有不同的处理机制来存储
  • 存储引擎就是不同的处理机制

MySQL主要存储引擎

  • innodb
    是MySQL5.5版本之后默认的存储引擎,支持事务、行锁、外键
  • myisam
    是MySQL5.5版本之前默认的存储引擎,速度比innodb快,但不够其安全
  • memory
    内存引擎(数据全部存放在内存中)断电数据丢失,临时存储
  • blackhole
    无论存什么,都立刻消失(黑洞),部署功能
  • 查看所有引擎
    show engines; 
  • 不同的存储引擎在存储表的时候的异同点
    create table t1(id int) engine=innodb;
    create table t2(id int) engine=myisam;
    create table t3(id int) engine=blackhole;
    create table t4(id int) engine=memory;
  • 存数据的特点
    insert into t1 values(1);
    insert into t1 values(1);
    insert into t1 values(1);

创建表的完整语法

  • 语法
create table 表名(
    字段名1 类型(宽度) 约束条件,
    字段名2 类型(宽度) 约束条件,
    字段名3 类型(宽度) 约束条件
)
  • 注意
    1、在同一张表中字段名不能重复
    2、宽度和约束条件是可选的(可写可不写)而字段名和字段类型是必须的
                 约束条件写的话,也支持写多个
                 字段名1 类型(宽度) 约束条件1 约束条件2...,
                 create table t5(id);   报错
    3、最后一行不能有逗号
  • 补充
    1、宽度:一般指对存储数据的限制,默认宽度为1
                    针对不同版本会有不同效果:5.6版本默认不开启严格模式,规定只能存一个字符却给了多个字符,自动截取;
                                                                   5.7版本及以上默认开启严格模式,规定只能存一个字符却给了多个字符,超出范围会报错Data too long for...
    2、约束条件: null      not null不能插入null
    关系:宽度是用来限制数据的存储,约束条件是在宽度的基础之上增加的额外的约束

基本数据类型

整型

  • 分类
  • 作用
    存储年龄、等级、id、号码等
  • TINYINT
            是否有符号?
                    默认情况下是带符号的
            超出范围会如何?
                    超出限制只存最大可接受值
  • 约束条件:unsigned,zerofill
  • id int(8)  : 如果数字没有超出8位,那么默认用空格填充至8位;
                       如果数字超出了8位,那么有几位就存几位(但是还是遵守最大范围)
  • 总结:
    针对整形字段,括号内无需指定宽度,因为它默认的宽度已经足够显示所有的数据

严格模式

  • 如何查看严格模式
    show variables like "%mode";

    模糊匹配/查询
               关键字 like
                       %:匹配任意多个字符
                       _ :匹配任意单个字符
  • 修改严格模式
    set session      #只在当前窗口有效
    set global        #全局有效

    set global sql_mode = 'STRICT_TRANS_TABLES';
    修改完之后,重新进入服务端即可

浮点型

  • 分类
    FLOAT、DOUBLE、DECIMAL
  • 作用
    身高、体重、薪资等
  • 存储限制
    float(255, 30)   # 总共255位,小数部分占30位
    double(255, 30)   # 总共255位,小数部分占30位
    decimal(65, 30)   # 总共65位,小数部分占30位
  • 精确度验证
    float < double < decimal

字符类型

  • 分类
    char:定长,char(4),数据超过四个字符直接报错,不够四个字符空格补全
    varchar:变长,varchar(4),数据超过四个字符直接报错,不够有几个存几个
  • char_length 统计字段长度
  • char硬盘上存的真正数据是带有空格的,但在显示时MySQL会自动将多余的空格剔除
  • 修改sql_mode,让MySQL不要自动剔除操作
    set global sql_mode = 'STRICT_TRANS_TABLES, PAD_CHAR_TO_FULL_LENGTH'
  • varchar存的时候需要制作报头,取的时候也先读取报头,之后才能读取真是数据
  • 建议使用varchar,节省空间

时间类型

  • 分类
    date:年月日
    datetime:年月日时分秒
    time:时分秒
    Year:年份

枚举与集合类型

  • 分类
    枚举(enum):多选一
    集合(set):多选多
  • 特点
    枚举字段,后期在存数据的时候只能从枚举里面选择一个存储
    集合可以只写一个或写多个,但不能写没有列举的

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绍兴酒瓶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值