MySQL常用命令
MySQL常用命令
本文介绍了MySQL 的安装教程,以及常用命令,涵盖 数据库管理、表操作、数据操作、事务、函数、权限管理 等核心功能。
具体可参考:
- 官方文档:MySQL 官方命令参考
注意事项
- 事务:默认情况下,MySQL 的 InnoDB 引擎支持事务,但需显式使用
START TRANSACTION。- 性能优化:频繁使用
SELECT *可能影响性能,建议指定需要的列。- 索引:合理使用索引可大幅提升查询速度,但过多索引可能降低写入性能。
- 权限:避免为非管理员用户授予过高权限(如
GRANT ALL PRIVILEGES)。
一、MySQL安装
1. 安装 MySQL
使用 Homebrew 安装 MySQL:
brew install mysql
2. 启动 MySQL 服务
安装完成后,启动 MySQL 服务:
brew services start mysql
如果希望 MySQL 在系统启动时自动运行,可以使用上述命令;否则,也可以手动启动:
mysql.server start
3. 设置 MySQL Root 密码
首次安装后,MySQL 的 root 用户默认没有密码。为了安全起见,需设置密码:
-
进入 MySQL 命令行:
mysql -u root -
在 MySQL 提示符下执行以下命令(将
your_password替换为实际密码):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; FLUSH PRIVILEGES; -
退出 MySQL 命令行:
exit;
4. 验证安装
通过以下命令登录 MySQL 并验证:
mysql -u root -p
输入之前设置的密码后,若成功进入 MySQL 命令行界面,说明安装成功。
5. 配置 MySQL
MySQL 的默认配置文件是 /usr/local/etc/my.cnf。你可以根据需求修改配置,例如:
- 允许远程访问:在配置文件中添加:
[mysqld] bind-address = 0.0.0.0 - 修改默认端口:
[mysqld] port = 3307
修改后重启服务生效:
brew services restart mysql
6. 常见问题
权限问题
如果登录时提示 Access denied,确保密码正确,或重新设置密码:
mysql -u root -p
在 MySQL 命令行中:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
FLUSH PRIVILEGES;
服务无法启动
检查日志文件:
tail -f /usr/local/var/log/mysql.log
端口占用
MySQL 默认使用 3306 端口。若端口被占用,修改配置文件中的 port 参数后重启服务。
7. 卸载 MySQL
如果需要卸载 MySQL:
brew services stop mysql
brew uninstall mysql
# 删除数据和配置(谨慎操作)
rm -rf /usr/local/var/mysql
8. 快速测试
- 登录 MySQL 命令行:
mysql -u root -p - 创建测试数据库和表:
CREATE DATABASE testdb; USE testdb; CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50)); INSERT INTO users (name) VALUES ('Alice'), ('Bob'); - 查询数据:
SELECT * FROM users;
MySQL常用命令
1. 常用命令
启动/停止 MySQL 服务
# 启动服务(后台运行)
brew services start mysql
# 停止服务
brew services stop mysql
# 手动启动(前台运行)
mysql.server start
# 手动停止
mysql.server stop
登录 MySQL 命令行
mysql -u root -p
查看 MySQL 版本
mysql --version
2. 数据库管理
创建/删除数据库
| 命令 | 描述 | 示例 |
|---|---|---|
CREATE DATABASE db_name; |
创建数据库 db_name |
CREATE DATABASE testdb; |
DROP DATABASE db_name; |
删除数据库 db_name |
DROP DATABASE testdb; |
切换数据库
USE database_name;
例如:
USE testdb;
3. 表操作
创建表
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
...
);
示例:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
查看表结构
DESCRIBE table_name;
-- 或
SHOW COLUMNS FROM table_name;
修改表结构
ALTER TABLE table_name
ADD COLUMN column_name datatype; -- 添加列
ALTER TABLE table_name
DROP COLUMN column_name; -- 删除列
ALTER TABLE table_name
RENAME TO new_table_name; -- 重命名表
删除表
DROP TABLE table_name;
4. 数据操作(DML)
插入数据
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
示例:
INSERT INTO users (name, age) VALUES ('Alice', 30);
查询数据
SELECT column1, column2, ...
FROM table_name
WHERE condition;
示例:
SELECT * FROM users WHERE age > 25;
SELECT name, age FROM users ORDER BY age DESC;
更新数据
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;
示例:
UPDATE users SET age = 31 WHERE name = 'Alice';
删除数据
DELETE FROM table_name WHERE condition;
示例:
DELETE FROM users WHERE age < 18;
5. 事务控制
| 命令 | 描述 | 示例 |
|---|---|---|
START TRANSACTION; |
开始事务 | START TRANSACTION; |
COMMIT; |
提交事务(永久保存更改) | COMMIT; |
ROLLBACK; |
回滚事务(撤销未提交的更改) | ROLLBACK; |
6. 索引管理
| 命令 | 描述 | 示例 |
|---|---|---|
CREATE INDEX index_name ON table_name (column); |
为列创建索引 | CREATE INDEX idx_name ON users(name); |
DROP INDEX index_name ON table_name; |
删除索引 | DROP INDEX idx_name ON users; |
7. 权限管理
| 命令 | 描述 | 示例 |
|---|---|---|
GRANT privileges ON database.table TO 'user'@'host'; |
授予用户权限 | GRANT SELECT ON testdb.* TO 'alice'@'%'; |
REVOKE privilege ON database.table FROM 'user'@'host'; |
撤销用户权限 | REVOKE INSERT ON testdb.users FROM 'bob'@'%'; |
8. 函数与聚合
字符串函数
| 函数 | 描述 | 示例 |
|---|---|---|
CONCAT(str1, str2) |
连接字符串 | SELECT CONCAT('Hello', ' ', 'World'); → "Hello World" |
LENGTH(str) |
返回字符串长度 | SELECT LENGTH('MySQL'); → 5 |
日期函数
| 函数 | 描述 | 示例 |
|---|---|---|
CURDATE() |
返回当前日期 | SELECT CURDATE(); → "2023-10-01" |
DATEDIFF(date1, date2) |
计算两个日期的天数差 | SELECT DATEDIFF('2023-10-05', '2023-10-01'); → 4 |
聚合函数
| 函数 | 描述 | 示例 |
|---|---|---|
COUNT(*) |
统计行数 | SELECT COUNT(*) FROM users; |
SUM(column) |
计算列的总和 | SELECT SUM(age) FROM users; |
AVG(column) |
计算列的平均值 | SELECT AVG(age) FROM users; |
9. 连接与子查询
内连接(INNER JOIN)
SELECT a.column, b.column
FROM table_a a
INNER JOIN table_b b
ON a.common_column = b.common_column;
子查询
SELECT name
FROM users
WHERE age > (SELECT AVG(age) FROM users);
10. 其他命令
| 命令 | 描述 | 示例 |
|---|---|---|
SHOW DATABASES; |
显示所有数据库 | |
SHOW TABLES; |
显示当前数据库中的表 | |
SHOW GRANTS FOR user; |
查看用户的权限 | SHOW GRANTS FOR 'root'@'localhost'; |
FLUSH PRIVILEGES; |
刷新权限配置(修改权限后需执行) | |
TRUNCATE TABLE table; |
删除表中所有数据并重置自增列 | TRUNCATE TABLE users; |
附录
下面是学习黑马项目时总结的,作为留存
# MySQL常用命令
## 在Mac OS X上使用MySQL的常用命令 (注意分号结尾的命令是在连接MySQL服务后,出现mysql>后执行的)
# 启动MySQL服务
mysql.server start
# 停止MySQL服务
mysql.server stop
# 连接MySQL服务
mysql -u [username] -p
# 退出MySQL服务
exit;
# 显示所有数据库
show databases;
# 创建数据库
create database [database name];
# 删除数据库
drop database [database name];
# 显示当前数据库中的表
show tables;
# 创建表
create table [table name] (column1 datatype, column2 datatype, column3 datatype, ...);
# 删除表
drop table [table name];
# 插入记录
insert into [table name] values (value1, value2, value3, ...);
# 更新记录
update [table name] set column1=value1, column2=value2, ... where some_column=some_value;
# 删除记录
delete from [table name] where some_column=some_value;
## 在Windows上的命令(其中下面的命令与Mac OS X上不同)
# 启动MySQL服务
net start mysql # 以管理员身份运行cmd,不然没权限
# 停止MySQL服务
net stop mysql # 以管理员身份运行cmd,不然没权限
## 运行.sql文件建表,需要先登录进mysql(出现mysql>),然后选择在哪个数据库建表
# 使用某个数据库
USE [db_name];
source source path/to/your/file.sql;

浙公网安备 33010602011771号