mySQL 2024-09-23

SQL常用指令

阅读次数 57 评论数 1

Ubuntu2204

SQL服务控制

1. 启动服务

sudo systemctl start mysql

sudo service mysql start

2. 关闭服务

sudo systemctl stop mysql

sudo service mysql stop

3. 重启服务

sudo systemctl restart mysql

sudo service mysql restart

4. 检查服务状态

sudo systemctl status mysql

sudo service mysql status

用户管理

1. 创建用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

  • username:用户名

  • host:指定用户可以从哪些主机连接。例如,localhost 仅允许本地连接,% 允许从任何主机连接

  • password:用户的密码

2. 授权权限

GRANT privileges ON database_name.* TO 'username'@'host';

  • privileges:所需的权限,如 ALL PRIVILEGESSELECTINSERTUPDATEDELETE

  • database_name.*:表示对某个数据库或表授予权限。database_name.* 表示对整个数据库的所有表授予权限,database_name.table_name 表示对指定的表授予权限

  • TO 'username'@'host':指定授予权限的用户和主机

3. 刷新权限

FLUSH PRIVILEGES;

4. 查看用户权限

SHOW GRANTS FOR 'username'@'host';

5. 撤销权限

REVOKE privileges ON database_name.* FROM 'username'@'host';

6. 删除用户

DROP USER 'username'@'host';

7. 修改用户密码

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

8. 用户登录&登出

mysql -u <username> -p

-> <password>

EXIT

/etc/my.cnf 文件配置

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

1. 基本设置

  • basedir: MySQL 服务器的基本安装目录。

  • datadir: 存储 MySQL 数据文件的位置。

  • socket: MySQL 服务器的 Unix 套接字文件路径。

  • pid-file: 存储当前运行的 MySQL 服务器进程 ID 的文件路径。

  • port: MySQL 服务器监听的端口号,默认是 3306。

2. 服务器选项

  • bind-address: 指定 MySQL 服务器监听的 IP 地址,可以是 IP 地址或主机名。

  • server-id: 在复制配置中,为每个 MySQL 服务器设置一个唯一的标识符。

  • default-storage-engine: 默认的存储引擎,例如 InnoDB 或 MyISAM。

  • max_connections: 服务器可以同时维持的最大连接数。

  • thread_cache_size: 线程缓存的大小,用于提高新连接的启动速度。

  • query_cache_size: 查询缓存的大小,用于提高相同查询的效率。

  • default-character-set: 默认的字符集。

  • collation-server: 服务器的默认排序规则。

3. 性能调优

  • innodb_buffer_pool_size: InnoDB 存储引擎的缓冲池大小,这是 InnoDB 性能调优中最重要的参数之一。

  • key_buffer_size: MyISAM 存储引擎的键缓冲区大小。

  • table_open_cache: 可以同时打开的表的缓存数量。

  • thread_concurrency: 允许同时运行的线程数。

4. 安全设置

  • skip-networking: 禁止 MySQL 服务器监听网络连接,仅允许本地连接。

  • skip-grant-tables: 以无需密码的方式启动 MySQL 服务器,通常用于恢复忘记的 root 密码,但这是一个安全风险。

  • auth_native_password=1: 启用 MySQL 5.7 及以上版本的原生密码认证。

5. 日志设置

  • log_error: 错误日志文件的路径。

  • general_log: 记录所有客户端连接和查询的日志。

  • slow_query_log: 记录执行时间超过特定阈值的慢查询。

  • log_queries_not_using_indexes: 记录未使用索引的查询。

6. 复制设置

  • master_hostmaster_user: 主服务器的地址和复制用户。

  • master_password: 复制用户的密码。

  • master_log_filemaster_log_pos: 用于复制的日志文件和位置。

数据库操作

1. 选择要操作的数据库

USE DATABASE

2. 列出数据库列表

SHOW DATABASES

3. 创建

CREATE DATABASE [IF EXIST] <name>

4. 删除

DROP DATABASE [IF EXISTS] <name>

5. 提权操作(sudo)

mysqladmin -u [username] -p

数据表操作

1. 显示选定数据库的所有表

SHOW TABLES

2. 显示数据表信息

SHOW COLUMS FROM <TABLE>

3. 显示数据表的详细索引信息,包括PRIMARY KEY(主键)

SHOW INDEX FROM <TABLE>

4. 显示性能及统计信息

SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] [\G]

5. 创建表

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    ...
);

CREATE TABLE users (
    id INT AUTO_INCREMENT,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    birthdate DATE,
    is_active BOOLEAN DEFAULT TRUE
    PRIMARY KEY(id)
)CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

6. 删除表

DROP TABLE table_name; // 删除表

TRUNCATE TABLE table_name; // 清除数据, 但保留表

7. 插入数据

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

8. 查询数据

SELECT column1, column2, ...
FROM table_name
[WHERE condition] // 指定过滤条件
[ORDER BY column_name [ASC | DESC]] // 指定结果集的排序顺序
[LIMIT number]; // 限制返回的行数

MySQL WHERE 子句 | 菜鸟教程 (runoob.com)

9. 更改数据

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

10. 删除数据

DELETE FROM table_name
WHERE condition;

数据类型

数值类型

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 Bytes

(-128,127)

(0,255)

小整数值

SMALLINT

2 Bytes

(-32 768,32 767)

(0,65 535)

大整数值

MEDIUMINT

3 Bytes

(-8 388 608,8 388 607)

(0,16 777 215)

大整数值

INT或INTEGER

4 Bytes

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

大整数值

BIGINT

8 Bytes

(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

极大整数值

FLOAT

4 Bytes

(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度
浮点数值

DOUBLE

8 Bytes

(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度
浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

小数值

日期和时间类型

类型

大小

范围

格式

用途

DATE

3 Bytes

1000-01-01/9999-12-31

YYYY-MM-DD

日期值

TIME

3 Bytes

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1 Bytes

1901/2155

YYYY

年份值

DATETIME

8 Bytes

'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

YYYY-MM-DD hh:mm:ss

混合日期和时间值

TIMESTAMP

4 Bytes

'1970-01-01 00:00:01' UTC 到 '2038-01-19 03:14:07' UTC

结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

YYYY-MM-DD hh:mm:ss

混合日期和时间值,时间戳

字符串类型

类型

大小

用途

CHAR

0-255 bytes

定长字符串

VARCHAR

0-65535 bytes

变长字符串

TINYBLOB

0-255 bytes

不超过 255 个字符的二进制字符串

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

极大文本数据

一些其他类型

GEOMETRY, POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, ENUM, SET

python操作mySQL

0%