-- 查询所有列的所有数据 SELECT * FROM 表名; -- 查询特定列 SELECT 列1, 列2 FROM 表名; SELECT username, email FROM users; -- 示例 -- 带条件的查询 (WHERE) SELECT * FROM 表名 WHERE 条件; SELECT * FROM users WHERE age > 25; -- 示例:年龄大于25的用户 SELECT * FROM users WHERE username = 'john_doe'; -- 示例:用户名为 john_doe -- 排序 (ORDER BY) SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC]; -- ASC 升序 (默认), DESC 降序 SELECT * FROM users ORDER BY created_at DESC; -- 示例:按创建时间降序(最新在前) -- 限制结果数量 (LIMIT) SELECT * FROM 表名 LIMIT 数量; SELECT * FROM users LIMIT 5; -- 示例:只取前5条 SELECT * FROM users LIMIT 5, 10; -- 示例:跳过前5条,取接下来的10条(常用于分页) -- 模糊查询 (LIKE) SELECT * FROM 表名 WHERE 列名 LIKE '模式'; SELECT * FROM users WHERE email LIKE '%@example.com'; -- 示例:查找 example.com 结尾的邮箱 -- % 代表任意多个字符,_ 代表一个任意字符
更新数据 (UPDATE)
UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2 WHERE 条件; -- 示例:将用户 john_doe 的年龄更新为 26 UPDATE users SET age = 26 WHERE username = 'john_doe'; -- **警告:如果不加 WHERE 条件,会更新表中所有记录!**
删除数据 (DELETE)
DELETE FROM 表名 WHERE 条件; -- 示例:删除用户名为 bob 的用户 DELETE FROM users WHERE username = 'bob'; -- **警告:如果不加 WHERE 条件,会删除表中所有记录!** -- 清空表(删除所有数据,但保留表结构)通常使用 TRUNCATE,更快 TRUNCATE TABLE 表名;
五、 用户与权限管理**
创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码'; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; -- 示例:本地连接 CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; -- 示例:允许任何主机连接
授予权限
GRANT 权限类型 ON 数据库名.表名 TO '用户名'@'主机'; -- 示例 1:授予用户对 mydb 数据库所有表的所有权限 GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; -- 示例 2:授予用户对特定表的 SELECT, INSERT, UPDATE 权限 GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'myuser'@'localhost'; -- 授予权限后必须刷新权限 FLUSH PRIVILEGES;
查看用户权限
SHOW GRANTS FOR '用户名'@'主机';
撤销权限
REVOKE 权限类型 ON 数据库名.表名 FROM '用户名'@'主机'; REVOKE ALL PRIVILEGES ON mydb.* FROM 'myuser'@'localhost'; -- 示例 FLUSH PRIVILEGES;
删除用户
DROP USER '用户名'@'主机';
六、 其他实用命令**
查看 MySQL 版本
SELECT VERSION();
显示当前状态信息
STATUS;
执行 SQL 脚本文件
在 MySQL 命令行中:
SOURCE /path/to/your/file.sql;
在系统 Shell 中:
mysql -u root -p 数据库名 < /path/to/your/file.sql
将查询结果导出到文件
在 MySQL 命令行中:
SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
(需要 FILE 权限,且输出路径 MySQL 要有写入权限)
总结与注意事项
分号是必须的:绝大多数 SQL 语句必须以分号 ; 结尾才能执行。
大小写:SQL 关键字(如 SELECT, FROM) 不区分大小写。但数据库名、表名、列名在 Linux/Unix 系统下是区分大小写的,在 Windows 下不区分。建议始终保持一致,使用小写和下划线是一种好习惯(如 my_database)。
反引号 “:如果数据库/表/列名是 MySQL 的保留字(如 order, user),必须用反引号括起来。 CREATE TABLE `order` (`id` INT, `user` VARCHAR(50)); -- 正确 CREATE TABLE order (id INT, user VARCHAR(50)); -- 会报错
WHERE 子句:在执行 UPDATE 和 DELETE 时,务必仔细检查 WHERE 条件,否则可能误修改或误删大量数据。
-- 查询所有列的所有数据 SELECT * FROM 表名; -- 查询特定列 SELECT 列1, 列2 FROM 表名; SELECT username, email FROM users; -- 示例 -- 带条件的查询 (WHERE) SELECT * FROM 表名 WHERE 条件; SELECT * FROM users WHERE age > 25; -- 示例:年龄大于25的用户 SELECT * FROM users WHERE username = 'john_doe'; -- 示例:用户名为 john_doe -- 排序 (ORDER BY) SELECT * FROM 表名 ORDER BY 列名 [ASC|DESC]; -- ASC 升序 (默认), DESC 降序 SELECT * FROM users ORDER BY created_at DESC; -- 示例:按创建时间降序(最新在前) -- 限制结果数量 (LIMIT) SELECT * FROM 表名 LIMIT 数量; SELECT * FROM users LIMIT 5; -- 示例:只取前5条 SELECT * FROM users LIMIT 5, 10; -- 示例:跳过前5条,取接下来的10条(常用于分页) -- 模糊查询 (LIKE) SELECT * FROM 表名 WHERE 列名 LIKE '模式'; SELECT * FROM users WHERE email LIKE '%@example.com'; -- 示例:查找 example.com 结尾的邮箱 -- % 代表任意多个字符,_ 代表一个任意字符
更新数据 (UPDATE)
UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2 WHERE 条件; -- 示例:将用户 john_doe 的年龄更新为 26 UPDATE users SET age = 26 WHERE username = 'john_doe'; -- **警告:如果不加 WHERE 条件,会更新表中所有记录!**
删除数据 (DELETE)
DELETE FROM 表名 WHERE 条件; -- 示例:删除用户名为 bob 的用户 DELETE FROM users WHERE username = 'bob'; -- **警告:如果不加 WHERE 条件,会删除表中所有记录!** -- 清空表(删除所有数据,但保留表结构)通常使用 TRUNCATE,更快 TRUNCATE TABLE 表名;
五、 用户与权限管理**
创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码'; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; -- 示例:本地连接 CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword'; -- 示例:允许任何主机连接
授予权限
GRANT 权限类型 ON 数据库名.表名 TO '用户名'@'主机'; -- 示例 1:授予用户对 mydb 数据库所有表的所有权限 GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; -- 示例 2:授予用户对特定表的 SELECT, INSERT, UPDATE 权限 GRANT SELECT, INSERT, UPDATE ON mydb.users TO 'myuser'@'localhost'; -- 授予权限后必须刷新权限 FLUSH PRIVILEGES;
查看用户权限
SHOW GRANTS FOR '用户名'@'主机';
撤销权限
REVOKE 权限类型 ON 数据库名.表名 FROM '用户名'@'主机'; REVOKE ALL PRIVILEGES ON mydb.* FROM 'myuser'@'localhost'; -- 示例 FLUSH PRIVILEGES;
删除用户
DROP USER '用户名'@'主机';
六、 其他实用命令**
查看 MySQL 版本
SELECT VERSION();
显示当前状态信息
STATUS;
执行 SQL 脚本文件
在 MySQL 命令行中:
SOURCE /path/to/your/file.sql;
在系统 Shell 中:
mysql -u root -p 数据库名 < /path/to/your/file.sql
将查询结果导出到文件
在 MySQL 命令行中:
SELECT * FROM users INTO OUTFILE '/tmp/users.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
(需要 FILE 权限,且输出路径 MySQL 要有写入权限)
总结与注意事项
分号是必须的:绝大多数 SQL 语句必须以分号 ; 结尾才能执行。
大小写:SQL 关键字(如 SELECT, FROM) 不区分大小写。但数据库名、表名、列名在 Linux/Unix 系统下是区分大小写的,在 Windows 下不区分。建议始终保持一致,使用小写和下划线是一种好习惯(如 my_database)。
反引号 “:如果数据库/表/列名是 MySQL 的保留字(如 order, user),必须用反引号括起来。 CREATE TABLE `order` (`id` INT, `user` VARCHAR(50)); -- 正确 CREATE TABLE order (id INT, user VARCHAR(50)); -- 会报错
WHERE 子句:在执行 UPDATE 和 DELETE 时,务必仔细检查 WHERE 条件,否则可能误修改或误删大量数据。