【学习笔记】MySQL(Ⅰ)

news2025/1/20 6:01:22

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-DD 3B 1000-01-01 ~ 9999-12-31
TIME 时间值或持续时间 HH:MM:SS 3B -839:59:59~838:59:59
YEAR 年份值 YYYY 1B 1901~2155
DATETIME 日期值+时间值 YYYY-MM-DD HH:MM:SS 8B 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
TIMESTAMP 日起值+时间值的时间戳形式 / 4B 1970-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.coloradmin.cn/o/1790112.html

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

相关文章

HTML跨年烟花

目录 写在前面 关于小编 HTML简介 程序设计 系列文章 写在后面 写在前面 学会了这个html烟花秀,跨年就不缺文案喽~ 关于小编 平易近人,慈眉善目,爱交朋友,舍己为人,和蔼可亲,能说会道,…

中国250米全钾(tk)含量数据

全钾是指土壤中含有的全部钾。是水溶性钾、交换性钾、非交换性钾和结构态钾的总和。土壤全钾含量为0.3%〜3.6%,一般为1%〜2%。全钾仅反映了土壤钾素的总储量.其中90%〜98%在相当长时间内是无效的,因此全钾值不能用以指导施肥。 土壤中的钾包括3种形态&am…

JVM类加载机制和双亲委派

类加载机制 java文件需要编译成字节码文件(.class文件),jvm是通过类加载机制,将.class文件加载进内存,经过验证连接->初始化直到使用该对象的过程就是类加载机制,当new对象的时候,jvm首先去常量池寻找该类的符号引用…

try…except语句

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在程序开发时,有些错误并不是每次运行都会出现。例如,实例01,只要输入的数据符合程序的要求,程序就可…

外汇天眼:Marqeta加速欧洲业务发展,华沙办公室正式开幕

Marqeta,全球现代卡发行平台,今天宣布在波兰华沙设立新办公室,以支持其长期的业务和增长战略。通过在波兰设立业务,Marqeta直接获得了进入欧盟的通道,为其在跨境增长和提供增强服务奠定了良好基础。波兰作为欧洲中心位…

代码随想录算法训练营第十三天| 102. 二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树

102. 二叉树的层序遍历 题目链接&#xff1a;102. 二叉树的层序遍历 文档讲解&#xff1a;代码随想录 状态&#xff1a;dfs没写出来&#xff0c;bfs不知道如何分层 import java.util.*;public class BinaryTreeLevelOrderTraversal {// 用于存储每一层的节点值List<List<…

大数据之Schedule调度错误(一)

当我们在利用ooize发起整个任务的调度过程中,如果多个调度任务同时运行并且多个调度任务操作了相同的表,那么就会出现如下的错误关系: Invalid path hdfs://iZh5w01l7f8lnog055cpXXX:8000/user/admin/xxx: No files matching path hdfs://iZh5w01l7f8lnog055cpXXX:8000/user/ad…

MySQL—函数(介绍)—字符串函数(基础)

一、引言 提到函数&#xff0c;在SQL分类中DQL语句中有一个聚合函数&#xff0c;如COUNT()、SUM()、MAX()等等。这些都是一些常见的聚合函数&#xff0c;而聚合函数只是函数的一种&#xff0c;接下来会详细的学习和介绍一下函数的应用场景和以及 mysql 当中文件的函数有哪些。 …

JAVA小案例-用循环语句输出1-1000以内能被5整除的数,每5个一行

JAVA小案例-用循环语句输出1-1000以内能被5整除的数&#xff0c;每5个一行 直接看代码&#xff1a; public class Zhengchu {/*** 用循环语句输出1-1000以内能被5整除的数&#xff0c;每5个一行** param args*/public static void main(String[] args) {for (int i 1; i <…

HTML 转义字符(escape characters)及其对应的符号(symbols)

以下是常见的 HTML 转义字符及其对应的符号&#xff0c;这些可以用于在 HTML 或 JSX 中避免解析错误和特殊字符的冲突&#xff1a; 空格 ( ): 或 引号: 单引号&#xff08;&#xff09;&#xff1a;&apos;、&lsquo;、、&rsquo;双引号&#xff08;"&#x…

