Mysql基础篇

【[痛苦过后,便是那几乎重生的蜕变!只不过,蜕变的过程,需要痛苦的考验来酝酿! ——《斗破苍穹》】

数据库相关概念

数据库:DataBase(DB),存储数据的仓库,数据是有组织的进行存储。

数据库管理系统:DataBase Management System(DBMS),操纵和管理数据库的大型软件

SQL:Structured Query Language(SQL),操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准

数据模型

关系型数据库:建立在关系模型基础上,由多张相互相互连接的二维表组成的数据库。

特点:

  1. 使用表存储数据,格式统一,便于维护。
  2. 使用SQL语言操作,标准统一,使用方便。

SQL语言基础

SQL通用语法:

  1. SQL语句可以单行或多行书写,以分号结尾。

  2. SQL语句可以使用空格/缩进来增强语句的可读性。

  3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

  4. 注释:

    单行注释:-- 注释内容 或 # 注释内容(MySQL特有)

    多行注释:/*注释内容*/

SQL分类:

DDL-数据库操作

查询

查询所有数据库:

1
SHOW DATABASES;

查询当前数据库:

1
SELECT DATABASES();

创建

1
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET字符集] [COLLATE 排序规则];

删除

1
DROP DATABASE[IF EXISTS]数据库名;

使用

1
USE 数据库名;

DDL-表操作-查询

查询当前数据库的所有表

1
SHOW TABLES;

查询表结构

1
DESC 表名;

查询指定表的建表语句

1
SHOW CREATE TABLE 表名;

DDL-表操作-创建

1
2
3
4
5
6
7
CREATE TABLE 表名(
字段1 字段1类型[COMMENT 字段1注释],
字段2 字段2类型[COMMENT 字段2注释],
字段3 字段3类型[COMMENT 字段3注释],
……
字段n 字段n类型[COMMENT 字段n注释]
)[COMMENT 表注释];

DDL-表操作-数据类型

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

数值类型:

字符串类型:

日期类型:

DDL-表操作-修改

添加字段:

1
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

修改数据类型:

1
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

修改字段和字段类型

1
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

删除字段:

1
ALTER TABLE 表名 DROP 字段名;

修改表名:

1
ALTER TABLE 表名 RENAME TO 新表名;

DDL-表操作-删除

删除表

1
DROP TABLE[IF EXISTS] 表名;

删除指定表,并重新创建该表

1
TRUNCATE TABLE 表名;

(注意:在删除表时,表中的全部数据也会被删除)

DML

介绍:

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

  1. 添加数据:INSERT
  2. 修改数据:UPDATE
  3. 删除数据:DELETE

DML-添加数据

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

注意:

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

DML-修改数据

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

注意:修改语句的条件可以有,也可以没有,没有时会修改整张表的所有数据

DML-删除数据

1
DELETE FROM 表名 [WHERE 条件];

注意:

  1. DELETE语句的条件可以有,也可以没有,没有时会删除整张表的所有数据
  2. DELETE语句不能删除某一个字段的值(可以使用UPDATE)

DQL

DQL,全称Data Query Language(数据查询语言),数据查询语言,用来查询数据库中的记录

查询关键字:SELECT

DQL语法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页列表

DQL-基本查询

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

DQL-条件查询

  1. 语法
1
SELECT 字段列表 FROM 表名 WHERE 条件列表;
  1. 条件

DQL-聚合函数

  1. 介绍:

将一列数据作为一个整体,进行纵向计算

  1. 常见聚合函数:
函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
  1. 语法:
1
SELECT 聚合函数(字段列表) FROM 表名;

DQL-分组查询

  1. 语法
1
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
  1. where和having的区别:

执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤

判断时机不同:where不能对聚合函数进行判断,但having可以。

注意:

执行顺序: where>聚合函数>having

分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。

DQL-排序查询

  1. 语法
1
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2 排序方式2;
  1. 排序方式:

ASC:升序(默认值)

DESC:降序

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

DQL-分页查询

  1. 语法
1
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数

注意:

  • 起始索引从0开始,起始索引= (查询页码-1)* 每页显示记录数
  • 分页查询是数据库的方言,不同数据库有不同的实现,MySQL中是LIMIT
  • 如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10.

DCL-管理用户

  1. 查询用户
1
2
USE mysql;
SELECT * FROM user;
  1. 创建用户
1
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
  1. 修改用户密码
1
ALTER USER '用户名'@'主机名' IDENTIFIED WITH  mysql_native_password BY '新密码';
  1. 删除用户
1
DROP USER '用户名'@'主机名'

注意:

  • 主机名可以用%通配
  • 这类SQL开发人员操作的比较少,主要是DBA(Database Administrator)使用

DCL-权限控制

Mysql中定义了很多种权限,但是常用的就以下几种: