目录
[一、连接与退出 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;