【最全】MySQL知识点总结

news2024/11/24 19:42:22

先简单的大致了解一下,学习知识的目的是运用!!!

 

MySQL是什么?

一种关系型数据库管理系统,也就是说这是用来管理数据库的工具。

SQL相关命令

数据库相关

创建数据库:CREATE DATABASE 数据库名;

删除数据库:DROP DATABASE 数据库名;

数据表相关

创建数据表:CREATE TABLE table_name (column_name column_type);【属性要初始化】

删除数据表:DROP TABLE table_name ;

表中数据的增删查改

增加/插入数据:INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

删除数据:DELETE FROM table_name [WHERE Clause]

查找数据:SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M]

更新/修改数据:UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

子句

where 子句:有条件地从表中选取数据

like 子句:使用百分号 %字符来表示任意字符,若没有使用百分号 %,LIKE 子句与等号 = 的效果是一样的

UNION联合

用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中,多个 SELECT 语句会删除重复的数据。

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [ALL | DISTINCT]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];

  • DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。

  • ALL: 可选,返回所有结果集,包含重复数据。

查询结果排序

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

  • 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
  • 你可以设定多个字段来排序。(是否会冲突???)
  • 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
  • 你可以添加 WHERE...LIKE 子句来设置条件。

查询结果分组

GROUP BY 语句根据一个或多个列对结果集进行分组。

在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

联合多表查询—连接

INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。

(也可以省略 INNER 使用 JOIN,效果一样)

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

NULL值处理

MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作。

为了处理这种情况,MySQL提供了三大运算符:

  • IS NULL: 当列的值是 NULL,此运算符返回 true。
  • IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
  • <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。

正则表达式匹配

MySQL可以通过 LIKE ...% 来进行模糊匹配。

同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。

比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务

  • 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。
  • 事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。
  • 事务用来管理 insert,update,delete 语句

事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

  • 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。

  • 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

事务有自己相关的控制语句。

ALTER命令

ALTER 命令用于修改数据库、表和索引等对象的结构。

允许你添加、修改或删除数据库对象,并且可以用于更改表的列定义、添加约束、创建和删除索引等操作。

索引

MySQL 索引是一种数据结构,用于加快数据库查询的速度和性能。

MySQL 索引的建立对于 MySQL 的高效运行是很重要的,索引可以大大提高 MySQL 的检索速度。

临时表

MySQL 临时表在我们需要保存一些临时数据时是非常有用的。

临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。

CREATE TEMPORARY TABLE

复制表

完整的复制MySQL数据表,步骤如下:

  • 使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等。
  • 复制以下命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构。
  • 如果你想复制表的内容,你就可以使用 INSERT INTO ... SELECT 语句来实现。

元数据

MySQL以下三种信息:

  • 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数。
  • 数据库和数据表的信息: 包含了数据库及数据表的结构信息。
  • MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等。

在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息。

序列使用

MySQL 序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键,

如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。

使用 MySQL AUTO_INCREMENT 来定义序列

处理重复数据

防止出现重复数据:

可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。

统计重复数据:

过滤重复数据:

在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据,也可以使用 GROUP BY 来读取数据表中不重复的数据。

删除重复数据:删除数据表中的重复数据

SQL注入

通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。

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

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

相关文章

12、Pinia 快速入门

1、什么是Pinia Pinia 是 Vue 的最新 状态管理工具 &#xff0c;是 Vuex 的 替代品 2、手动添加Pinia到Vue项目 在实际开发项目的时候,关于Pinia的配置,可以在项目创建时自动添加 现在我们初次学习&#xff0c;从零开始&#xff1a; 1.使用 Vite 创建一个空的 Vue3 项目 n…

【JUC系列-02】深入理解CAS底层原理和基本使用

JUC系列整体栏目 内容链接地址【一】深入理解JMM内存模型的底层实现原理https://zhenghuisheng.blog.csdn.net/article/details/132400429【二】深入理解CAS底层原理和基本使用https://blog.csdn.net/zhenghuishengq/article/details/132478786 深入理解cas的底层原理和基本使用…

Bootstrap的类container与类container-fluid有什么区别?

阅读本文前建议先阅读下面两篇博文&#xff1a; 怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】 在CSS中&#xff0c;盒模型中的padding、border、margin是什么意思&#xff1f; 以下是Bootstrap的类 container 的盒…

【Java 高阶】一文精通 Spring MVC - 标签库 (八)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

Android——基本控件(下)(十八)

1. 时钟组件&#xff1a;AnalogClock与DigitalClock 1.1 知识点 &#xff08;1&#xff09;掌握AnalogClock与DigitalClock的使用&#xff1b; 1.2 具体内容 package com.example.clockproject;import android.os.Bundle; import android.app.Activity; import android.view…

含泪总结当遇到linux文件系统根目录上的磁盘空间不足怎么办!!

那天写项目代码&#xff0c;cmake编译生成文件的时候给我说磁盘不够了..文件没法生成&#xff0c;因为当时是远程连接的&#xff0c;所以就先断了连接&#xff0c;重启了虚拟机&#xff01;好家伙重启之后因为内存不够&#xff0c;根本进不到gnu界面&#xff0c;就是想重新扩容…

一篇带你肝完Python逆向为什么要学webpack,学完之后到底又该怎么用?

