Featured image of post MySQL操作

MySQL操作

默默无闻的后端……

MySQL是目前流行的数据库管理系统,使用SQL语法操作和管理。

准备工作

  1. 启动MySQL服务
1sudo service mysql start
  1. 登录MySQL
1mysql -u '用户名' -p '密码'

MySQL基本操作

通用语法

  1. 单行或多行书写,以分号结尾

  2. 可以使用空格/缩进。

  3. SQL语句不区分大小写,关键字建议大写。

  4. 单行注释:--注释内容# 注释内容;多行注释:/* 注释内容 */

基本概念

字段(columns):相当于表格中一列的数据。

数据(rows):相当于表格中一行的内容。

SQL语句分类

分类 全称 说明
DDL Data Definition Language 数据定义语言,用于定义数据库对象
DML Data Manipulation Language 数据操作语言,用于数据库中数据的增删改
DQL Data Query Language 数据查询语言,用于查询数据库中表的记录
DCL Data Control Language 数据控制语言,用于创建数据库用户、控制数据库访问权限

DDL

数据定义语言,用于定义数据库对象

数据库操作

  • 查询
1-- 查询所有数据库
2SHOW DATABASES;
3-- 查询当前数据库
4SELECT DATABASE();
  • 创建
1CREATE DATABASE [IF NOT EXISTS] 数据库名 
2[DEFAULT CHARSET 字符集] [COLLATE 排序规则];

MySQL中建议使用字符集UTF8mb4

  • 删除
1DROP DATABASE [IF EXISTS] 数据库名;
  • 使用
1USE 数据库名;

表操作

  1. 查询
  • 查询当前数据库中所有表
1SHOW TABLE;
  • 查询表结构
1DESC 表名;
  • 查询指定表的建表语句
1SHOW CREATE TABLE 表名;
  1. 创建
1CREATE TABLE 表名(
2    字段1 字段1类型 [COMMENT '字段1注释'],
3    字段2 字段2类型 [COMMENT '字段2注释'],
4    字段3 字段3类型 [COMMENT '字段3注释'],
5    ...
6    字段n 字段n类型 [COMMENT '字段n注释']
7) [COMMENT '表注释'];

参见:MySQL的数据类型

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

DML

数据操作语言,用于数据库中数据的增删改。

添加数据

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

注意:

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

修改数据

1UPDATE 表名 SET 字段名1=1,字段名2=2,... [WHERE 条件];
2-- 作用是修改满足条件的一行数据对应字段的值,不是修改字段名
3-- 如果没有修改条件,则会修改整张表中所有数据

删除数据

1DELETE FROM 表名 [WHERE 条件];
2-- 如果没有修改条件,则会修改整张表中所有数据
3-- DELETE语句不能删除某一个字段的值,可以使用UPDATE将该字段值设为NONE

DQL

数据查询语言,用于查询数据库中表的记录。

语法

1SELECT      -- 字段列表
2FROM        -- 表名列表
3WHERE       -- 条件列表
4GROUP BY    -- 分组字段列表
5HAVING      -- 分组后筛选列表
6ORDER BY    -- 排序字段列表
7LIMIT       -- 分页参数

基本查询

  • 查询多个字段
1-- 查询指定字段
2SELECT 字段1,字段2,... FROM 表名;
3-- 查询所有字段
4SELECT * FROM 表名;
  • 设置别名
1SELECT 字段1 [AS 别名1], 字段2 [AS 别名2],... FROM 表名;
2-- AS可省略
  • 去除重复记录
1SELECT DISTINCT 字段列表 FROM 表名;

条件查询

  1. 语法
1SELECT 字段列表 FROM 表名 WHERE 条件;
  1. 条件
运算符 功能 运算符 功能
> 大于 IN(…) 在in之后的列表中的值(多选一)
>= 大于等于 LIKE 占位符 模糊匹配( _ 匹配单个字符,% 匹配任意个字符)
< 小于 IS NULL 数据为空
<= 小于等于 AND 或 && 逻辑与
= 等于 OR 或 || 逻辑或
<> 或 != 不等于 NOT 或! 逻辑非
BETWEEN…AND… 在某个范围之间(含端点)

MySQL管理可视化

面对单调的MySQL代码是非常无聊的,因此通过软件可视化管理MySQL数据库是不错的选择。

  1. Navicat

Navicat是一款综合性的数据库管理软件,允许通过一个界面连接和管理多个数据库(其实这个功能大多数类似软件都有)。

Navicat提供多个版本,其中只有Navicat Premium Lite可免费使用(貌似还要注册一个账号)。

  1. DBeaver

功能与Navicat类似,但它提供免费的社区版下载,而且不用注册账号,就像JetBrain全家桶。

  1. MySQL Workbench

这是MySQL的官方提供的可视化管理工具,免费,但是没有中文支持。

MySQL的数据类型

  1. 数据类型
类型 大小 描述
TINYINT 1 byte 小整数集
SMALLINT 2 bytes 大整数集
MEDIUMINT 3 bytes 大整数集
INT 4 bytes 大整数集
BIGINT 8 bytes 极大整数集
FLOAT 4 bytes 单精度浮点数集
DOUBLE 8 bytes 双精度浮点数集
DECIMAL 依赖精度值(总数位)和标度值(小数位) 精确定点数
  1. 字符串类型
类型 大小 描述
CHAR() 0-255 bytes 定长字符串
VARCHAR() 0-65,535 bytes 变长字符串
TINYBLOB 0-255 bytes 二进制数据
TINYTEXT 0-255 bytes 短文本字符串
BLOB 0-65,535 bytes 二进制长文本数据
TEXT 0-65,535 bytes 长文本数据
MEDIUMBLOB 0-16,777,215 bytes 二进制中等长度文本数据
MEDIUMTEXT 0-16,777,215 bytes 中等长度文本数据
LONGBLOB 0-4,294,967,295 bytes 二进制极大文本数据
LONGTEXT 0-4,294,967,295 bytes 极大文本数据
  1. 日期类型
类型 大小 格式 描述
DATA 3 YYYY-MM-DD 日期值
TIME 3 HH:MM:SS 时间值或持续时间
TEAR 1 YYYY 年份值
DATETIME 8 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 YYYY-MM-DD HH:MM:SS 时间戳
Licensed under CC BY-NC-SA 4.0
网站总访客数:Loading

使用 Hugo 构建
主题 StackJimmy 设计