MySQL 初级命令

本文列举了一些初级的 MySQL 命令。

字段规则

小写 + 下划线 user_name

基本概念

  • 表头(header): 每一列的名称;

  • 列(row): 具有相同数据类型的数据的集合;

  • 行(col): 每一行用来描述某个人/物的具体信息;

  • 值(value): 行的具体信息, 每个值必须与该列的数据类型相同;

  • 键(key): 表中用来识别某个特定的人\物的方法, 键的值在当前列中具有唯一性。

字符集

修改配置文件

1
2
3
4
5
6
7
8
9
10
11
[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

查看字符集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

# 以下为原始配置信息,修改后的配置请自行查看

+--------------------------+-------------------+
| Variable_name | Value |
+--------------------------+-------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+--------------------------+-------------------+

常见指令

1
$ mysql -uroot -pmytest -D test
  • -D 指定数据库

  • -h 指定主机

  • -P 指定端口

1
2
3
4
5
6
7
8
9
10
11
12
13
# 切换数据库、数据表等

mysql> USE

# UNION 将多个 SELECT 结果组合到一起

mysql> SELECT country FROM tb1 UNION SELECT country FROM tb2 ORDER BY country; # 结果没有重复值

mysql> SELECT country FROM tb1 UNION ALL SELECT country FROM tb2 ORDER BY country; # 结果有重复值

# 正则表达式 REGEXP

mysql> SELECT ... WHERE name REGEXP '^st';

查看

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql> SHOW DATABASES;

mysql> SHOW TABLES;

mysql> SHOW TABLES FROM db_name;

mysql> { SHOW COLUMNS FROM | DESCRIBE | DESC } tbl_name;

mysql> SHOW CREATE DATABASE db_name;

mysql> SHOW CREATE TABLE tbl_name;

mysql> SHOW warnings;

mysql> SHOW engines\G;

约束

NULL NOT NULL

AUTO_INCREMENT

UNSIGNED

PRIMARY KEYKEY

UNIQUE KEY

DEFAULT

FOREIGN KEY REFERENCES

外键约束

FOREIGN KEY

1
2
3
4
mysql> CREATE TABLE 表名(
pid 定义,
FOREIGN KEY (pid) REFERENCES 父表 (字段) [参照操作];
);

参照操作

CASCADE

SET NULL ON DELETE

RESTRICT

元数据

1
2
3
4
5
6
7
8
9
mysql> SELECT VERSION();

mysql> SELECT DATABASE();

mysql> SELECT USER();

mysql> SHOW STATUS; # 服务器状态

mysql> SHOW VARIABLES; # 服务器配置变量

事务

保证数据库的完整性

  • 原子性 要么成功,要么不成功。

  • 一致性 事务开始之前和结束之后,数据库的完整性没有被破坏。

  • 隔离性 防止多个事务并发执行时由于交叉执行而导致的数据的不一致,分为 读未提交(READ UNCOMMITTED) 读提交(READ COMMITTED) 可重复读(REPEATABLE READ) 串行化(SERIALIZABLE)

  • 持久性 事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

BEGIN START TRANSACTION 显式的开启一个事务。

COMMIT 提交事务,并使对数据库进行的所有修改称为永久性的。

ROLLBACK 回滚 结束事务,并撤销正在进行的所有未提交的修改。

SAVEPOINT 创建一个保存点。

RELEASE SAVEPOINT 删除保存点。

ROLLBACK TO 回滚到某个保存点。

SET TRANSACTION 设置事务的隔离级别。

并发控制

当多个连接对记录进行修改时保证数据的一致性和完整性。

共享锁(读锁)同一时间段内,多个用户可以读取同一资源,读取过程中数据不会发生任何变化。

排它锁(写锁)在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

锁颗粒

表锁

行锁

khs1994 wechat
微信扫码赞赏我的文章
0%