当前位置: 首页 > news >正文

MySQL-黑马程序员

目录

  • 一、基础篇
    • 1. MySQL概述
      • 1.1. 数据库相关概念
      • 1.2. MySQL数据库
        • 1.2.1. 版本
        • 1.2.2. 下载
        • 1.2.3. 安装
        • 1.2.4. 启动停止
        • 1.2.5. 客户端连接
        • 1.2.6. 数据模型
          • 1.2.6.1. 关系型数据库(RDBMS)
          • 1.2.6.2. 数据模型
    • 2. SQL
      • 2.1. SQL通用语法
      • 2.2. SQL分类
      • 2.3. DDL
        • 2.3.1. 数据库操作
        • 2.3.2. 表操作
          • 2.3.2.1. 表操作 - 查询创建
          • 2.3.2.2. 表操作 - 数据类型
          • 2.3.2.3. 表操作 - 修改
          • 2.3.2.4. 表操作 - 删除
      • 2.4. 图形化界面工具
      • 2.5. DML
        • 2.5.1. 添加数据
        • 2.5.2. 修改数据
        • 2.5.3. 删除数据
      • 2.6. DQL
        • 2.6.1. 基本语法
        • 2.6.2. 基本查询(不带任何条件)
        • 2.6.3. 条件查询(WHERE)
        • 2.6.4. 聚合函数(count、max、min、avg、sum)
        • 2.6.5. 分组查询(group by)
        • 2.6.6. 排序查询(order by)
        • 2.6.7. 分页查询(limit)
        • 2.6.8. 执行顺序
      • 2.7. DCL
        • 2.7.1. 管理用户
        • 2.7.2. 权限控制
    • 3. 函数
      • 3.1. 字符串函数
      • 3.2. 数值函数
      • 3.3. 日期函数
      • 3.4. 流程函数
    • 4. 约束
      • 4.1. 概述
      • 4.2. 约束演示
      • 4.3. 外键约束
        • 4.3.1. 介绍
        • 4.3.2. 语法
        • 4.3.3. 删除/更新行为
    • 5. 多表查询
      • 5.1. 多表关系
        • 5.1.1. 一对多
        • 5.1.2. 多对多
        • 5.1.3. 一对一
      • 5.2. 多表查询概述
        • 5.2.1. 概述
        • 5.2.2. 分类
      • 5.3. 内连接
      • 5.4. 外连接
      • 5.5. 自连接
        • 5.5.1. 自连接查询
        • 5.5.2. 联合查询
      • 5.6. 子查询
        • 5.6.1. 概述
        • 5.6.2. 标量子查询
        • 5.6.3. 列子查询
        • 5.6.4. 行子查询
        • 5.6.5. 表子查询
    • 6. 事务
      • 6.1. 事务简介
      • 6.2. 事务操作
      • 6.3. 事务四大特性
      • 6.4. 并发事务问题
      • 6.5. 事务隔离级别
  • 二、进阶篇
    • 1. 存储引擎
    • 2. 索引
    • 3. SQL优化
    • 4. 视图/存储过程/触发器
    • 5. 锁
    • 6. InnoDB核心
    • 7. MySQL管理
  • 三、运维篇
    • 1. 日志
    • 2. 主从复制
    • 3. 分库分表
    • 4.读写分离

一、基础篇

1. MySQL概述

1.1. 数据库相关概念

在这里插入图片描述

DB(数据库)数据本身,而 DBMS(数据库管理系统)创建、管理、操作这个数据库的软件

关系:
    ① 创建与管理DBMS 用于创建和管理 DB。没有 DBMS,我们无法有效地组织和访问大量数据。
    ② 交互中介:用户或应用程序永远不会直接操作 DB(数据文件),而是通过 DBMS 来发出指令(例如使用 SQL 语言)。DBMS 接收指令,然后才对底层的数据文件进行读写操作。
    ③ 功能提供者:DBMS 提供了所有关键功能,如:
        ○ 数据定义:创建数据库、表结构。
        ○ 数据操作:增、删、改、查数据。
        ○ 数据维护:数据备份、恢复、完整性检查。
        ○ 多用户并发控制:保证多个用户同时操作时数据的一致性。
        ○ 安全性管理:设置用户权限。

