mysql常用语句, MySQL 中最常用的语句分类及示例

首页 2025-10-11 21:48:07


以下是 MySQL 中最常用的语句分类及示例,涵盖数据查询、增删改、表操作等核心场景:

一、数据库操作

  1. 创建数据库
    sql
    CREATE DATABASE IF NOT EXISTS mydb 
    CHARACTER SET utf8mb4 
    COLLATE utf8mb4_unicode_ci; -- 指定字符集(支持emoji)
    
     
     
  2. 删除数据库
    sql
    DROP DATABASE IF EXISTS mydb;
    
     
     
  3. 切换数据库
    sql
    USE mydb;
    
     
     

二、表操作

  1. 创建表
    sql
    CREATE TABLE IF NOT EXISTS users (
      id INT PRIMARY KEY AUTO_INCREMENT, -- 自增主键
      username VARCHAR(50) NOT NULL UNIQUE, -- 唯一且非空
      age INT DEFAULT 0, -- 默认值
      email VARCHAR(100),
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -- 自动记录创建时间
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
    
     
     
  2. 查看表结构
    sql
    DESC users; -- 或 DESCRIBE users;
    
     
     
  3. 修改表
    sql
    -- 添加字段
    ALTER TABLE users ADD COLUMN phone VARCHAR(20) AFTER email;
    
    -- 修改字段类型
    ALTER TABLE users MODIFY COLUMN age TINYINT;
    
    -- 重命名表
    ALTER TABLE users RENAME TO members;
    
     
     
  4. 删除表
    sql
    DROP TABLE IF EXISTS members;
    
     
     

三、数据增删改(CRUD)

  1. 插入数据(Create)
    sql
    -- 全字段插入
    INSERT INTO users (username, age, email) 
    VALUES ('zhangsan', 25, 'zhangsan@example.com');
    
    -- 批量插入
    INSERT INTO users (username, age) 
    VALUES ('lisi', 30), ('wangwu', 28);
    
     
     
  2. 查询数据(Read)
    sql
    -- 基础查询
    SELECT username, age FROM users WHERE age > 25;
    
    -- 排序和限制
    SELECT * FROM users ORDER BY age DESC LIMIT 10;
    
    -- 分组和聚合
    SELECT age, COUNT(*) AS count FROM users GROUP BY age HAVING count > 1;
    
    -- 联表查询(内连接)
    SELECT u.username, o.order_id 
    FROM users u
    INNER JOIN orders o ON u.id = o.user_id;
    
     
     
  3. 更新数据(Update)
    sql
    UPDATE users 
    SET age = 26, email = 'new@example.com' 
    WHERE username = 'zhangsan';
    
     
     
  4. 删除数据(Delete)
    sql
    DELETE FROM users WHERE age < 18;
    
     
     

四、条件与高级查询

  1. 条件查询
    sql
    -- 模糊查询
    SELECT * FROM users WHERE username LIKE 'zhang%';
    
    -- 范围查询
    SELECT * FROM users WHERE age BETWEEN 20 AND 30;
    
    -- 多条件
    SELECT * FROM users WHERE age > 25 AND email IS NOT NULL;
    
     
     
  2. 子查询
    sql
    -- 查找订单金额大于平均值的订单
    SELECT * FROM orders 
    WHERE amount > (SELECT AVG(amount) FROM orders);
    
     
     
  3. 开窗函数(MySQL 8.0+)
    sql
    -- 按部门排名工资
    SELECT 
      dept, name, salary,
      RANK() OVER (PARTITION BY dept ORDER BY salary DESC) AS rank
    FROM employees;
    
     
     

五、索引操作

  1. 创建索引
    sql
    -- 普通索引
    CREATE INDEX idx_username ON users(username);
    
    -- 联合索引
    CREATE INDEX idx_age_email ON users(age, email);
    
     
     
  2. 删除索引
    sql
    DROP INDEX idx_username ON users;
    
     
     

六、事务操作

sql
BEGIN; -- 开始事务
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 提交事务(成功时)
-- ROLLBACK; -- 回滚事务(失败时)
 
这些语句覆盖了 MySQL 日常使用的 90% 以上场景,实际应用中可根据业务需求组合使用。操作前建议备份数据,尤其是 DROPDELETE 等高危操作。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道