【学习笔记】MySQL(Ⅰ)

MySQL(Ⅰ)

  • 1、 介绍
    •       1.1、概述
    •       1.2、MySQL 的优缺点
    •       1.4、关系型数据库模型
  • 2、 基础篇 —— SQL(结构化查询语言)
    •       2.1、通用语法
    •       2.2、SQL 语句的分类
    •       2.3、DDL 语句
      •             2.3.1 数据库结构相关的语法
      •             2.3.2 数据表相关的语法
      •             2.3.3 类型
    •       2.4、DML语句
      •             2.4.1 增
      •             2.4.2 改
      •             2.4.3 删
    •       2.5、DQL 语句
      •             2.5.1 简单查询
      •             2.5.2 条件查询
      •             2.5.3 分组查询
      •             2.5.4 排序查询
      •             2.5.5 分页查询
      •             2.5.6 总结 —— DQL 的执行顺序
    •       2.6、DCL 语句
  • 3、 基础篇 —— 函数
    •       3.1、字符串函数
    •       3.2、数值函数
    •       3.3、日期时间函数
    •       3.4、控制流函数
  • 4、 基础篇 —— 约束
  • 5、 基础篇 —— 多表查询
    •       5.1、笛卡尔积
    •       5.2、内连接
    •       5.2、外连接
    •       5.3、自连接
    •       5.4、联合查询
    •       5.4、子查询
      •             5.4.1 标量子查询
      •             5.4.2 列子查询
      •             5.4.3 行子查询
  • 6、 基础篇 —— 事务
    •       6.1、简介
    •       6.2、事务操作
    •       6.3、事务的实现
    •       6.4、事务的四大特性 ACID
    •       6.5、并发事务出现的问题及事务隔离级别
      •             6.5.1 Read Uncommitted 存在脏读问题
      •             6.5.2 Read Committed 解决脏读问题
      •             6.5.3 Read Committed 存在不可重复读问题
      •             6.5.4 Repeatable Read 解决不可重复读问题
      •             6.5.5 Repeatable Read 存在幻读问题
      •             6.5.6 SERIALIZABLE 解决幻读问题
    •       6.6、总结

1、 介绍

      1.1、概述

        MySQL是一种广泛使用的开源关系数据库管理系统(RDBMS),由瑞典公司MySQL AB开发,后被Sun Microsystems收购,最终被Oracle Corporation收购。MySQL通常用于Web应用开发,其高性能、可靠性和便捷性使其成为许多开发者和企业的首选数据库管理系统
在这里插入图片描述

下载完 MySQL 之后会自动注册为系统服务并开启,要启动和停止服务有如下两种方式
1、打开系统的 ”服务“ 面板,找到 MySQL 相应的项然后启动 / 停止即可
2、使用系统的命令行工具,执行net start mysql的服务名称进行启动,执行net stop mysql的服务名称进行停止

链接 MySQL 的方式
1、打开 MySQL 自带的命令行工具 Common Line Client,然后输入密码即可
2、使用系统的命令行工具 cmd,输入 mysql [-h 127.0.0.1] [-p 3306] -u root -p,然后输入密码即可
3、使用 Navicat、DataGrip 之类的图形化工具进行连接

      1.2、MySQL 的优缺点