举例:
    假设我们有一个 “公司员工管理系统”
    ● DB(数据库)
        ○ 它实际上是服务器硬盘上的几个文件(如 employee.mdf, employee.ldf)。
        ○ 这些文件里存储着所有具体的数据,例如:
            • 员工表(001, 张三, 工程师, 部门A)
            • 部门表(部门A, 研发部)
            • 工资表...
        ○ 这些数据的集合,就是数据库(DB)。它只是一堆二进制数据,静静地躺在硬盘上。
    ● DBMS(数据库管理系统)
        ○ 你需要在服务器上安装一个软件,比如 MySQLMicrosoft SQL Server
        ○ 这个软件(DBMS)会负责:
            ① 当你执行 CREATE DATABASE Company; 命令时,DBMS 在硬盘上创建出那些数据库文件(DB)。
            ② 当你执行 SELECT * FROM 员工表 WHERE 姓名='张三'; 时,DBMS 会接收这个SQL命令,在数据库文件(DB)中查找数据,并将结果返回给你。
            ③ 当HR要为新员工李四增加记录时,她通过应用程序界面操作,应用程序会向 DBMS 发送 INSERT INTO ... 指令,由 DBMS 将新数据安全地写入数据库文件(DB)。
            ④ DBMS 还确保当HR在修改张三的工资时,财务无法同时删除张三的记录,这就是并发控制

总结:
在这里插入图片描述
    因此,DB是目的(存储什么),DBMS是手段(如何存储和管理)。我们通常所说的“使用Oracle数据库”或“使用MySQL数据库”,严格来说是指“使用Oracle DBMS”或“MySQL DBMS”来操作存储在其中的数据库(DB)。

  • 主流的关系型数据库管理系统
类型 数据库名称 主要特点 / 简介
商业数据库 Oracle Database 功能最强大、最复杂,常用于大型企业核心系统
Microsoft SQL Server 与Windows/.NET生态集成度高,易用性强
IBM Db2 以稳定性和处理海量数据见长,多见于金融领域
开源数据库 MySQL 全球最流行的开源数据库,速度快,社区活跃
PostgreSQL 功能先进,SQL标准兼容性好,支持高级数据类型
MariaDB MySQL的重要分支,完全兼容MySQL,更强调开源精神
云数据库(DBaaS) Amazon Aurora 亚马逊云自研,兼容MySQL/PostgreSQL,高性能高可用
Azure SQL Database 微软云托管的智能SQL Server服务
Google Cloud SQL 谷歌云托管服务,支持MySQL、PostgreSQL等
阿里云 PolarDB 阿里自研,兼容MySQL/PostgreSQL,云原生设计

说明:云数据库(DBaaS)是一种服务模式,其底层引擎通常基于前述的商业或开源数据库(如Amazon Aurora基于MySQL/PostgreSQL),但提供了免运维、高可用和弹性伸缩等云原生特性。

1.2. MySQL数据库

1.2.1. 版本

在这里插入图片描述

MySQL官方提供了两种不同的版本:

  • 社区版本(MySQL Community Server)
    免费,MySQL不提供任何技术支持

  • 商业版本(MySQL Enterprise Edition)
    收费,可以使用30天,官方提供技术支持

    如下内容均基于 MySQL 社区版-MySQL Community Server 8.0.26 进行测试完成。

1.2.2. 下载
1.2.3. 安装
1.2.4. 启动停止
1.2.5. 客户端连接
1.2.6. 数据模型
1.2.6.1. 关系型数据库(RDBMS)

    概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
    而所谓二维表,指的是由行和列组成的表,如下图(就类似于Excel表格数据,有表头、有列、有行,还可以通过一列关联另外一个表格中的某一列数据)。我们之前提到的MySQL、Oracle、DB2、SQLServer这些都是属于关系型数据库,里面都是基于二维表存储数据的。简单说,基于二维表存储数据的数据库就成为关系型数据库,不是基于二维表存储数据的数据库,就是非关系型数据库。

在这里插入图片描述
特点:
    a. 使用表存储数据,格式统一,便于维护。
    b. 使用SQL语言操作,标准统一,使用方便。

1.2.6.2. 数据模型

    MySQL是关系型数据库,是基于二维表进行数据存储的,具体的结构图下:
在这里插入图片描述

  • 我们可以通过MySQL客户端连接数据库管理系统DBMS,然后通过DBMS操作数据库。
  • 可以使用SQL语句,通过数据库管理系统操作数据库,以及操作数据库中的表结构及数据。
  • 一个数据库服务器中可以创建多个数据库,一个数据库中也可以包含多张表,而一张表中又可以包
    含多行记录。

2. SQL

    全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准。

2.1. SQL通用语法

    在学习具体的SQL语句之前,先来了解一下SQL语言的通用语法。
(1)SQL语句可以单行或多行书写,以分号结尾。
(2)SQL语句可以使用空格/缩进来增强语句的可读性。
(3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
(4)注释:
    • 单行注释:-- 注释内容 或 # 注释内容
    • 多行注释:/* 注释内容 */

2.2. SQL分类

    SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。
在这里插入图片描述

2.3. DDL

    Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段)。

2.3.1. 数据库操作

(1)查询所有数据库