GPS定位器专用可编程晶振SG-8018CB

随着全球定位系统&#xff08;GPS&#xff09;技术的普及&#xff0c;GPS定位器在各种领域中得到了广泛应用&#xff0c;如车辆跟踪、个人定位、资产管理和户外活动等。为了确保GPS定位器的高精度和可靠性&#xff0c;选择合适的时钟源至关重要。SG-8018CB可编程晶振作为一款高…

Linux:基本指令

文章目录 ls指令pwd指令cd指令touch指令mkdir指令rmdir指令 && rm指令cp指令man指令echo指令输出重定向追加重定向 cat指令输入重定向 mv指令which指令alias指令more && less指令head && tail指令事件相关的指令date显示时间戳 cal指令find指令grep指令…

十三、resultMap解析

分为两部分&#xff1a;解析和使用 解析 1.解析XML的时候单独解析所有的resultMap标签&#xff0c;封装成ResultMap对象存入configuration中 2.解析XML中的SQL语句&#xff0c;封装MappedStatement对象&#xff0c;这里会根据SQL的返回类型是resultMap还是resultType做处理。如…

乡村振兴与乡村旅游品牌化:打造具有地方特色的乡村旅游品牌,提升乡村旅游吸引力,促进美丽乡村建设

目录 一、引言 二、乡村旅游品牌化的重要性 &#xff08;一&#xff09;增强乡村旅游的辨识度 &#xff08;二&#xff09;提升乡村旅游的附加值 &#xff08;三&#xff09;促进乡村文化的传承与创新 三、打造具有地方特色的乡村旅游品牌 &#xff08;一&#xff09;明…

人工智能与能源约束的矛盾能否化解

以下文章来源&#xff1a;澎湃新闻 人工智能技术在台前展示的是比特世界的算力、算法和数据&#xff0c;但其“轻盈的灵魂”背后则是土地、能源和水等物理世界“沉重的肉身”。根据本文三种情境的模拟测算&#xff0c;未来人工智能发展需要可持续的巨量能源支撑&#xff0c;能源…

使用 NVIDIA NIM 部署生成式 AI 的简单指南

使用 NVIDIA NIM 部署生成式 AI 的简单指南 无论您是在本地还是在云端工作&#xff0c;NVIDIA NIM 推理微服务都可以为企业开发人员提供来自社区、合作伙伴和 NVIDIA 的易于部署的优化 AI 模型。作为 NVIDIA AI Enterprise 的一部分&#xff0c;NIM 提供了一条安全、简化的前进…

Excel 每 N 行拼成一行

F列每四行对应一条记录&#xff1a; ABCDEF1NameAddressCityShort IDCompany 122222 al street3Blue cheese415Company 261111 arm rd7Ranch829Company 3103333 raindrop drive11Peanut123 需要把F列整理成规范表格&#xff0c;按行写入A-D&#xff1a; ABCDEF1NameAddressC…

python中return语句的用法

一、了解函数的标准格式 def 函数名(参数1, 参数2, ...&#xff0c;参数n):函数体第一行代码函数体第二行代码函数体第三行代码...return 语句变量 函数名(参数1&#xff0c;参数2&#xff0c;...&#xff0c;参数n) python遇到return语句时&#xff0c;会结束整个函数调用&a…

VS2017配置OpenCV4.5.1

VS2017配置OpenCV 一、下载OpenCV二、配置OpenCV的电脑环境变量三、配置visual Studio添加路径复制文件到C盘 四、如何使用注意运行时选择Debug x64 五、报错&#xff1a;VSOpencv出现&#xff1a;xxx处有未经处理的异常: Microsoft C 异常: cv::Exception&#xff0c;位于内存…

OBS+nginx+nginx-http-flv-module实现阿里云的推流和拉流

背景&#xff1a;需要将球机视频推送到阿里云nginx&#xff0c;使用网页和移动端进行播放&#xff0c;以前视频格式为RTMP&#xff0c;但是在网页上面播放RTMP格式需要安装flash插件&#xff0c;chrome浏览器不给安装&#xff0c;调研后发现可以使用nginx的模块nginx-http-flv-…