冲刺学习-MySQL-基础

news2024/12/27 11:02:39

基础

数据类型

在这里插入图片描述
常见数据类型的属性
在这里插入图片描述

  • 整型
    TINYINT、SMALLINT、MEDIUMINT、INT(INTEGER)和 BIGINT
    在这里插入图片描述
    • 可选属性
      • M:表示显示宽度(从MySQL 8.0.17开始,整数数据类型不推荐使用显示宽度属性)
      • UNSIGNED:无符号类型(非负)
      • ZEROFILL:0填充
    • 使用场景
      • TINYINT :一般用于枚举数据,比如系统设定取值范围很小且固定的场景。
      • SMALLINT :可以用于较小范围的统计数据,比如统计工厂的固定资产库存数量等。
      • MEDIUMINT :用于较大整数的计算,比如车站每日的客流量等
      • INT、INTEGER :取值范围足够大,一般情况下不用考虑超限问题,用得最多。比如商品编号。
      • BIGINT :只有当你处理特别巨大的整数时才会用到。比如双十一的交易量、大型门户网站点击量、证券公司衍生产品持仓等
    • 如何选择
      系统故障产生的成本远远超过增加几个字段存储空间所产生的成本。因此,我建议你首先确保数据不会超过取值范围,在这个前提之下,再去考虑如何节省存储空间。
  • 浮点类型
    FLOAT(单浮点)、DOUBLE(双浮点)、REAL(默认DOUBLE)
    • 精度的说明
      在这里插入图片描述
    • 精度说明
      由于浮点数是使用二进制存储的,由于存在二进制无法表达的情况,所以只能四舍五入
  • 定点数
    DECIMAL
    • DECIMAL(M,D) 的最大取值范围与 DOUBLE 类型一样,但是有效的数据范围是由M和D决定的
    • 以 字符串 的形式进行存储
    • 定点数类型取值范围相对小,但是精准,没有误差,适合于对精度要求极高的场景
  • 位类型
    BIT(存储二进制值)
    • 使用SELECT命令查询位字段时,可以用 BIN() 或 HEX() 函数进行读取。
  • 日期与时间类型
    MySQL8.0版本支持的日期和时间类型主要有:YEAR类型、TIME类型、DATE类型、DATETIME类型和TIMESTAMP类型。
    在这里插入图片描述
    • DATE:使用 CURRENT_DATE() 或者 NOW() 函数,会插入当前系统的日期。
    • TIME:
    • DATETIME:
    • TIMESTAMP:存储数据的时候需要对当前时间所在的时区进行转换,查询数据的时候再将时间转换回当前的时区。因此,使用TIMESTAMP存储的同一个时间值,在不同的时区查询时会显示不同的时间。
    • TIMESTAMP与DATETIME的区别:
      在这里插入图片描述
    • 开发经验:
      实际项目中建议使用DATETIME,但是一般存注册时间、发布时间等,不建议使用,而是使用时间戳,虽然DATETIME直观,但是不便于计算
  • 文本字符串类型:CHAR 、 VARCHAR 、 TINYTEXT 、 TEXT 、MEDIUMTEXT 、 LONGTEXT 、 ENUM 、 SET 等类型
    在这里插入图片描述
    • CHAR与VARCHAR
      • CHAR:
        • 一般需要指定长度,不指定为1
        • 保存时,实际长度小于说明长度,会在右侧填充空格,检索时会去除空格
      • VARCHAR:
        • 必须指定长度
        • 会保留数据尾部的空格
          选择情况:
        • 短的信息-CHAR
        • 固定的信息-CHAR
        • 十分频繁修改的信息-VARCHAR
        • 不同引擎下:MyISAM同上,MEMORY两种类型都可以,InnoDB都建议使用VARCHAR
  • TEXT类型(由于实际存储的长度不确定, MySQL 不允许 TEXT 类型的字段做主键)
    TINYTEXT、TEXT、 MEDIUMTEXT 和 LONGTEXT 类型
    在这里插入图片描述
    • 可以存储较大文本,但是搜索比较慢
    • 和BLOB类型的数据一样删除容易导致“空洞”,频繁使用的表不建议使用,建议单独分开
  • ENUM类型
    枚举类型
  • SET类型
  • 二进制字符串类型
    BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB类型
    • BINARY和VARBINARY类似于CHAR和VARCHAR,只是它们存储的是二进制字符串。
    • BLOB类型
      TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB 4种类型
  • JSON类型
  • 空间类型

约束

  • 概念:作用于表中字段上的规则,用于限制存储在表中的数据
  • 目的:保证数据库中数据的正确性、有效性和完整性
  • 分类:在这里插入图片描述

外键约束

删除/更新行为
在这里插入图片描述

多表查询

  • 内连接
    两张表交集的部分
  • 外连接
    • 左外连接:包含左边的以及左右交集的所有数据
    • 右外连接:包含右边的以及左右交集的所有数据
  • 联合查询:UNION

事务

在这里插入图片描述