show databases;

(2)查询当前数据库

select database();

(3)创建数据库

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ];

    在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。(可以通过 if not exists 参数来解决这个问题,数据库不存在,则创建该数据库;如果存在,则不创建。)

(4)删除数据库

drop database [ if exists ] 数据库名;

    如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再执行删除,否则不执行删除。

(5)切换数据库

use 数据库名;

    我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。

2.3.2. 表操作
2.3.2.1. 表操作 - 查询创建

(1)查询当前数据库所有表

show tables;

(2)查看指定表结构

des 表名;

    通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信息。
在这里插入图片描述

(3)查询指定表的建表语句

show create table 表名;

    通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询到,因为这部分是数据库的默认值,如:存储引擎、字符集等。
在这里插入图片描述

(4)创建表结构

CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ],字段2 字段2类型 [COMMENT 字段2注释 ],字段3 字段3类型 [COMMENT 字段3注释 ],......字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;
注意: [...] 内为可选参数,最后一个字段后面没有逗号
2.3.2.2. 表操作 - 数据类型

    MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型。

(1)数值类型

类型 含义 存储空间 取值范围(有符号 SIGNED) 取值范围(无符号 UNSIGNED) 描述
整数类型
TINYINT 非常小的整数 1 字节 -128 到 127 0 到 255 常用于状态值(如 0/1)、年龄等小范围数值。
SMALLINT 小整数 2 字节 -32,768 到 32,767 0 到 65,535 适用于中小范围数值。
MEDIUMINT 中等整数 3 字节 -8,388,608 到 8,388,607 0 到 16,777,215 不常用,介于 SMALLINT 和 INT 之间。
INTINTEGER 标准整数 4 字节 -2,147,483,648 到 2,147,483,647 0 到 4,294,967,295 最常用的整数类型,如用户ID、订单号等。
BIGINT 大整数 8 字节 -2^63 到 2^63-1 0 到 2^64-1 用于非常大的数字,如科学计算、大数据量计数。
浮点数类型 (近似值,可能存在精度损失)
FLOAT(M, D) 单精度浮点数 4 字节 约 -3.4E+38 到 -1.1E-38, 0, 1.1E-38 到 3.4E+38 M 是总位数,D 是小数点后的位数。例如 FLOAT(5,2) 可存储 -999.99999.99
DOUBLE(M, D) 双精度浮点数 8 字节 约 -1.7E+308 到 -2.2E-308, 0, 2.2E-308 到 1.7E+308 精度比 FLOAT 更高,范围更大。用于科学计算数据。
定点数类型 (精确值,适用于金融计算)
DECIMAL(M, D) 精确定点数 变长 取决于 M 和 D 的设定 最常用于需要精确计算的字段,如价格、金额。 M 是总精度(1~65),D 是小数位数(0~30)。默认是 DECIMAL(10,0)
http://www.dtcms.com/a/421046.html

相关文章:

  • 昆明响应式网站网站开发技术笔记
  • wordpress 即时站内搜索如何做介绍监控公司的网站
  • 捷信做单官方网站商丘市做1企业网站的公司
  • 网站设计超链接怎么做用ip访问没有备案的网站
  • 寻花问柳一家专注做男人喜爱的网站wordpress自动缩进
  • 从UI到UE:高端网站设计如何提升企业转化率
  • 网站运营编辑建设外卖网站需要哪些资质
  • 可以建设一个网站这几年做啥网站能致富
  • 影楼网站模板厦门跨境建站平台
  • 怎么注册网站域名备案网站公司谁跟客户客户沟通
  • 网站建设方案应该怎么做帮齐家网做的网站
  • 给你一个网站怎么做wordpress 抓取微信
  • 南京app网站开发公司wordpress转emlog博客
  • 网站开发 项目内容程序员外包接单
  • 建什么网站容易挣钱网页代码模板源码
  • 怎样自己做一个网站网络推广外包公司一般在哪里招聘
  • 企业网站建设销售前景python的网站开发
  • 建设网站费用记什么科目系统开发费
  • 南宁公司网站设计哈尔滨专业网站建设
  • 做自己的网站需要会编程吗江苏网站建设官网
  • 有什么网站是可以做动态图的企业网站建设绪论
  • 3d建模网站网页制作工具中文版
  • 沈阳网站建设技术公司怎么做监控网站
  • 建企业网站 硬件网站建设哪里培训
  • 望城区建设局网站做网站的做网站麻烦吗
  • 中山市做网站小程序价格表一览表
  • 销售crmseo课程培训课程
  • 营销型网站建设合同模板学编程的费用一般是多少
  • 第104期 matlab配置vlfeat库(v0.9.18)简单有用
  • 大型网站tag标签 索引网站怎么做动效