MySQL 部分重点知识篇

news2025/6/12 8:15:06

一、数据库对象

1. 主键

  • 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。

  • 作用 :确保数据的完整性,便于数据的查询和管理。

  • 示例 :在学生信息表中,学号可以作为主键,因为每个学生的学号是唯一的。

创建包含主键的表的 SQL 示例

CREATE TABLE student (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

2. 外键

  • 定义 :外键是一个表中的字段,其值引用另一个表中的主键值,用于建立两个表之间的关联关系。

  • 作用 :维护数据的一致性和完整性,通过外键约束,确保相关数据之间的对应关系。

  • 示例 :在订单表中,客户 ID 可以作为外键,引用客户信息表中的主键客户 ID,从而关联订单和客户信息。

创建包含外键的表的 SQL 示例

CREATE TABLE order (
    order_id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customer (id)
);

3. 触发器

  • 定义 :触发器是数据库中的一种特殊存储过程,当对表进行插入、更新或删除操作时,会自动触发执行。

  • 作用 :用于实现复杂的业务逻辑、数据验证、审计等功能。

  • 示例 :当向员工工资表中插入新记录时,可以触发一个触发器自动计算工资总额并更新到相应的统计表中。

4. 存储过程

  • 定义 :存储过程是一组预编译的 SQL 语句,存储在数据库中,可通过指定名称调用执行。

  • 作用 :提高代码复用性、执行效率,减少网络传输,便于维护和安全管理。

  • 示例 :创建一个存储过程用于查询指定学生的成绩信息,调用该存储过程时只需传入学生 ID 即可获取成绩数据。

二、数据操作语句

1. DROP、DELETE、TRUNCATE

操作类型作用特点
DROP删除表结构及数据,删除后无法通过 ROLLBACK 操作恢复用于删除整个表,操作后表不存在
DELETE删除表中的指定数据行,支持 WHERE 子句进行条件筛选,可结合事务回滚用于删除指定行,操作后表结构仍存在
TRUNCATE清空表中所有数据,速度快,不记录删除的每行数据日志,无法回滚用于快速删除表中所有行,操作后表结构仍存在,相当于 DELETE 语句删除所有行

2. 非关系型数据库与关系型数据库对比

数据库类型特点示例
关系型数据库采用关系模型来组织和存储数据,以表格形式呈现,具有固定的模式结构,支持 SQL 查询语言,强调数据的一致性和完整性,适合处理结构化数据。MySQL、Oracle、SQL Server 等
非关系型数据库不采用关系模型来组织和存储数据,常见的有键值存储、文档存储、列族存储、图数据库等类型。具有灵活的数据结构、高可扩展性、高性能读写等优点,适用于处理大规模、复杂多变的数据类型。MongoDB(文档型)、Redis(键值型)、HBase(列族型)、Neo4j(图数据库型)

3. 非关系型数据库

  • 定义 :非关系型数据库是指不同于传统关系型数据库的数据存储系统,它不采用关系模型来组织和存储数据,常见的有键值存储、文档存储、列族存储、图数据库等类型。

  • 特点 :具有灵活的数据结构、高可扩展性、高性能读写等优点,适用于处理大规模、复杂多变的数据类型。

  • 示例 :MongoDB 是一种文档型非关系型数据库,它使用 JSON 格式的文档来存储数据,便于处理半结构化数据,如在社交媒体应用中存储用户发布的各种类型的内容(文字、图片、视频等)。

三、多表联查

1. 内联结(INNER JOIN)

  • 定义 :内联结是基于两个或多个表之间的指定条件进行连接,只返回满足连接条件的记录行。

  • 示例 :查询学生信息表和成绩表,获取成绩大于 80 分的学生姓名和对应成绩。

SELECT student.name, score.grade
FROM student
INNER JOIN score ON student.id = score.student_id
WHERE score.grade > 80;

2. 左联结(LEFT JOIN)

  • 定义 :左联结返回左表中的所有记录以及右表中满足连接条件的记录。如果右表中没有匹配的记录,则结果中右表的字段将为 NULL。

  • 示例 :查询所有学生的信息以及他们的成绩,即使某些学生没有成绩记录。

SELECT student.name, score.grade
FROM student
LEFT JOIN score ON student.id = score.student_id;

3. 右联结(RIGHT JOIN)

  • 定义 :右联结与左联结相反,返回右表中的所有记录以及左表中满足连接条件的记录。如果左表中没有匹配的记录,左表的字段将为 NULL。

  • 示例 :查询所有成绩记录以及对应的学生信息,即使某些成绩没有关联的学生记录。

SELECT student.name, score.grade
FROM student
RIGHT JOIN score ON student.id = score.student_id;

4. 外连接(OUTER JOIN)

  • 定义 :外连接包括左外连接、右外连接和全外连接(返回左右表中所有记录,匹配则显示对应字段,不匹配则为 NULL)。它是对内连接的扩展,用于获取更全面的数据视图。

  • 示例 :使用全外连接查询学生信息和成绩信息,无论是否有关联记录。

SELECT student.name, score.grade
FROM student
FULL OUTER JOIN score ON student.id = score.student_id;

5. 交叉连接(CROSS JOIN)

  • 定义 :交叉连接返回两个表的笛卡尔积,即左表中的每一行与右表中的每一行组合。

  • 示例 :查询两个表,生成所有可能的部门与员工的组合(假设存在部门表和员工表)。

SELECT department.dept_name, employee.name
FROM department
CROSS JOIN employee;

6. 笛卡尔积

  • 定义 :笛卡尔积是数学中的概念,在数据库中指两个或多个表进行连接时,没有指定连接条件或者连接条件不正确,导致返回的结果集是参与连接的表的行数相乘的所有组合。

  • 问题 :通常情况下笛卡尔积会生成大量无意义的数据组合,会对查询性能和结果准确性产生负面影响,因此在实际开发中要谨慎处理,确保正确设置连接条件。

四、数据类型

1.VARCHAR 和 CHAR

数据类型特点使用场景
CHAR定长字符串,存储速度相对较快,因为其固定长度便于数据库进行快速定位和存储操作。适用于存储长度固定的数据,如身份证号码(18 位)、省市区代码等。
VARCHAR变长字符串,存储空间使用更灵活,根据实际数据长度动态分配存储空间。适用于存储长度不固定的数据,如姓名、地址、产品描述等。

五、聚合函数

1.COUNT使用的区别

函数形式作用与特点
COUNT(*)统计表中所有行的数量,包括 NULL 值行。它是最通用的统计方式,用于获取表中总行数。
COUNT(1)与 COUNT() 功能类似,都是统计行数。在某些数据库实现中,COUNT(1) 可能会比 COUNT() 稍微高效,因为数字类型的计算可能比其他类型更简单,但在大多数场景下两者的性能差异可以忽略不计。
COUNT(字段)统计指定字段非 NULL 值的行数。用于获取表中某个特定字段有实际值的记录数量,可用于数据分析中统计某个属性的有效数据量。

六、索引

1.什么是索引

  • 定义 :索引是数据库中用于提高数据查询速度的结构,它通过创建额外的数据结构来快速定位和访问表中的数据行。

  • 作用 :加快数据检索速度,减少磁盘 I/O 操作,提高数据库的整体性能。

2.使用索引的目的

  • 提高查询效率 :对于大型数据表,索引可以显著减少查询时间,特别是在需要频繁查询某些字段时。

  • 优化排序和分组操作 :索引可以辅助排序和分组操作,减少排序和分组过程中的数据比较和移动操作。

3.索引的分类

按照数据结构分类:

索引类型数据结构特点适用场景
B-Tree 索引基于平衡树结构,具有良好的查找、插入和删除性能。数据按顺序存储,支持范围查询和排序操作。适用于需要进行范围查询、排序操作或频繁插入删除的场景,如用户信息表中的姓名、年龄字段索引。
Hash 索引基于哈希表结构,通过哈希函数快速定位数据,具有极快的查找速度。但不支持范围查询和排序。适用于对等值查询性能要求极高的场景,如用户登录时的用户名或邮箱字段索引。
全文索引用于对文本数据进行索引,支持全文检索操作。能够快速定位包含特定关键词的文本数据,在搜索引擎、文档管理系统等场景中广泛应用。适用于需要对大量文本数据进行内容搜索的场景,如文章内容搜索、日志分析等。
空间索引专门用于地理空间数据的索引,能够高效地处理地理坐标、几何形状等空间数据的查询和分析。适用于地理信息系统(GIS)、位置服务等需要处理地理空间数据的应用场景。

按照逻辑结构分类:

索引类型特点
普通索引最基本的索引类型,不具有唯一性约束,用于提高查询效率。
唯一索引索引列的值必须唯一,用于确保数据的唯一性,同时提高查询速度。在插入或更新数据时,数据库会自动检查唯一性约束。

4.创建索引

  • 语法

    • 创建普通索引:CREATE INDEX 索引名 ON 表名 (列名);

    • 创建唯一索引:CREATE UNIQUE INDEX 索引名 ON 表名 (列名);

  • 示例 :为学生表的学号列创建唯一索引,确保学号的唯一性并提高查询速度。

CREATE UNIQUE INDEX idx_stu_no ON student (stu_no);

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

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

相关文章

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…

Golang——9、反射和文件操作

反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…

day36-多路IO复用

一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…

STM32---外部32.768K晶振(LSE)无法起振问题

晶振是否起振主要就检查两个1、晶振与MCU是否兼容;2、晶振的负载电容是否匹配 目录 一、判断晶振与MCU是否兼容 二、判断负载电容是否匹配 1. 晶振负载电容(CL)与匹配电容(CL1、CL2)的关系 2. 如何选择 CL1 和 CL…

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …

PHP 8.5 即将发布:管道操作符、强力调试

前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…