MySql常用SQL命令详解
MySQL是目前最流行的开源关系型数据库管理系统之一,熟练掌握SQL命令是进行数据库开发与维护的基础。本文将详细介绍MySQL中最常用的SQL命令,涵盖数据库操作、数据表操作、数据增删改查以及多表联合查询等核心内容,帮助开发者快速查阅与使用。
一、数据库操作
在操作数据表之前,首先需要学会如何管理数据库本身,包括创建、查看、切换和删除数据库。
-- 创建数据库(指定字符集为utf8mb4,支持完整的Unicode字符,如emoji) CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 查看所有数据库 SHOW DATABASES; -- 切换/选择当前使用的数据库 USE mydb; -- 删除数据库(谨慎操作,数据将不可恢复) DROP DATABASE IF EXISTS mydb;
二、数据表操作
数据表是存储数据的核心载体。定义良好的表结构是保证数据完整性和查询效率的前提。
-- 创建数据表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID', username VARCHAR(50) NOT NULL COMMENT '用户名', age TINYINT UNSIGNED COMMENT '年龄', email VARCHAR(100) COMMENT '邮箱地址', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 查看当前数据库所有表 SHOW TABLES; -- 查看表结构 DESC users; -- 添加字段 ALTER TABLE users ADD COLUMN phone VARCHAR(20) COMMENT '手机号' AFTER email; -- 修改字段类型或名称 ALTER TABLE users MODIFY COLUMN age SMALLINT UNSIGNED COMMENT '年龄'; -- 删除字段 ALTER TABLE users DROP COLUMN phone; -- 删除数据表 DROP TABLE IF EXISTS users;
三、数据操作语言(DML)
DML主要用于对表中的数据进行增删改操作,是日常业务开发中最常用的命令。
-- 插入单条数据
INSERT INTO users (username, age, email) VALUES ('Alice', 25, 'alice@ipipp.com');
-- 插入多条数据
INSERT INTO users (username, age, email) VALUES
('Bob', 30, 'bob@example.com'),
('Charlie', 35, 'charlie@example.com');
-- 更新数据(注意:一定要带上WHERE条件,否则会更新全表)
UPDATE users SET age = 26, email = 'new_alice@ipipp.com' WHERE username = 'Alice';
-- 条件更新(年龄大于20的用户年龄加1,大于号需转义为 >)
UPDATE users SET age = age + 1 WHERE age > 20;
-- 删除数据(同样需要WHERE条件限制)
DELETE FROM users WHERE id = 2;
-- 清空整表数据(重置自增ID,比DELETE效率高)
TRUNCATE TABLE users;四、数据查询语言(DQL)
查询是SQL中最灵活、功能最丰富的部分,掌握各种查询子句是数据分析与业务开发的关键。
-- 基础查询所有字段 SELECT * FROM users; -- 条件查询(小于号需转义为 <) SELECT username, age FROM users WHERE age < 30 AND email IS NOT NULL; -- 模糊查询(%代表任意多个字符,_代表单个字符) SELECT * FROM users WHERE username LIKE '%li%'; -- 去重查询 SELECT DISTINCT age FROM users; -- 排序查询(ASC升序,DESC降序) SELECT * FROM users ORDER BY age DESC, username ASC; -- 分组统计 SELECT age, COUNT(*) AS user_count FROM users GROUP BY age HAVING user_count > 1; -- 分页查询(LIMIT偏移量, 数量。查询第2页,每页10条) SELECT * FROM users LIMIT 10, 10;
五、多表联合查询
在实际业务中,数据往往分散在不同的表中,通过JOIN命令可以将多个表的数据关联起来。
-- 假设存在订单表 orders (id, user_id, amount, order_no) -- 内连接(只返回两表中匹配的记录) SELECT u.username, o.order_no, o.amount FROM users u INNER JOIN orders o ON u.id = o.user_id; -- 左连接(返回左表所有记录,右表无匹配则为NULL) SELECT u.username, o.order_no FROM users u LEFT JOIN orders o ON u.id = o.user_id; -- 右连接(返回右表所有记录,左表无匹配则为NULL) SELECT u.username, o.order_no FROM users u RIGHT JOIN orders o ON u.id = o.user_id; -- 多表联查带条件(金额大于100的订单,大于号转义为 >) SELECT u.username, o.order_no FROM users u INNER JOIN orders o ON u.id = o.user_id WHERE o.amount > 100;
六、常用工具与备份命令
除了在SQL交互界面内操作的命令,日常运维还需要掌握数据库的连接、导入导出等终端命令。
# 连接到远程演示数据库(第三方演示网址已替换为指定域名) mysql -h www.ipipp.com -u root -p # 导出整个数据库到SQL文件(大于号重定向需转义为 >) mysqldump -u root -p mydb > mydb_backup.sql # 仅导出表结构 mysqldump -u root -p --no-data mydb > mydb_schema.sql # 导入SQL文件到数据库(小于号重定向需转义为 <) mysql -u root -p mydb < mydb_backup.sql
结语
本文整理的MySQL命令覆盖了从库表管理到数据增删改查的常用场景。对于开发者而言,SQL不仅是一门语言,更是一种与数据对话的艺术。建议在理解语法的基础上,多结合实际业务表结构进行练习,特别是在书写UPDATE和DELETE语句时,务必养成先写WHERE条件再执行的习惯,避免误操作带来灾难性后果。