【学习笔记】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.…

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

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

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

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

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修复方法,今天我们就来详细…

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

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

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

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

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

前言 AI菜鸟向前飞 — LangChain系列之十四 - Agent系列:从现象看机制(上篇) AI菜鸟向前飞 — LangChain系列之十五 - Agent系列:从现象看机制(中篇)一个Agent的“旅行” 回顾前两篇文章,大家会…

endnote IEEEtran 参考文献 输出Latex

文章目录 参考文献Latex1. 新建格式1.1 新建BibTeX Export样式文件1.2 保存自定义文献格式 2 修改2.1 修改Journal Names 为简写2.2 修改Author Lists2.3 修改 模版 Templates 3. 特殊字符作者名字标题 4. 增加期刊简写4.1 删除已有简写的Term Lists 4.2 下载最新的Term LIsts4…

ApsaraMQ Copilot for RocketMQ:消息数据集成链路的健康管家

作者:文婷 引言 如何正确使用消息队列保证业务集成链路的稳定性,是消息队列用户首要关心的问题。ApsaraMQ Copilot for RocketMQ 从集成业务稳定性、成本、性能等方面帮助用户更高效地使用产品。 背景 消息队列产品通过异步消息的传递,来…

Linux shell编程学习笔记55:hostname命令——获取或设置主机名,显示IP地址和DNS、NIS

0 前言 2024年的网络安全检查又开始了,对于使用基于Linux的国产电脑,我们可以编写一个脚本来收集系统的有关信息。其中主机名也是我们要收集的信息之一。 1. hostname命令 的功能、格式和选项说明 我们可以使用命令 hostname --help 来查看hostname命令…

如何检查网站文件是否有病毒

本周有一个客户,购买Hostease的主机, 客户购买的是Linux虚拟主机,带cPanel面板的。询问我们的在线客服,他想检查下他的网站程序是否有病毒文件。Hostease虚拟主机附带病毒扫描软件功能,可以协助检查网站程序是否有病毒…

四足机器人步态仿真(二)PyBullet 机械臂运动学仿真(以绘制圆形路径为例)

观前提醒:本章主要内容是通过PyBullet仿真kuka机械臂,并控制机械臂末端按照预定轨迹运动 一、什么是运动学? 运动学是物理学的一个分支,专注于物体的运动描述,包括位移、速度、加速度等,而不考虑这些运动是…

【c++设计模式17】行为模式2:命令模式(Command Pattern)

【c设计模式17】行为模式2:命令模式(Command Pattern) 一、定义二、适用场景三、过程四、命令模式类图五、C示例代码六、使用注意事项 原创作者:郑同学的笔记 原创地址:https://zhengjunxue.blog.csdn.net/article/det…