优点描述
易于使用MySQL安装和配置简单,提供了用户友好的图形界面工具(如MySQL Workbench)和命令行工具
开源且免费社区版本免费,且代码公开,可以根据需要进行定制
高性能在处理大规模数据和高并发环境中表现优越,特别是对于读操作的优化非常好
跨平台支持兼容多种操作系统,使其在不同环境中都能运行
灵活的存储引擎选择用户可以根据应用需求选择不同的存储引擎,优化性能
广泛的社区和文档支持提供了丰富的官方文档和大量的第三方资源,方便用户学习和解决问题
缺点描述
功能有限相比一些商业数据库系统(如Oracle Database、Microsoft SQL Server),MySQL在某些高级功能(如复杂查询优化、分析功能、并行查询等)方面较为薄弱
事务处理能力虽然InnoDB存储引擎支持事务处理,但MySQL整体的事务处理能力和复杂性控制不如一些其他高级数据库系统
存储引擎不一致不同的存储引擎在功能和特性上有所差异,可能导致开发和维护的复杂性增加
扩展性有限虽然MySQL支持一定程度的横向扩展,但在超大规模的分布式系统中,扩展性和灵活性不如一些NoSQL数据库(如Cassandra、MongoDB)
并发处理在极高并发场景下,MySQL的性能可能会受到限制,需要依赖于架构优化和硬件资源提升

      1.4、关系型数据库模型

        关系型数据库模型(Relational Database Model)是一种将数据组织成表格(关系)形式的数据库模型。每个表格包含若干行(记录)和列(字段),数据通过这些表格进行存储、管理和检索。关系型数据库模型是由Edgar F. Codd在1970年提出的,它的核心概念是通过数学上的关系理论来实现数据的组织和查询

基本概念描述
数据库
DB
数据库是一个有组织的数据集合,用于存储、管理和检索数据。数据库可以是文件系统中的一组文件,也可以是某种专门的数据库管理系统(DBMS)中的数据集合。在MySQL中,数据库是一个逻辑容器,包含了一组相关的表、视图、存储过程、触发器等
数据库管理系统
DBMS
数据库管理系统是用于创建、管理和操作数据库的软件。它提供了一系列工具和接口,使用户能够定义数据库结构、存储数据、执行查询、进行备份和恢复等。DBMS负责管理数据库中的数据,确保数据的一致性、完整性和安全性
关系型数据库管理系统
RDBMS
关系型数据库管理系统是一种特定类型的DBMS,它使用关系型数据模型来管理数据。关系型数据模型将数据组织成表格(关系),表格由行和列组成。RDBMS通过SQL(结构化查询语言)提供对数据的访问和操作。MySQL就是一种RDBMS
MySQL一种具体的RDBMS实现,广泛应用于各种数据管理需求

TIP:DBA(Database Administrator) 是数据库管理员

2、 基础篇 —— SQL(结构化查询语言)

      2.1、通用语法

通用语法
SQL 语句可以写单行 / 多行,以分号结尾(非必须)
SQL 语句可以使用空格 / 缩进来增强语句的可读性
MySQL 数据库的 SQL 不区分大小写,关键字建议用大写
单行注释使用--或者#,多行注释使用/* */

      2.2、SQL 语句的分类

分类描述
数据定义语言 DDL用于定义和管理数据库结构(数据库、表、字段)
数据操作语言 DML用于修改数据库中的数据(增、删、改)
数据查询语言 DQL用于查询数据库中的数据(查)
数据控制语言 DCL用于创建数据库用户、控制数据库的访问权限

      2.3、DDL 语句

            2.3.1 数据库结构相关的语法

查询所有的数据库:SHOW DATABASES;
查询当前的数据库:SELECT DATABASE();
创建:CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ];
删除:DROP DATABASE [ IF EXISTS ] 数据库名;
使用:USE 数据库名;

-- 创建数据库
CREATE DATABASE mysql_study DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;-- 显示当前的数据库
SELECT DATABASE();

            2.3.2 数据表相关的语法

查询当前数据库的所有表:SHOW TABLES;
查询表结构:DESC 表名;
查询指定表的建表语句:SHOW CREATE TABLE 表名;

创建表:CREATE TABLE 表名( 字段1 类型 [COMMENT 注释], 字段2 类型 [COMMENT 注释]... )[COMMENT 注释]
修改表名:rename table 旧名 to 新名
修改表结构(添加字段):ALTER TABLE 表名 ADD 字段 类型[(长度)] [COMMENT 注释] [约束];
修改表结构(修改字段):ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型[(长度)] [COMMENT 注释] [约束];
修改表结构(删除字段):ALTER TABLE 表名 DROP 字段;
删除表:DROP TABLE [IF EXISTS] 表名;
删除表并重新创建该表(清空数据):TRUNCATE TABLE 表名

