12.15
一、数据库常用操作(除了创建/删除)
1. 查看所有数据库
sql
SHOW DATABASES; -- 列出MySQL中所有数据库
2. 切换当前数据库(操作表/数据前必须执行)
sql
USE 数据库名; -- 示例:USE shop_db;
3. 查看当前使用的数据库
sql
SELECT DATABASE(); -- 输出当前活跃的数据库
4. 查看数据库创建语句(含字符集等配置)
sql
SHOW CREATE DATABASE 数据库名; -- 示例:SHOW CREATE DATABASE blog_db;
二、数据表常用操作(建表/查改删)
- 创建表(核心,需指定字段、类型、约束)
语法: CREATE TABLE [IF NOT EXISTS] 表名 (字段1 类型 约束, 字段2 类型 约束, ...);
示例(创建用户表 user ,含主键、非空、唯一约束):
sql
CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增(唯一标识每行数据)
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,非空且唯一
age INT DEFAULT 0, -- 年龄,默认值0
create_time DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认当前时间
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 引擎(InnoDB支持事务)+ 字符集
- 查看表相关信息
- 查看当前数据库所有表: SHOW TABLES;
- 查看表结构(字段、类型、约束): DESC 表名; (或 DESCRIBE 表名; )
- 查看表创建语句: SHOW CREATE TABLE 表名;
- 修改表(改字段/加字段/删字段)
- 新增字段(示例:给 user 表加 phone 字段):
sql
ALTER TABLE user ADD phone VARCHAR(20) UNIQUE; -- 唯一约束(避免重复手机号) - 修改字段类型(示例:将 age 从 INT 改为 TINYINT ):
sql
ALTER TABLE user MODIFY age TINYINT DEFAULT 0; - 删除字段(示例:删除 user 表的 phone 字段):
sql
ALTER TABLE user DROP phone;
- 删除表
sql
DROP TABLE IF EXISTS 表名; -- 加IF EXISTS避免表不存在时报错
三、数据常用操作(增删改查,CRUD)
以 user 表为例,字段: id (自增)、 username 、 age 、 create_time 。
- 新增数据(INSERT)
- 全字段插入(需按表字段顺序,自增字段可写 NULL 或省略):
sql
INSERT INTO user (username, age) VALUES ('zhangsan', 20); -- create_time用默认值 - 批量插入(高效,避免多次执行INSERT):
sql
INSERT INTO user (username, age)
VALUES ('lisi', 22), ('wangwu', 18);
- 查询数据(SELECT,最常用,支持筛选/排序/限制)
- 查所有数据(慎用!数据量大时卡顿):
sql
SELECT * FROM user; -- * 代表所有字段 - 查指定字段+筛选条件(示例:查年龄>18的用户名和年龄):
sql
SELECT username, age FROM user WHERE age > 18; - 排序+限制条数(示例:按年龄降序,取前2条):
sql
SELECT username, age FROM user ORDER BY age DESC LIMIT 2;
- 修改数据(UPDATE,必须加WHERE!否则改全表)
sql
UPDATE user SET age = 21 WHERE username = 'zhangsan'; -- 仅改zhangsan的年龄
- 删除数据(DELETE,必须加WHERE!否则删全表)
sql
DELETE FROM user WHERE username = 'wangwu'; -- 仅删wangwu的数据
四、权限常用操作(管理用户访问)
- 创建用户(示例:创建用户 dev ,允许本地访问)
sql
CREATE USER IF NOT EXISTS 'dev'@'localhost' IDENTIFIED BY '123456'; -- 密码123456
- localhost 表示仅本地访问,远程访问用 % (如 'dev'@'%' )。
- 授予权限(示例:给 dev 授予 shop_db 库所有表的增删改查权限)
sql
GRANT SELECT, INSERT, UPDATE, DELETE ON shop_db.* TO 'dev'@'localhost';
- 全权限用 ALL (如 GRANT ALL ON shop_db.* TO 'dev'@'localhost' );
- 授予后需刷新权限: FLUSH PRIVILEGES;
- 查看用户权限
sql
SHOW GRANTS FOR 'dev'@'localhost';
- 撤销权限
sql
REVOKE DELETE ON shop_db.* FROM 'dev'@'localhost'; -- 撤销删除权限
FLUSH PRIVILEGES;
五、常用工具命令(终端操作)
1. 登录MySQL(远程登录需加 -h 服务器IP ):
bash
mysql -u 用户名 -p # 示例:mysql -u root -p;mysql -u dev -h 192.168.1.100 -p
2. 退出MySQL: EXIT; 或 QUIT;
3. 执行SQL文件(导入数据,如备份文件):
bash
mysql -u root -p 数据库名 < 备份文件.sql # 示例:mysql -u root -p shop_db < shop_backup.sql
以上操作覆盖了 MySQL 日常使用的 90% 场景,重点记住 增删改查需加条件(WHERE/LIMIT)、创建表指定字符集和引擎、授权遵循最小权限原则,避免误操作导致数据丢失。以下是 MySQL 中 最常用的核心操作,覆盖数据库、表、数据、权限四大场景,均为日常开发/管理高频使用,附简洁语法和示例:
一、数据库常用操作(除了创建/删除)
1. 查看所有数据库
sql
SHOW DATABASES; -- 列出MySQL中所有数据库
2. 切换当前数据库(操作表/数据前必须执行)
sql
USE 数据库名; -- 示例:USE shop_db;
3. 查看当前使用的数据库
sql
SELECT DATABASE(); -- 输出当前活跃的数据库
4. 查看数据库创建语句(含字符集等配置)
sql
SHOW CREATE DATABASE 数据库名; -- 示例:SHOW CREATE DATABASE blog_db;
二、数据表常用操作(建表/查改删)
- 创建表(核心,需指定字段、类型、约束)
语法: CREATE TABLE [IF NOT EXISTS] 表名 (字段1 类型 约束, 字段2 类型 约束, ...);
示例(创建用户表 user ,含主键、非空、唯一约束):
sql
CREATE TABLE IF NOT EXISTS user (
id INT PRIMARY KEY AUTO_INCREMENT, -- 主键,自增(唯一标识每行数据)
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,非空且唯一
age INT DEFAULT 0, -- 年龄,默认值0
create_time DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间,默认当前时间
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 引擎(InnoDB支持事务)+ 字符集
- 查看表相关信息
- 查看当前数据库所有表: SHOW TABLES;
- 查看表结构(字段、类型、约束): DESC 表名; (或 DESCRIBE 表名; )
- 查看表创建语句: SHOW CREATE TABLE 表名;
- 修改表(改字段/加字段/删字段)
- 新增字段(示例:给 user 表加 phone 字段):
sql
ALTER TABLE user ADD phone VARCHAR(20) UNIQUE; -- 唯一约束(避免重复手机号) - 修改字段类型(示例:将 age 从 INT 改为 TINYINT ):
sql
ALTER TABLE user MODIFY age TINYINT DEFAULT 0; - 删除字段(示例:删除 user 表的 phone 字段):
sql
ALTER TABLE user DROP phone;
- 删除表
sql
DROP TABLE IF EXISTS 表名; -- 加IF EXISTS避免表不存在时报错
三、数据常用操作(增删改查,CRUD)
以 user 表为例,字段: id (自增)、 username 、 age 、 create_time 。
- 新增数据(INSERT)
- 全字段插入(需按表字段顺序,自增字段可写 NULL 或省略):
sql
INSERT INTO user (username, age) VALUES ('zhangsan', 20); -- create_time用默认值 - 批量插入(高效,避免多次执行INSERT):
sql
INSERT INTO user (username, age)
VALUES ('lisi', 22), ('wangwu', 18);
- 查询数据(SELECT,最常用,支持筛选/排序/限制)
- 查所有数据(慎用!数据量大时卡顿):
sql
SELECT * FROM user; -- * 代表所有字段 - 查指定字段+筛选条件(示例:查年龄>18的用户名和年龄):
sql
SELECT username, age FROM user WHERE age > 18; - 排序+限制条数(示例:按年龄降序,取前2条):
sql
SELECT username, age FROM user ORDER BY age DESC LIMIT 2;
- 修改数据(UPDATE,必须加WHERE!否则改全表)
sql
UPDATE user SET age = 21 WHERE username = 'zhangsan'; -- 仅改zhangsan的年龄
- 删除数据(DELETE,必须加WHERE!否则删全表)
sql
DELETE FROM user WHERE username = 'wangwu'; -- 仅删wangwu的数据

浙公网安备 33010602011771号