【YushenFeb】MySQL基础

182 阅读7分钟

MySQL基础目录

  • MySQL概述
  • SQL
  • 函数
  • 约束
  • 多表查询
  • 事务

基础篇学习目标

成为初级MySQL工程师,解决大部分业务功能开发问题

一、MySQL概述

  1. 数据库相关概念
  2. MySQL数据库

1.1 数据库相关概念

名称全称简称
数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)
数据库管理系统操纵和管理数据库的大型软件DataBase Management System(DBMS)
SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准Structured Query Language(SQL)
  • 主流的关系型数据库管理系统
  1. Oracle
  2. MySQL
  3. Microsoft SQL Server ...

1.1.1 总结

  • 数据库:数据存储的仓库
  • 数据库管理系统:操纵和管理数据库的大型软件
  • SQL:操作关系型数据库的编程语言,是一套标准

1.2 MySQL数据库

1.2.1 安装

  • 社区版(MySQL Community Server)免费,MySQL不提供任何技术支持
  • 商业版(MySQL Enterprise Edition)收费,可以免费试用30天,官方提供技术支持

★Tips:

  • 本教程采用MySQL的社区版本(MySQL Community Server 8.0.26)

1.2.2 启动与停止

  • 启动
net start mysql80
  • 停止
net stop mysql80

★Tips:

  • mysql80为安装MySQL时注册的Windows系统服务名称
  • 默认mysql是开机自动启动

1.2.3 客户端连接

  • 方式一:MySQL提供的客户端命令行工具
  • 方法二:系统自带的命令行工具执行指令
mysql [-h 127.0.0.1] [-P 3306] -u root -p

★Tips:

  • 默认为本机IP的3306端口
  • -u以root用户连接,-p为输入密码
  • 使用这种方式时,需要配置PATH环境变量

1.2.4 关系型数据库(RDBMS)

  • 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库
  • 特点:
  1. 使用表存储数据,格式统一,便于维护
  2. 用SQL语言操作,标准统一,使用方便

1.2.5 数据模型

graph TD
    A[客户端] --> |连接| B(数据库管理系统DBMS)
    B --> C(通过SQL语句使用DBMS创建数据库或在指定数据库中创建表)
    C --> |SQL| D[数据库1]
    C --> |SQL| E[数据库2]
    C --> |SQL| F[数据库3]
	D --> |SQL| G1[表1-1]
	D --> |SQL| G2[表1-2]
	E --> |SQL| G3[表2-1]
	E --> |SQL| G4[表2-2]
	F --> |SQL| G5[表3-1]
	F --> |SQL| G6[表3-2]

1.2.6 总结

  • MySQL下载及安装:MySQL社区版
  • MySQL启动与停止
net start mysql80
net stop mysql80
  • MySQL客户端连接
MySQL自带的客户端命令行
mysql [-h 127.0.0.1] [-P 3306] -u root -p
  • MySQL数据模型:客户端-DBMS-数据库-表

二、SQL

  1. MySQL图形化界面
  2. SQL通用语法
  3. SQL分类
  4. DDL数据定义语言
  5. DML数据操作语言
  6. DQL数据查询语言
  7. DCL数据控制语言

2.1 MySQL图形化界面

  • Sqlyog
  • Navicat
  • DataGrip

2.2 SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. SQL语句可以使用空格/缩进来增强语句的可读性
  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  4. 注释:
  • 单行注释:--注释内容 或 #注释内容(MySQL特有)
  • 多行注释:/* 注释内容 */

2.3 SQL分类

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

2.4 DDL数据定义语言

2.4.1 DDL-数据库操作

  • 查询

查询所有数据库

SHOW DATABASES;

查询当前数据库

SELECT DATABASE;
  • 创建
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
  • 删除
DROP DATABASE [IF EXISTS] 数据库名;
  • 使用
USE 数据库名;

2.4.2 DDL-表操作-创建

CREATE TABLE 表名(
	字段1 字段1类型[COMMENT 字段1注释],
	字段2 字段2类型[COMMENT 字段2注释],
	字段3 字段3类型[COMMENT 字段3注释],
	...
	字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];

★Tips:

  • [...]为可选参数
  • 最后一个字段后无逗号

2.4.3 DDL-表操作-查询

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

2.4.4 DDL-表操作-数据类型

MySQL中的数据有很多,主要分为三类:

  1. 数值类型 数值类型.png

  2. 字符串类型 字符串类型.png

