MySQL是大型架构的必备数据库,也是大厂的必备技能,下面我就全面来详解MySQL核心命令@mikechen
连接MySQL数据库
连接本机数据库
mysql -uroot -p密码
连接到远程主机上的MYSQL
mysql -h 127.0.0.1 -uroot -p 123456
注:u与root可以不用加空格,其它也一样
创建和删除数据库
create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒
修改mysql中root的密码
mysqladmin -u root password "newpwd";
添加创建用户
添加用户:
create user mikechen;
给用户权限:
grant all on *.* to 'mikechen'@'localhost' identified by 'password' ;
这里是把操作数据库的所有权限给了mikechen,并且设置密码是password。
显示MySQL版本
select version();
显示库中的数据表
use mysql; //打开库 show tables;
MySQL表删除数据
语法:
delete from 表名 [where 条件]
示例:
DELETE FROM student WHERE id=7;
删除整表:
drop table 表名
MySQL表修改数据
语法:
update 表名 set 字段名1=值1,字段名2=值2,....[where条件]
示例:
UPDATE student SET name=‘cao’,grade=50 WHERE id=1;
MySQL查询表数据
语法:
select <字段1,字段2,...> from < 表名 > where < 表达式 >
示例:
select * from user;
分页查询
SELECT * FROM users LIMIT 0, 10; -- 第1页 SELECT * FROM users LIMIT 10, 10; -- 第2页 SELECT * FROM users LIMIT 20, 10; -- 第3页
MySQL聚合查询
SELECT COUNT(*) FROM users; -- 统计行数 SELECT MAX(age) FROM users; -- 最大值 SELECT MIN(age) FROM users; -- 最小值 SELECT AVG(age) FROM users; -- 平均值 SELECT SUM(age) FROM users; -- 求和
连接查询
SELECT u.name, o.total_price FROM users u JOIN orders o ON u.id = o.user_id; -- 内连接 SELECT u.name, o.total_price FROM users u LEFT JOIN orders o ON u.id = o.user_id; -- 左连接
创建索引
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE
);
创建唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);
创建普通索引
CREATE INDEX idx_name ON users(name);
创建组合索引(联合索引)
CREATE INDEX idx_name_age ON users(name, age);
创建全文索引
CREATE FULLTEXT INDEX idx_content ON articles(content);
查看索引
SHOW INDEX FROM users;
删除普通索引
DROP INDEX idx_name ON users;
删除唯一索引
ALTER TABLE users DROP INDEX idx_email;
避免全表扫描
EXPLAIN SELECT * FROM users WHERE name = 'Alice';
使用最左前缀原则
SELECT * FROM users WHERE name = 'Tom' AND age = 30; -- ✅ 可用索引
SELECT * FROM users WHERE age = 30; -- ❌ 无法使用索引
避免在索引列上使用函数
SELECT * FROM users WHERE LEFT(name, 3) = 'Ali'; -- ❌ 索引失效
SELECT * FROM users WHERE name LIKE 'Ali%'; -- ✅ 索引可用
联合查询
联合查询,按照功能大致分为如下三类:
1)INNER JOIN(内连接)
仅返回 两个表中都有匹配记录 的数据。
SELECT users.id, users.name, orders.order_amount FROM users INNER JOIN orders ON users.id = orders.user_id;
2)LEFT JOIN(左连接)
返回 左表(users)所有数据,即使右表(orders)中没有匹配数据。
SELECT users.id, users.name, orders.order_amount FROM users LEFT JOIN orders ON users.id = orders.user_id;
3)RIGHT JOIN(右连接)
返回 右表(orders)所有数据,即使左表(users)中没有匹配数据。
SELECT users.id, users.name, orders.order_amount FROM users RIGHT JOIN orders ON users.id = orders.user_id;
备份数据库
1.导出整个数据库
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》