目录
[一、连接与退出 MySQL](#一、连接与退出 MySQL)
[(3)退出 MySQL](#(3)退出 MySQL)
[约束关键字(约束 = 数据规则)(常见)](#约束关键字(约束 = 数据规则)(常见))
[FOREIGN KEY的使用:](#FOREIGN KEY的使用:)
[第一步:创建父表 departments](#第一步:创建父表 departments)
[第二步:创建子表 employees,添加外键约束](#第二步:创建子表 employees,添加外键约束)
一、连接与退出 MySQL
(1)连接数据库
mysql -u 用户名 -p
        说明:
- 
-u:指定用户名 - 
-p:提示输入密码,注意不要写密码本身 
示例:
mysql -u root -p
        (2)连接指定数据库
mysql -u 用户名 -p 数据库名
        示例:
mysql -u root -p mydb
        (3)退出 MySQL
exit;
-- 或者
quit;
        二、数据库操作
(1)查看所有数据库
SHOW DATABASES;
        (2)创建数据库
CREATE DATABASE 数据库名;
        示例:
CREATE DATABASE mydb;
        (3)使用数据库
USE 数据库名;
        示例:
USE mydb;
        (4)删除数据库
DROP DATABASE 数据库名;
        示例:
DROP DATABASE mydb;
        三、数据表操作
(1)查看当前数据库中的所有表
SHOW TABLES;
        (2)查看表结构
DESC 表名;
-- 或
SHOW COLUMNS FROM 表名;
        (3)创建表
CREATE TABLE 表名 (
    字段名1 数据类型 [约束],
    字段名2 数据类型 [约束],
    ...
) [表选项,如 ENGINE、CHARSET];(可无)
        示例:
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,          -- 用户ID,主键且自动递增
    username VARCHAR(50) NOT NULL UNIQUE,       -- 用户名,不为空且唯一
    age INT NOT NULL,                           -- 年龄,不能为空
    gender VARCHAR(10) DEFAULT '未知',           -- 性别,默认值是 '未知'
    email VARCHAR(100),                         -- 邮箱,可以为空
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 注册时间,默认当前时间
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;  --(可无)存储引擎为 InnoDB,默认的字符编码为 utf8mb4
        字段数据类型(常用)
| 类型分类 | 常用类型 | 描述 | 
|---|---|---|
| 数值型 | INT / BIGINT / FLOAT / DECIMAL | 
整数或浮点数、精确小数 | 
| 字符串 | VARCHAR(n) / CHAR(n) / TEXT | 
可变/固定长度字符串、长文本 | 
| 日期时间 | DATE / DATETIME / TIMESTAMP | 
日期、时间戳类型 | 
| 布尔型 | BOOLEAN / TINYINT(1) | 
通常以0/1实现布尔值 | 
约束关键字(约束 = 数据规则)(常见)
| 约束名 | 含义 | 
|---|---|
PRIMARY KEY | 
主键,唯一且不为空 | 
AUTO_INCREMENT | 
自增,用于主键 | 
NOT NULL | 
不允许为空 | 
UNIQUE | 
唯一值(可空) | 
DEFAULT | 
默认值 | 
CHECK(...) | 
检查条件 | 
FOREIGN KEY | 
外键,关联其他表 | 
FOREIGN KEY的使用:
第一步:创建父表 departments
        CREATE TABLE departments (
    dept_id INT PRIMARY KEY,
    dept_name VARCHAR(100) NOT NULL
);
        第二步:创建子表 employees,添加外键约束
        CREATE TABLE employees (
    emp_id INT PRIMARY KEY AUTO_INCREMENT,
    emp_name VARCHAR(100) NOT NULL,
    dept_id INT,  -- 外键列
    FOREIGN KEY (dept_id) REFERENCES departments(dept_id)
);
        employees.dept_id 是外键,插入该employees表时,其dept_id 的值 必须已存在于 departments.dept_id 中
(4)删除表
DROP TABLE 表名;
        示例:
DROP TABLE users;
        (5)重命名表
RENAME TABLE 原表名 TO 新表名;
        (6)修改表结构
- 
添加字段:
ALTER TABLE 表名 ADD 列名 数据类型;
 - 
修改字段类型或名称:
ALTER TABLE 表名 MODIFY 列名 新数据类型;
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;
 - 
删除字段:
ALTER TABLE 表名 DROP 列名;
 
四、数据操作(增删改查)
(1)插入数据
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
        示例:
INSERT INTO users (name, age) VALUES ('Alice', 25);
        (2)查询数据
SELECT 字段列表 FROM 表名 [WHERE 条件] [ORDER BY 字段 ASC|DESC] [LIMIT 限制];
        示例:
--1
SELECT * FROM users;
--2
SELECT name FROM users WHERE age > 18 ORDER BY age DESC LIMIT 5;
        从 users 表中:
只查找 name 列,只查找年龄大于 18 的人,按年龄从大到小排序,最多返回前 5 条记录
(3)更新数据
UPDATE 表名 SET 字段1=值1, 字段2=值2 WHERE 条件;
        示例:
UPDATE users SET age = 30 WHERE name = 'Alice';
        (4)删除数据
DELETE FROM 表名 WHERE 条件;
        示例:
DELETE FROM users WHERE age < 18;
        五、用户权限管理
(1)查看所有用户
SELECT user, host FROM mysql.user;
        (2)创建新用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
        示例:
CREATE USER 'testuser'@'localhost' IDENTIFIED BY '123456';
        (3)授权
GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机';
        示例:
GRANT ALL PRIVILEGES ON mydb.* TO 'testuser'@'localhost';
        (4)刷新权限
FLUSH PRIVILEGES;
        (5)撤销权限
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';
        (6)删除用户
DROP USER '用户名'@'主机';
        六、备份与恢复
(1)备份数据库
mysqldump -u 用户名 -p 数据库名 > 文件名.sql
        示例:
mysqldump -u root -p mydb > mydb_backup.sql
        (2)恢复数据库
mysql -u 用户名 -p 数据库名 < 文件名.sql
        示例:
mysql -u root -p mydb < mydb_backup.sql
        七、其他实用命令
- 
查看当前使用的数据库:
SELECT DATABASE();
 - 
查看当前用户:
SELECT USER();
 - 
查看版本信息:
SELECT VERSION();
 - 
设置字符集:
SET NAMES utf8mb4;