★Tips:

  • CHAR性能优于VARCHAR
  1. 日期时间类型 日期时间类型.png

2.4.5 DDL-表操作-修改

  • 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
  • 修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
  • 修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
  • 删除字段
ALTER TABLE 表名 DROP 字段名;
  • 修改表名
ALTER TABLE 表名 RENAME 新表名;
  • 删除表
DROP TABLE [IF EXISTS] 表名;
  • 删除指定表,并重新创建该表
TRUNCATE TABLE 表名;

★Tips:

  • 1.在删除表时,表中的数据将被全部删除

2.4.6 总结

  1. DDL-数据库操作
SHOW DATABASES;
CREATE DATABASE 数据库名;
USE 数据库名;
SELECT DATABASE();
DROP DATABASE 数据库名;
  1. DDL-表操作
SHOW TABLES;
CREATE TABLE 表名(字段 字段类型,字段 字段类型);
DESC 表名;
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD/MODIFY/CHANGE/DROP/RENAME TO...;
DROP TABLE 表名;

2.5 DML数据操作语言

2.5.1 DML-介绍

DML英文全称是(Data Manipulation Language),用来对数据库中标的数据记录进行增删改操作

  • 添加数据
INSERT
  • 修改数据
UPDATE
  • 删除数据
DELETE

2.5.2 DML-添加数据

  • 给指定字段添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...);
  • 给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,...);
  • 批量添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);
INSERT INTO 表名 VALUES (值1,值2,...),(值1,值2,...),(值1,值2,...);

★Tips:

  • 插入数据时,指定的字段顺序需要与值的顺序是一一对应的
  • 字符串和日期型数据应该包含在引号中
  • 插入的数据大小,应该在字段的规定范围内

2.5.3 DML-修改数据

UPDATE 表名 SET 字段名1=1,字段名2=2,...[WHERE 条件];

★Tips:

  • 修改语句的条件可有可无,如果没有条件,则会修改整张表的所有数据

2.5.4 DML-删除数据

DELETE FROM 表名 [WHERE 条件];

★Tips:

  • DELETE语句的条件可有可无,如果没有条件,则会删除整张表的所有数据
  • DELETE语句不能删除某一个字段的值(可以使用UPDATE)

2.5.5 总结

  1. 添加数据
INSERT INTO 表名 (字段名1,字段名2,...) VALUES (值1,值2,...);
  1. 修改数据
UPDATE 表名 SET 字段名1=1,字段名2=2,...[WHERE 条件];
  1. 删除数据
DELETE FROM 表名 [WHERE 条件];

2.6 DQL数据查询语言

2.6.1 DQL-介绍

DQL英文全称是(Data Query Language),用来查询数据库中表的记录

  • 查询关键字
SELECT

2.6.2 DQL-语法

SELECT
    字段列表
FROM
    表名列表
WHERE
    条件列表
GROUP BY
    分组字段列表
HAVING
    分组后条件列表
ORDER BY
    排序字段列表
LIMIT
    分页参数
  • 基本查询
  • 条件查询(WHERE)
  • 聚合函数(count、max、min、avg、sum)
  • 分组查询(GROUP BY)
  • 排序查询(ORDER BY)
  • 分页查询(LIMIT)

2.6.3 DQL-基本查询

  • 查询多个字段
SELECT 字段1,字段2,字段3,... FROM 表名;
SELECT * FROM 表名;
  • 设置别名
SELECT 字段1[AS别名1],字段2[AS别名2] ... FROM 表名;
  • 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

2.6.4 DQL-条件查询

  • 语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
  • 条件
  1. 比较运算符 比较运算符.png

  2. 逻辑运算符 逻辑运算符.png

2.6.5 DQL-聚合函数

  • 介绍:将一列数据作为一个整体,进行纵向计算。

  • 常见聚合函数 常见聚合函数.png

  • 语法

SELECT 聚合函数(字段列表) FROM 表名;

2.6.6 DQL-分组查询

  • 语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
  • WHERE和HAVING区别
  1. 执行时机不同:WHERE是分组之前进行过滤,不满足WHERE条件,不参与分组;而HAVING是分组之后对结果进行过滤。
  2. 判断条件不同:WHERE不能对聚合函数进行判断,而HAVING可以。

★Tips:

  • 执行顺序:WHERE>聚合函数>HAVING
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

2.6.7 DQL-排序查询