目录 前言简单示例配置示例深入案例分析 总结 前言 大家好&#xff0c;我是辣条哥&#xff01; 之前讲了很多关于基础方面的内容&#xff0c;从本章开始辣条我会开始慢慢开始跟大家解析一些进阶知识以及案例 废话不多说今天我们就深入解析一下webpack&#xff0c;我们先聊一下P…

【LeetCode】 双指针,快慢指针解题

1.删除有序数组中的重复项 class Solution {public int removeDuplicates(int[] nums) {int fast 1;int slow 1;for(;fast<nums.length;fast) {if( nums[fast] !nums[fast-1] ) {nums[slow] nums[fast];slow;}}return slow;} } 2.移除元素 class Solution {public int re…

2023年高教社杯 国赛数学建模思路 - 复盘:人力资源安排的最优化模型

文章目录 0 赛题思路1 描述2 问题概括3 建模过程3.1 边界说明3.2 符号约定3.3 分析3.4 模型建立3.5 模型求解 4 模型评价与推广5 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 描述 …

【MD5加密结果不一致问题】同一个文本字符串,使用MD5加密之后,得出的加密结果居然不相同

目录 1.1、错误描述 1.2、解决方案 1.3、MD5工具类 1.1、错误描述 今天工作中&#xff0c;遇到一个奇怪的问题&#xff0c;我负责对接第三方的短信发送接口&#xff0c;接口中有一个入参是sign加签字段&#xff0c;根据短信内容进行MD5加密 之后得到&#xff0c;于是我就是…

STM32使用PID调速

STM32使用PID调速 PID原理 PID算法是一种闭环控制系统中常用的算法&#xff0c;它结合了比例&#xff08;P&#xff09;、积分&#xff08;I&#xff09;和微分&#xff08;D&#xff09;三个环节&#xff0c;以实现对系统的控制。它的目的是使 控制系统的输出值尽可能接近预…

基于Llama2和LangChain构建本地化定制化知识库AI聊天机器人

参考&#xff1a; 本项目 https://github.com/PromtEngineer/localGPT 模型 https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML 云端知识库项目&#xff1a;基于GPT-4和LangChain构建云端定制化PDF知识库AI聊天机器人_Entropy-Go的博客-CSDN博客 1. 摘要 相比OpenAI的…

背包问题DP(01背包 完全背包 多重背包 分组背包)

目录 背包问题的简介背包问题的定义背包问题的分类 01背包问题典型例题实现思路二维数组代码实现一维数组优化实现扩展&#xff1a;记忆化搜索 DPS 实现 01背包之恰好装满思路代码实现 完全背包问题典型例题思路分析二维数组代码实现一维数组优化实现 多重背包问题多重背包问题…

网易一面:单节点2000Wtps,Kafka怎么做的?

说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如网易、有赞、希音、百度、网易、滴滴的面试资格&#xff0c;遇到一几个很重要的面试题&#xff1a; 问题1&#xff1a;单节点2000Wtps&#xff0c;Kafka高性能原理是什么&#…

测试人员如何通过AI提高工作效率!

随着AI技术的兴起&#xff0c;像OpenAI推出的ChatGPT、Microsoft发布的Microsoft 365 Copilot、阿里的通义千问、百度的文心一言、华为的盘古大模型等。很多测试人员开始担心&#xff0c;岗位是否会被AI取代&#xff1f;其实取代你的不是AI&#xff0c;而是会使用AI的测试人&am…

[论文分享]VOLO: Vision Outlooker for Visual Recognition

VOLO: Vision Outlooker for Visual Recognition 概述 视觉 transformer&#xff08;ViTs&#xff09;在视觉识别领域得到了广泛的探索。由于编码精细特征的效率较低&#xff0c;当在 ImageNet 这样的中型数据集上从头开始训练时&#xff0c;ViT 的性能仍然不如最先进的 CNN。…

解密长短时记忆网络(LSTM):从理论到PyTorch实战演示

目录 1. LSTM的背景人工神经网络的进化循环神经网络&#xff08;RNN&#xff09;的局限性LSTM的提出背景 2. LSTM的基础理论2.1 LSTM的数学原理遗忘门&#xff08;Forget Gate&#xff09;输入门&#xff08;Input Gate&#xff09;记忆单元&#xff08;Cell State&#xff09;…

【洛谷】P1678 烦恼的高考志愿

原题链接&#xff1a;https://www.luogu.com.cn/problem/P1678 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 将每个学校的分数线用sort()升序排序&#xff0c;再二分查找每个学校的分数线&#xff0c;通过二分找到每个同学估分附近的分数线。 最后…

【Java】对象与类

【Java】对象与类 文章目录 【Java】对象与类1、学习背景2、定义&使用2.1 创建类2.2 创建对象 3、static关键字3.1 修饰变量3.2 修饰方法3.3 修饰代码块3.4 修饰内部类 4、this关键字5、封装特性5.1 访问修饰符5.2 包的概念 6、构造方法7、代码块7.1 普通代码块7.2 成员代码…

信息安全:入侵检测技术原理与应用.(IDS)

信息安全&#xff1a;入侵检测技术原理与应用. 入侵检测是网络安全态势感知的关键核心技术&#xff0c;支撑构建网络信息安全保障体系。入侵是指违背访问目标的安全策略的行为。入侵检测通过收集操作系统、系统程序、应用程序、网络包等信息&#xff0c;发现系统中违背安全策略…