索引

最左前缀法则

索引失败的情况

SQL提示

前缀索引

索引设计原则

在这里插入图片描述

锁机制

按锁的粒度分:

  • 全局锁
  • 表级锁
  • 行级锁

全局锁

加锁以后只能读,不能写

经典使用场景:备份库

#加锁
flush table with read lock;
#备份
mysqldump -uroot -p1234 itcast > itcast.sql
#解锁
unlock tables;

表级锁

  • 表共享读锁
  • 表独占写锁
    语法:
  1. 加锁:
lock tables 表名... read/write
  1. 释放锁
unlock tables/客户端断开连接

元数据锁

加锁过程是系统自动控制,在访问一张表的时候会自动加上。
主要作用是维护元数据的数据一致性

意向锁

  1. 意向共享锁(IS):于表锁共享锁兼容,于表锁排它锁互斥
select ... lock in share mode添加
  1. 意向排他锁(IX):于表锁共享锁及排它锁都互斥。意向锁之间不会互斥
insertupdatedeleteselect ... for update添加

行级锁

锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中

  • 共享锁(S):允许一个事务去读一行,阻止其他事务获取相同数据集的排它锁
  • 排它锁(X):允许获取排它锁的事务更新数据,阻止其他事务获取相同数据集的共享锁和排它锁
    在这里插入图片描述

间隙锁/临键锁

目的:防止幻读

  1. 索引上的等值查询(唯一索引),给不存在的记录加锁时,优化为间隙锁
  2. 索引上的等值查询(普通索引),向右遍历时最后一个值不满足查询需求时,next-key lock退化为间隙锁
  3. 索引上的等值查询(唯一索引),会访问到不满足条件的第一个值为止

注意:间隙锁的唯一目的是防止其他事务插入间隙。间隙锁可以共存,一个事务采用的间隙锁不会阻止另一个事务在同一间隙上采用间隙锁

SQL编写

通用语法及分类

  • DDL
    数据定义语言
  • DML
    数据操作语言
  • DQL
    数据查询语言
  • DCL
    数据控制语言

查询所有数据库

SHOW DATABASES;

查询当前数据库

SELECT DATABASE()

创建

CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排列规则];

删除

DROP DATABASE[IF EXISTS] 数据库名;

使用

USE 数据库名;

查询当前数据库所有表

SHOW TABLES;

查询表结构

DESC 表名;

查询指定表的建表语句

SHOW CREATE TABLE 表名;

表创建

CREATE TABLE 表名(
	字段1 字段1类型[COMMENT 字段1注解],
	......
)[COMMENT 表注解];

添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) [COMMENT 注解] [约束];

修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段名和字段类型

ALTER TABLE 表名 CHAHGE 旧字段名 新字段名 类型(长度) [COMMENT 注解] [约束];

删除字段

ALTER TABLE 表名 DROP 字段名;

修改表名

ALTER TABLE 表名 RENAME TO 新表名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1120754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hdlbits系列verilog解答(7458芯片)-10

文章目录 wire线网类型介绍一、问题描述二、verilog源码三、仿真结果 wire线网类型介绍 wire线网类型是verilog的一种数据类型,它是一种单向的物理连线。它可以是输入也可以是输出,它与reg寄存器数据类型不同,它不能存储数据,只能…

设计模式——七大原则详解

这里写目录标题 设计模式单一职责原则应用实例注意事项和细节 接口隔离原则应用实例 依赖倒转(倒置)原则基本介绍实例代码依赖关系传递的三种方式注意事项和细节 里氏替换原则基本介绍实例代码 开闭原则基本介绍实例代码 迪米特法则基本介绍实例代码注意…

【苍穹外卖 | 项目日记】第八天

前言: 昨天晚上跑完步回来宿舍都快停电了,就没写项目日记,今天补上 目录 前言: 今日完结任务: 今日收获: 引入百度地图接口: 引入spring task ,定时处理异常订单: …

ssm+vue的软考系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的软考系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&#xff…

【RNA structures】RNA-seq Part2: RNA转录的重构和前沿测序技术

文章目录 RNA转录重建1 先简单介绍一下测序相关技术2 Map to Genome Methods2.1 Step1 Mapping reads to the genome2.2 Step2 Deal with spliced reads2.3 Step 3 Resolve individual transcripts and their expression levels 3 Align-de-novo approaches3.1 Step 1: Generat…

你还不会DeBug?太low了吧

编程时调试是不可缺少的,Unity中用于调试的方法均在Debug类中。 浅试一下 新建一个物体和脚本,并把脚本挂载到物体上! using System.Collections; using System.Collections.Generic; using UnityEngine;public class DeBugTest : MonoBeh…

JavaSE入门---掌握面向对象三大特性:封装、继承和多态

文章目录 封装什么是封装?如何实现封装? 继承什么是继承?继承的语法父类成员访问子类访问父类的成员变量子类访问父类的成员方法 认识super关键字认识final关键字子类的构造方法super VS this在继承关系中各代码块的执行顺序是怎样的&#xf…

