MySQL命令大全详解(38大最常见命令)

MySQL命令大全详解(38大最常见命令)-mikechen

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(内连接)

仅返回 两个表中都有匹配记录 的数据。

MySQL命令大全详解(38大最常见命令)-mikechen

SELECT users.id, users.name, orders.order_amount
FROM users
INNER JOIN orders ON users.id = orders.user_id;

 

2)LEFT JOIN(左连接)

返回 左表(users)所有数据,即使右表(orders)中没有匹配数据。

MySQL命令大全详解(38大最常见命令)-mikechen

SELECT users.id, users.name, orders.order_amount
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

 

3)RIGHT JOIN(右连接)

返回 右表(orders)所有数据,即使左表(users)中没有匹配数据。

MySQL命令大全详解(38大最常见命令)-mikechen

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面试题总结

评论交流
    说说你的看法