MySQL8.0 Operations
Some usual operations examples in MySQL 8.0
Table of Contents
I. BASIC
A. Init
Refer to https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-20-04
Ubuntu 24.04 as example in Win11 WSL2
- shell
- sql
- shell
1 |
|
区别
| caching_sha2_password |
| mysql_native_password |
B. Data
1. Export
1 |
|
2. Import
- shell
- sql
1 |
|
II. OPERATIONS
类别 | 名称 | 常见语句 | 功能说明 |
---|---|---|---|
DDL | Data Definition Language | CREATE, DROP, ALTER | 定义或修改数据库结构(表、索引、视图等) |
DML | Data Manipulation Language | INSERT, UPDATE, DELETE, MERGE | 操作表中的数据(增、改、删) |
DQL | Data Query Language | SELECT | 只查询数据,不做任何修改 |
DCL | Data Control Language | GRANT, REVOKE | 权限控制(授权与回收) |
TCL | Transaction Control Language | COMMIT, ROLLBACK, SAVEPOINT | 事务管理 |
A. DCL
DCL: Data Control Language, like GRANT
, REVOKE
, DENY
1. GRANT
1 |
|
2. REVOKE
3. DENY
B. DDL
DDL: Data Definition Language, like CREATE
, ALTER
, DROP
, TRUNCATE
, COMMENT
, RENAME
1. CREATE
- database
- table
- index
1 |
|
COPY with data
1
2
3
4
create table table_name
as
select * from Source_table
where 1=1;
2. ALTER
1 |
|
3. DROP
- database
- table
- index
1 |
|
4. TRUNCATE
5. COMMENT
6. RENAME
C. DML
DML: Data Manipulation Language, like INSERT
, UPDATE
, DELETE
, MERGE
, CALL
, EXPLAIN PLAN
, LOCK TABLE
1. INSERT
- single
- multiple
1 |
|
2. UPDATE
1 |
|
3. DELETE
1 |
|
4. MERGE
5. CALL
6. EXPLAIN PLAN
7. LOCK TABLE
8. Examples
Kill
数据库锁死的问题解决
1
2
3
4
5
6
7
8
9
10
11
select *
from information_schema.PROCESSLIST;
select *
from information_schema.INNODB_TRX;
select A.trx_started, B.*
from information_schema.INNODB_TRX A
left join (select * from information_schema.PROCESSLIST) B on A.trx_mysql_thread_id = B.ID;
kill 12345;
D. DQL
DQL: Data Query Language, like SELECT
🤔 那为什么很多人以为 SELECT 是 DML 呢? 因为 SELECT 也是“对数据的操作”,但它不改变数据,只是“读取”。
在某些旧教材或非标准文档中,有时会把 DQL 归并到 DML 里,但这是不准确的。
✅ 正统 SQL 标准(比如 ANSI SQL)中: SELECT = 只读查询语言,属于 DQL,与 DML 的“写操作”分开定义。
1. SELECT
1 |
|
mysql> select table_schema, table_name, column_name, column_default, is_nullable, column_type, column_type, column_key, column_comment from information_schema.COLUMNS where table_schema = ‘ruoyi-vue-pro’ and table_name = ‘measure_pic’; +—————+————-+—————–+——————-+————-+————–+————–+————+———————————–+ | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | COLUMN_DEFAULT | IS_NULLABLE | COLUMN_TYPE | COLUMN_TYPE | COLUMN_KEY | COLUMN_COMMENT | +—————+————-+—————–+——————-+————-+————–+————–+————+———————————–+ | ruoyi-vue-pro | measure_pic | id | NULL | NO | bigint | bigint | PRI | 编号 | | ruoyi-vue-pro | measure_pic | measure_task_id | 0 | NO | bigint | bigint | | 测量任务编号 | | ruoyi-vue-pro | measure_pic | pic_url | | NO | varchar(512) | varchar(512) | | 图像地址 | | ruoyi-vue-pro | measure_pic | client_id | NULL | NO | bigint | bigint | | 客户端编号 | | ruoyi-vue-pro | measure_pic | category_id | NULL | NO | bigint | bigint | | 类别编号 | | ruoyi-vue-pro | measure_pic | magnification | NULL | NO | int | int | | 放大倍率, 是否可以删除? | | ruoyi-vue-pro | measure_pic | creator | | YES | varchar(64) | varchar(64) | | 创建者 | | ruoyi-vue-pro | measure_pic | create_time | CURRENT_TIMESTAMP | NO | datetime | datetime | | 创建时间 | | ruoyi-vue-pro | measure_pic | updater | | YES | varchar(64) | varchar(64) | | 更新者 | | ruoyi-vue-pro | measure_pic | update_time | CURRENT_TIMESTAMP | NO | datetime | datetime | | 更新时间 | | ruoyi-vue-pro | measure_pic | deleted | b'0’ | NO | bit(1) | bit(1) | | 是否删除 | | ruoyi-vue-pro | measure_pic | tenant_id | 0 | NO | bigint | bigint | | 租户编号 | +—————+————-+—————–+——————-+————-+————–+————–+————+———————————–+ 12 rows in set (0.00 sec)
E. TCL
TCL: Transaction Control Language, like COMMIT
, ROLLBACK
, SAVEPOINT
, START TRANSACTION
1. COMMIT
2. ROLLBACK
3. SAVEPOINT
4. START TRANSACTION
F. VIEW
Create a SQLView to make query fast
III. 锁
A. 行锁
B. 表锁
C. 乐观锁
D. 悲观锁
IV. 驱动
TODO