AAPCS:最新的ARM子程序调用规则

AAPCS是arm公司发布的ARM架构应用程序二进制(ABI)程序调用接口,该文档由多个版本,博主第一次ARM程序调用规则是在《ARM体系与结构编程》,但书中描述的是ATPCS,AAPCS是ATPCS的升级版。后面去ARM官网看到了AA…

冯诺依曼体结构 - 为什么要有操作系统

冯诺依曼体系结构 基础 概念认识 我们现在常见的 计算机,如 笔记本电脑,或者是不常见的 计算机,如服务器,大部分都遵循一个体系结构 -- 冯诺依曼体系结构。计算机的基本构成 就是由 冯诺依曼体系结构 来构成计算机的基本单元的。…

机械设备经营小程序商城的作用是什么

由于机械设备厂商品牌需要各地招商代理,因此在管理方面也需要工具进行高效管理。如今各个行业都在开展数字化转型解决行业所遇难题或通过线上销售解决传统三公里难题及品牌扩张难题、用户消费渠道少等难题,构建会员体系精细化管理,同时还需要…

轻松快速搭建一个本地的语音合成服务

前言 本文将介绍一个可以快速搭建本地语音合成的服务,模型和代码已全部提供,不需要联网运行。项目使用的是VITS模型结构,能够很轻松地启动服务。 安装环境 安装Pytorch。 # 安装CPU版本的Pytorch conda install pytorch torchvision torc…

【了解一下,Elastic Search的检索】

文章目录 **1.1.ES**1.1.1.elasticsearch的作用**1.1.2.ELK栈****2.索引库操作****2.1.mapping映射属性****2.2.索引库的CRUD** **3. 文档操作** **基于IDEA操作ES****索引操作****文档操作** DSL查询文档**1.1.DSL查询分类****1.2. 全文检索查询****1.3. 精准查询****1.4. 地理…

消息订阅与发布pubsub

消息订阅与发布 订阅消息:消息名发布消息:消息内容 A组件想使用C组件里面的东西,A需要数据,C是提供者。 在A组件里面订阅一个消息,假设订阅的消息名叫做Demo,指定回调函数叫test;C发布消息&…

ARM映像文件组成

引言 ARM编译器将各种源文件(汇编文件、C语言程序文件、C语言程序文件)编译生成ELF格式的目标文件(后缀为.o文件,以下将目标文件简称为.o文件),.o文件经过连接器,和C/C运行时库一起编译生成ELF格…

Kafka学习(最新版3.6.0)

文章目录 一、初识MQ1.1 什么是MQ1.2 同步和异步通讯1.1.1 同步通讯1.1.2 异步通讯 1.3 技术对比1.4 MQ的两种模式 二、初识Kafka2.1 Kafka的使用场景2.2 Kafka基本概念2.3 Topic与Partition 三、Kafka基本使用3.1 部署前的准备3.2 启动kafka服务器3.3 Kafka核心概念之Topic3.4…

Qt扫盲-QPen 理论使用总结

QPen 理论使用总结 一、概述二、Pen Style 画笔风格三、Cap Style 帽风格四、Join Style 连接处样式 一、概述 QPen 是Qt绘图控件里面的一个重要的组件,和QColor 一样也是类似的一个属性类。这个类就是描述一个画笔具有的属性。 一个画笔 Pen 有style()&#xff0…

032-第三代软件开发-Popup弹窗

第三代软件开发-Popup弹窗 文章目录 第三代软件开发-Popup弹窗项目介绍Popup弹窗官方示例项目中的代码 之前写过一个Popup抄抄别人的dimvisible 和 Open 区别 与 Dialog有啥区别其他总结一下 关键字: Qt、 Qml、 Popup、 弹窗、 modal 项目介绍 欢迎来到我们的…

外网nat+nat server,内网做路由过滤,以及ppp CHAR认证 企业网搭建

作业 网络拓扑图如下所示: 要求:做适当的截图,表示完成相应的操作。 按照网络拓扑要求搭建网络结构,按照个人学号配置每个节点的IP地址,其中X为班级号,Y为学号末尾2位;Y1为学号末尾2位1&#…

kubernetes 多集群管理和联邦集群将是下一波运维浪潮

问题 调研一下国内外K8s平台软件,哪个具有创建标准的K8s集群的功能? 背景 随着云原生技术在越来越多的企业和组织中的大规模落地,如何高效、可靠地管理大规模资源池以应对不断增长的业务挑战成为了当下云原生技术的关键挑战。在过去的很长…

第三章 内存管理 十四、页面分配策略

目录 一、驻留集 1、定义: 2、注意事项 3、分配策略 固定分配: 可变分配: 4、置换策略 局部置换: 全局置换: 5、置换分配策略 5.1、固定分配局部置换: 这种策略的缺点是: 5.2、可变分配全局置换: 5.3、可变分配局部置换: 注意: 6、何时调…