MySQL知识总结

基础篇

通用语法及分类

  • DDL(Data Definition Language):数据定义语言,用来定义数据库对象(数据库、表、字段)。
  • DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行增、删、改
  • DQL(Data Query Language):数据查询语言,用来对数据库表中数据进行查询操作。
  • DCL(Data Control Language):数据控制语言,用来创建数据库用户、控制数据库的控制权限。

DDL

数据库操作

查询所有的数据库:
show databases;

查询当前数据库:
select database();

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

删除数据库:
drop database [if exists] 数据库名;
drop database if exists test;

使用数据库:
use test;

注意事项

utf8字符集长度为3个字节,有些符号占4个字节,所以推荐使用utf8mb4字符集。

表操作

查询当前数据库中的所有表:
show tables;

查询表结构:
desc 表名;

查询指定表的建表语句:
show create table 表名

创建表:

mysql 复制代码
create table if not exists 表名(
  字段1 字段1类型 [comment 字段1注释],
  字段2 字段2类型 [comment 字段2注释],
  ...
  字段n 字段n类型 [comment 字段n注释]
) [comment 表注释] default charset utf8mb4;

删除表:
drop table [if exists] 表名;

删除表,并重新创建该表:(清空表)
truncate table 表名

添加字段:
alter table 表名 add 字段名 字段类型(长度) [comment 注释] [约束];

例:alter table test_01 add nick_name varchar(20) comment '昵称';

修改数据类型:
alter table 表名 modify 字段名 新数据类型(长度);

修改字段名和字段类型:
alter table t_user change nick_name n_name char(30) comment '昵称';

删除字段:
alter table 表名 drop 字段名;

修改表名:(重命名表名)
alter table 表名 rename 新表名;

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, ...);

注意事项
  • 字符串和日期类型的数据应该包含在引号中。
  • 插入的数据大小应该在字段的规定范围内。
更新和删除数据

修改数据:
update 表名 set 字段1 = 值1, 字段2 = 值2, ... [ where 条件 ];

例:
update t_user set name = 'jack' where id = 1;

删除数据:
delete from 表名 [ where 条件 ];

例:
delete from t_user where id = 1;

DQL

语法:

复制代码
select
  字段列表
from
  表名
where
  条件列表
group by
  分组字段列表
having
  分组后的条件列表
order by
  排序字段列表
limit
  分页参数
基础查询

查询多个字段:
select 字段1, 字段2, 字段3, ... from 表名;
select * from 表名;

设置别名:
select 字段1 [as 别名1], 字段2 [as 别名2], ... from 表名;
select 字段1 [别名1], 字段2 [别名2], ... from 表名;

去除重复记录:
select distinct 字段列表 from 表名;

转义:模糊匹配(_匹配单个字符,%匹配任意个字符)
select 字段列表 from 表名 where name like '/_张三';

/ 之后不作为通配符。

条件:

比较运算符 功能
> 大于
>= 大于等于
< 小于
<= 小于等于
!=或<> 不等于
between ... and ... 在这个区间内(含最小值,最大值)
in(...) 在 in 之后列表中的值,多选一
like 占位符 模糊匹配(_匹配单个字符,%匹配任意字符)
is NULL 是 NULL
逻辑运算符 功能
&& 或 and 并且(多个条件都成立)
|| 或 or 或者(多个条件中有一个成立就成立)
! 或 NOT 非, 不是
相关推荐
Cloud云卷云舒30 分钟前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手1 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学1 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh3 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户71333585156244 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z123456789864 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD4 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
用户71333585156245 小时前
MySQL - InnoDB 的 Buffer Pool
mysql
TlSfoward5 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记5 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