• 疫情环境下的网络学习笔记 python 5.4 数据库基础


    5.4

    上节课复习

    • 数据库的概念

      本质是一款基于网络通信的应用程序
      关系型:MySql,oracle,sqlite
      数据彼此之间有约束或着联系
      非关系型:redis,mongodb
      通常以k v值对形式存储
      
    • 重要概念

      库-----文件夹
      表-----文件
      记录---文件内一行行数据
      表头---表格的第一行字段
      字段---字段名+字段类型
      
    • 安装问题

      1. 不使用最新的版本:兼容性问题。目前用的多是5.6
      
    • 启动mysql

      mysqld -uroot -p
      
    • 配置文件

      my.ini
      
    • 基本语句

      增删改查
      create,show,drop,alter
      

    今日正课

    存储引擎

    Mysql主要存储引擎

    • Innodb:mysql5.5之后默认的存储引擎1
    • myisam:mysql5.5版本之前默认的存储引擎
    • memory:内存引擎,数据存放在内存中,断电数据丢失
    • blackhole:无论存什么都立即消失

    查看所有的存储引擎:show engines;
    区别:
    innodb:2个文件,表结构,表数据
    myisam:三个文件;表结构,表数据,索引
    memory,blackhole:只有表结构

    创建表的完整语法

    create table 表名(
    	字段名1 类型(宽度) 约束条件,
    	字段名2 类型(宽度) 约束条件,
    	字段名3 类型(宽度) 约束条件
    )
    
    # 注意
    # 1. 在同一张表中字段名不能重复
    # 2. 宽度和约束条件是可选的,字段名和类型是必须的
    # 3. 最后一行不能有逗号
    # 4. 不指定长度,int默认是11位,char是1位。5.6默认没开启严格模式,存多了自动截取,5.7以上开启严格模式,超出范围直接报错
    
    # 约束条件,不为空:not null
    create table t1(id int, name char not null);
    

    严格模式

    # 如何查看严格模式
    show variables like "%mode"
    模糊查询
    	关键词 like:
    	% 匹配任意多个字符
    	_ 匹配单个字符
    上面那句话的意思是,匹配所有variables中以mode结尾的字符
    # 修改严格模式
    set session # 只在当前窗口有效
    set global # 全局有效
    set global sql_mode = 'STRICT_TRANS-TABLES';
    # 修改完之后退出再重新进入
    

    基本数据分类

    整型

    tinyint,smallint,bigint
    

    总结

    • 针对整型字段,不需要加括号指定宽度,因为它默认的宽度已经足够显示所有的数据了,因为做大

    浮点型

    #分类
    float,double,decimal
    #存储限制
    float(255,30) # 总共255位,小数占30位
    double(255,30) # 总共255位,小数占30位
    decimal(65,30) # 总共65位,小数占30位
    # 方向键可以返回上一条命令,方便操作,但是前期学习不要用
    # 每种类型精确度不同
    # float < double < decimal
    # 三种类型各有使用类型
    

    字符类型

    # 定长char
    char(4) # 数据超过4个直接报错,不够四个字符空格补全
    # 变长varchar 
    varchar(4) # 数据超过四个直接报错,不够有几个存几个
    create table t18(name char(4))
    insert into t18 values('a')
    
    # 介绍一个方法 char_length:统计字段长度
    select char_length(name) from t18;
    # char 在硬盘上存的是真正的数据,四位带空格。显示的时候MYSql会自动将多余的空格去除
    # 可以修改sql_mode 让MYSQL不做自动剔除操作
    
    

    char 与 varchar对比

    • char
      • 缺点:浪费空间,比真实的数据多存了空格
      • 优点:存取简单,直接按照固定的字符存取数据即可
    • varcahr
      • 缺点:不知道一次取几位,存取较为麻烦
      • 优点:节省空间

    以前很多用char,现在用varchar也很多。以后在公司里不需要考虑这些东西

    时间类型

    date # 年月日
    datetime # 年月日时分秒 2020-5-4 12:02:00
    time # 时分秒
    Year # 年份
    
    # 年份必须大于1970
    create table student(
    	id int,
    	name varchar(16),
    	birth_year year,
    	birth_date date,
    	study_time time
    );
    insert into student values(1,'aaa','2000','2000-11-11','11:11:11');
    

    枚举与集合类型

    枚举:enum,多选一
    
    集合:set,多选多
    

    使用

    creater table user(
    	id int,
    	name char(16),
    	gender enum('male','female','other')
    );
    insert into user values(1,'aaa','male');
    insert into user values(2,'bbb','female');
    # 枚举的字段,在存储的时候只能从枚举中选一个存储
    
    create table teacher(
    	id int,
        name char(16),
        hobby set('read','music','guitar')
    );
    insert into teacher values(1,'aaa','read,music')
    insert into teacher values(1,'aaa','read,music,bass')
    # 集合可以只写一个或多个,但是不能写没用列举的内容,欧否则报错
    

    总结

    • 字段类型

    • 严格模式

    • 约束条件

      not null
      zerofill
      unsigned
      
  • 相关阅读:
    CSS选择器
    python——前端常用的标签
    用socket发送信息在浏览器上显示出来
    Python并发编程-事件驱动模型
    python中的协程
    controller中两个方法之间共享一个变量LinkedHashMap
    分布式缓存和本地缓存
    Java基础方法
    log4j2配置日志大小,个数等
    开发一个根据xml创建代理类的小框架
  • 原文地址:https://www.cnblogs.com/telecasterfanclub/p/12826691.html
Copyright © 2020-2023  润新知