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 等高危操作。
nat123映射怎么用?超详细步骤,外网访问内网轻松搞定
nat123域名怎么用?两种方式轻松搞定
nat123怎么用?简单几步实现内网穿透
内网穿透工具对比:nat123、花生壳与轻量新选择
远程访问内网很简单:用对工具,一“箭”穿透
ngrok下载完全指南:从入门到获取客户端
内网远程桌面软件:穿透局域网边界的数字窗口
从外网远程访问内网服务器的完整方案
Windows Server 2008端口转发完全教程:netsh命令添加/查看/删除/重置
为什么三层交换机转发比Linux服务器快?转发表硬件加速的秘密