-- 创建表
CREATE TABLE tb_user ( id INT COMMENT '编号',name VARCHAR ( 50 ) COMMENT '用户名',age INT COMMENT '姓名',gender VARCHAR ( 1 ) COMMENT '性别'   # 最后一个字段不能加逗号
) COMMENT '用户表';-- 添加字段
ALTER TABLE tb_user ADD nickname VARCHAR ( 20 ) COMMENT '昵称';-- 修改字段
ALTER TABLE tb_user CHANGE nickname nickname VARCHAR ( 30 ) COMMENT '昵称';-- 删除字段
ALTER TABLE tb_user DROP nickname;

            2.3.3 类型

数值类型描述大小有符号范围无符号范围
TINYINT小整数值1B(-128,127)(0,255)
SMALLINT大整数值2B(-32768,32767)(0,65535)
MEDIUMINT大整数值3B(-8388608,8388607)(0,16777215)
INT / INTEGER大整数值4B(-231-1,231(0,232-1)
BIGINT极大整数值8B(-263-1,263(0,264-1)
FLOAT单精度浮点数4B
DOUBLE双精度浮点数8B
DECIMAL小数值/依赖于精度M和标度D依赖于精度M和标度D
字符串类型描述范围
CHAR定长字符串0~28-1B
VARCHAR变成字符串0~216-1B
TINYBLOB二进制数据0~28-1B
BLOB二进制数据0~216-1B
MEDIUMBLOB二进制数据0~224-1B
LONGBLOB二进制数据0~232-1B
TINYTEXT文本数据0~28-1B
TEXT文本数据0~216-1B
MEDIUMTEXT文本数据0~224-1B
LONGTEXT文本数据0~232-1B
日期类型描述格式大小范围
DATE日期值YYYY-MM-DD3B1000-01-01 ~ 9999-12-31
TIME时间值或持续时间HH:MM:SS3B-839:59:59~838:59:59
YEAR年份值YYYY1B1901~2155
DATETIME日期值+时间值YYYY-MM-DD HH:MM:SS8B1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP日起值+时间值的时间戳形式/4B1970-01-01 00:00:01 ~ 2038-01-19 03:14:07
-- 创建一张员工表
CREATE TABLE employee (id INT COMMENT '编号',workno VARCHAR ( 10 ) COMMENT '员工工号',name VARCHAR ( 10 ) COMMENT '员工姓名',gender CHAR ( 1 ) COMMENT '性别',age TINYINT UNSIGNED COMMENT '年龄',idcard CHAR ( 18 ) COMMENT '身份证号',entrydate DATE COMMENT '入职时间' 
) COMMENT '员工表';

Tip
1、MySQL 8.0 及以上版本 INT 类型不需要指定宽度
2、字符串类型需要指定字符长度(不是字节长度)

      2.4、DML语句

            2.4.1 增

指定字段,一条:INSERT INTO 表名 (字段1,字段2...) VALUES (值1,值2...);
指定字段,批量:INSERT INTO 表名 (字段1,字段2...) VALUES (值1,值2...),(值1,值2...),...;
全部字段,一条:INSERT INTO 表名 VALUES (值1,值2...);
全部字段,批量:INSERT INTO 表名 VALUES (值1,值2...),(值1,值2...),...;

-- 插入一条数据
INSERT INTO employee(id, workno, name, gender, age, idcard, entrydate) VALUE (1, '1', 'niki', '男', 24, '123456789012345678', '2000-01-01')-- 插入多条数据
INSERT INTO employee
VALUES (2, 2, '张无忌', '男', 18, '123456789012345670', '2005-09-01'),(3, 3, '韦一笑', '男', 38, '123456789712345670', '2005-08-01'),(4, 4, '赵敏', '女', 18, '123456757123845670', '2009-12-01'),(5, 5, '小昭', '女', 16, '123456769012345678', '2007-07-01'),(6, 6, '杨道', '男', 28, '12345678931234567X', '2006-01-01'),(7, 7, '范骚', '男', 40, '123456789212345670', '2005-05-01'),(8, 8, '黛绮丝', '女', 38, '123456157123645670', '2015-05-01'),(9, 9, '范凉凉', '女', 45, '123156789012345678', '2010-04-01'),(10, 10, '陈友凉', '男', 53, '123456789012345670', '2011-01-01'),(11, 11, '张士诚', '男', 55, '123567897123465670', '2015-05-01'),(12, 12, '常遇春', '男', 32, '123446757152345670', '2004-02-01'),(13, 13, '张三丰', '男', 88, '123656789012345678', '2020-11-01'),(14, 14, '灭绝', '女', 65, '123456719012345670', '2019-05-01'),(15, 15, '胡青牛', '男', 70, '12345674971234567X', &#

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

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

相关文章

Java实现俄罗斯方块游戏源代码(启动即可玩)

这是一个用Java Swing实现的俄罗斯方块游戏,具有经典的游戏机制和图形界面。游戏中,玩家需要旋转和移动不断下落的方块,使其填满一行来消除该行并得分。 该项目适合学习Java GUI编程、游戏开发基础以及面向对象编程(OOP&#xff0…

【Git】分支管理 -- 详解

一、理解分支 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C 的时候,另一个你正在另一个平行宇宙里努力学习 JAVA。 如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙…

【Angew】:催化材料中贵金属的最大效率-原子分散表面铂

图形摘要:通过在纳米结构 CeO2的 {100}“纳米袋”中稳定表面 Pt2物种(见图) ,可以制备具有最高贵金属分散度的Pt-CeO2材料。此类材料可以大大减少催化剂所需的贵金属量。 摘要:贵金属Pt是催化领域用途最广泛的元素&am…

【JS】JS高阶函数——reduce()用法详解总结。你不得不知道的数组reduce高级用法!

reduce用法详解总结 1.reduce语法说明1.1 方法介绍1.2 参数说明1.3 执行机制1.4 简单示例:数组求和 2. 高级用法2.1 权重求和2.2 代替some和every2.3 数组扁平2.4 数组去重2.5 字符统计和单词统计2.6 数组成员特性分组2.7 数字千分化 reduce函数是一个神奇的函数 1.…

LatexEasy:数学排版神器,你值得拥有!

🌟 还在为复杂的数学公式排版而烦恼吗?LatexEasy来帮你解决烦恼!🌟 📚 作为一名科研狗或者学术爱好者,你一定知道LaTeX在数学排版中的强大功能。但LaTeX的语法对于初学者来说,总是有些令人望而…

编程奇境:C++之旅,从新手村到ACM/OI算法竞赛大门(竞赛小魔法:万能头文件加速)

如果看到这里的各位是想要参加竞赛,那么接下来一点一些小魔法大家可以修炼一下下。 万能头文件 在那遥远的编程王国,藏着一件传说中的秘宝——bits/stdc.h,这不仅仅是一块普通的头文件石碑,它是C语言魔法的集大成者,…

C++ Qt实现http url启动本地应用程序

更多Qt文章,请访问《深入浅出C++ Qt开发技术专栏》:https://blog.csdn.net/yao_hou/category_9276099.html 我们在使用腾讯会议时经常会通过http链接打开本地的腾讯会议,例如下图: 打开会议发起人给的链接,会出现一个网页,然后点击加入会议就会启动本地的腾讯会议,本篇…

面向小白的 Spark MLlib 入门教学

目标: 介绍 Spark MLlib 框架及其在机器学习中的应用。培养学生基本的数据处理、建模和评估技能,使其能够独立进行简单的机器学习任务。教学大纲: 介绍 Spark MLlib 了解 Apache Spark 和 MLlib。MLlib 的主要功能和优势。演示如何在 Spark 中启动 MLlib。基本概念和环境设置…

msvcp140_1.dll丢失怎么修复,这四种修复方法可轻松搞定

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140_1.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,本文将介绍5种常见的解决方法,帮助大家快速恢复应用程序的正常运行。 一&a…

Python函数式编程

Python函数式编程内容不多,熟练使用它们能让代码简洁不少。 Python中的函数式编程强调使用函数作为基本构建块,支持高阶函数、 lambda函数、列表推导式、map()、filter()、reduce()等特性。下面是一些函数式编程的典型例子: 使用 map() 函数…

OCP 备份 OceanBase集群

注:OCP版本为4.2.1,OceanBase版本为 社区版4.2.1.0 手动备份 进行合并 在手动进行备份数据之前,建议进行一次OB集群合并(不影响业务的前提下),关于合并的概念请参考OB官网。 点击进入要备份的OB集群 点击左侧工具栏中的 合并管理,在 基本信息…

App UI 风格:独具一格,令人惊艳

App UI 风格:独具一格,令人惊艳

交叉导轨在医疗设备上的作用!

随着医疗器械行业的需求逐步增长,交叉导轨给医疗器械行业带来了广阔的发展前景。作为重要的精密传动元件,交叉导轨具有寿命长、高精度、高刚性、高耐腐蚀性和高稳定性等优点,满足精密仪器上对产品的高要求使用场景。 在医疗设备领域中交叉导轨…

LeetCode刷题 | Day 3 分割等和子集(Partition Equal Subset Sum)

LeetCode刷题 | Day 3 分割等和子集(Partition Equal Subset Sum) 文章目录 LeetCode刷题 | Day 3 分割等和子集(Partition Equal Subset Sum)前言一、题目概述二、解题方法2.1 动态规划思想2.1.1 思路讲解2.1.2 伪代码 + 逐步输出示例2.1.3 Python代码如下2.1.4 C++代码如…

电脑显示找不到steam_api.dll,无法继续执行代码的详细解决办法

电脑显示找不到steam_api.dll,无法继续执行代码?其实会造成这种原因,注意是由于操作不当或者是中了病毒而导致的,我们想要解决steam_api.dll的丢失还是比较简单的,目前有多种的steam_api.dll修复方法,今天我们就来详细…

前端如何去除本地版本号缓存

前端去除本地版本号缓存的方法有多种&#xff0c;下面是一些常见且实用的方法&#xff0c;结合参考文章中的信息进行归纳和总结&#xff1a; 使用meta标签 在HTML页面的<head>区域中添加以下meta标签&#xff1a;<meta http-equiv"pragma" content"no-…

MySQL数据库常见工具的基础使用_1

在上一篇文章中提到了对MySQL数据库进行操作的一些常见工具 mysqlcheck mysqlcheck是一个用于数据库表的检查&#xff0c;修复&#xff0c;分析和优化的一个客户端程序 分析的作用是查看表的关键字分布,能够让sql生成正确的执行计划(支持InnoDB,MyISAM,NDB)检查的作用是检查…

前端逆向之下载canvas引用的图片

前端逆向之下载canvas引用的图片 一、来源二、解决三、如果在Network这里也找不到呢&#xff1f; 一、来源 当我们用dom检查器的时候无法选中想要扒下来的图片&#xff0c;只能选中canvas&#xff0c;这种时候该怎么办呢&#xff1f; 二、解决 这个时候应该换个脑子&#xf…

怎么排查native层的bug

方法一&#xff1a; android studio debug 直接运行&#xff0c;LLBD 不要打断点。会自动定位到错误 方法二&#xff1a;错误日志分析 ---》奔溃后&#xff0c;在logcat中查询SIGSEGV信号量。 ---》在Device Explorer中 data/tombstones 里就有日志信息。 备注:。。。。$su…

AI菜鸟向前飞 — LangChain系列之十六 - Agent系列:从现象看机制(下篇)一款“无需传递中间步骤“的Agent

前言 AI菜鸟向前飞 — LangChain系列之十四 - Agent系列&#xff1a;从现象看机制&#xff08;上篇&#xff09; AI菜鸟向前飞 — LangChain系列之十五 - Agent系列&#xff1a;从现象看机制&#xff08;中篇&#xff09;一个Agent的“旅行” 回顾前两篇文章&#xff0c;大家会…