数据库02

本文深入解析了数据库存储引擎的种类及其应用场景,重点介绍了MySQL的InnoDB和MyISAM引擎特性。同时,详细阐述了各种数据类型,包括数字、字符串、时间和二进制类型,以及它们在计算机内存中的存储方式和优化技巧。

存储引擎

  引擎指的是一个系统的核心部分

  引擎有不同的分类是为了适应不同的使用场景

  查看MySQL支持的所有引擎 show engines;

  MRG_MYISAM 是一堆MYISAM表的集合

    用于做水平分表,如果一个表数据量太大将导致效率低

    水平分表就是把整个大表拆分为不同的小表

  垂直分表

    一个表中字段太多,可以将常用的分到一个表中,不常用的分到一个表中,然后建立联系

  innodb 是最常用的引擎,因为支持事物,行锁,外键一系列功能

  MYISAM 没有上述功能但是存储效率高于innodb并且支持分表

  MYISAM 速度快,不能永久储存,没有特殊功能

详细建表语句

  []表示可选

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

数据类型

  不同的数据类型,描述信息可以更加方便精准

  在计算机中对数据分类可以减少内存开销

  数字类型

  整形 默认都是有符号的

    tinyint 1个字节

    smallint 2个字节

    mediumint 3个字节

    int 4个字节

    bigint 8个字节

  设置为无符号需要在类型后添加unsigned

    create table 表名(字段 int unsigned);

  宽度在整型数据中,不是用来设置可存储的数据范围

  用于控制最小显示长度,长度不够就帮你补0但需要指定zerofill

    create table 表名(字段名 tinyint(5) zerofill);

  一般使用整型数据,宽度这个属性不指定

  浮点

    flaot 4个字节  float(a,b)

    double 8个字节  double(a,b)

    decimal 不固定  decimal(a,b)

    a表示总位数,b表示小数位数

    共同点:

      小数位最大30位

      float与double总长最大为255位,都不精确

    不同点:decimal总长最大为65位,并且是精确

  字符串

    char 固定长度

    var 可变长度

    固定长度的字符串类型

    tinytext 1个字符  text 2个字符  mediumtext 3个字符  longtext 4个字符

  二进制

    binary是固定长度的二进制

    varbinary是可变长度的二进制

    固定长度无法修改的二进制

    tinyblob  blob  mediumblob  longblob

    强调:二进制数据类型一般不用,如果要存储多媒体数据如音频,视频需要将其放到FTP文件服务器上,然后数据库中只存储连接即可

  时间类型

    year 年份  date 日期  time 时间  datatime 日期+时间  tiemstamp 时间戳

    year 可以是数字也可以是字符串

    timestamp 会自动更新时间,在你插入或修改时

    current_time 和 now() 所有的时间 日期类型都可以使用这两个方法来输入当前时间

    所有日期时间,数据库返回的都是字符串

  严格模式

    mysql5.7以下版本 默认都是非严格模式

    将 sql_mode = strict_trans_tables 写在配置文件中可以永久设置为严格模式

  enum 提前规定该自动能选的值的范围  多选一

  set 提前规定该字段能选的值的范围 多选多

约束

  约束是指给数据的值加上一些限制

  类型就是一种限制,宽度对数字型没有存储限制

  其他类型的宽度是有限制作用的

  约束就是除了数据类型以及宽度之外的其他限制

  unsigned就是约束中第一种表示整数不包含符号

  约束是为了保证数据的完整性

  not null 非空 限制字段必须有值

  default 默认值

    create table 表名(字段 类型(长度) not null default 默认值)

  unique 唯一性约束  并且是一个索引

    要求该字段的值不能重复

    单字段

      create table 表名(字段 类型 unique)

    多字段

      create table 表名(字段 类型,字段 类型, unique(字段,字段))

  primary key 主键约束

    从约束角度来看与非空+唯一是相同的效果

    不能为空且不能重复

    需要强调的是:主键除了有约束的效果,还有一个索引并且是非常重要的索引,在innodb中主键是必不可少的。innodb组织数据结构是安装树形结构来组织的,该结构中必须有一个数据,不能为空且唯一的如果没有这样的数据,树形结构也是不存在的

    mysql在创建的时候会检测是否存在主键,如果没有它就找一个具有非空且唯一约束的字段提升为主键,如果没有这样的字段mysql就会创建一个隐藏字段作为主键

  索引可以提高查询速度,就像字典里的目录,用于快速定位数据所在位置

  只要你是用innodb引擎,你就应该在建表时设置一个主键通常主键字段叫做id

  id有唯一标识的意思

  自动增长

    主键在使用中自动+1

    create table 表名(id int primary key auto_increment)

    当你创建表就应该有主键并且自动增长

转载于:https://www.cnblogs.com/LinChengcheng/p/10532021.html

标题基于Python的自主学习系统后端设计与实现AI更换标题第1章引言介绍自主学习系统的研究背景、意义、现状以及本文的研究方法和创新点。1.1研究背景与意义阐述自主学习系统在教育技术领域的重要性和应用价值。1.2国内外研究现状分析国内外在自主学习系统后端技术方面的研究进展。1.3研究方法与创新点概述本文采用Python技术栈的设计方法和系统创新点。第2章相关理论与技术总结自主学习系统后端开发的相关理论和技术基础。2.1自主学习系统理论阐述自主学习系统的定义、特征和理论基础。2.2Python后端技术栈介绍DjangoFlask等Python后端框架及其适用场景。2.3数据库技术讨论关系型和非关系型数据库在系统中的应用方案。第3章系统设计与实现详细介绍自主学习系统后端的设计方案和实现过程。3.1系统架构设计提出基于微服务的系统架构设计方案。3.2核心模块设计详细说明用户管理、学习资源管理、进度跟踪等核心模块设计。3.3关键技术实现阐述个性化推荐算法、学习行为分析等关键技术的实现。第4章系统测试与评估对系统进行功能测试和性能评估。4.1测试环境与方法介绍测试环境配置和采用的测试方法。4.2功能测试结果展示各功能模块的测试结果和问题修复情况。4.3性能评估分析分析系统在高并发等场景下的性能表现。第5章结论与展望总结研究成果并提出未来改进方向。5.1研究结论概括系统设计的主要成果和技术创新。5.2未来展望指出系统局限性并提出后续优化方向。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值