MySQL常用SQL语句的示例

发布于:2025-04-18 ⋅ 阅读:(24) ⋅ 点赞:(0)

概述

  • MySQL 常用 SQL 语句的示例,涵盖数据定义、操作、查询等常见场景

一、数据库操作

  1. 创建数据库

    CREATE DATABASE mydb;
    
  2. 选择数据库

    USE mydb;
    
  3. 删除数据库

    DROP DATABASE mydb;
    

二、表操作

  1. 创建表

    CREATE TABLE users (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(50) NOT NULL,
      email VARCHAR(100) UNIQUE,
      age INT DEFAULT 18,
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
  2. 修改表结构

    -- 添加列
    ALTER TABLE users ADD COLUMN address VARCHAR(200);
    
    -- 修改列类型
    ALTER TABLE users MODIFY COLUMN age TINYINT;
    
    -- 删除列
    ALTER TABLE users DROP COLUMN address;
    
  3. 删除表

    DROP TABLE users;
    

三、数据操作(CRUD)

  1. 插入数据

    INSERT INTO users (name, email, age) 
    VALUES ('张三', 'zhangsan@example.com', 25);
    
  2. 查询数据

    -- 查询所有列
    SELECT * FROM users;
    
    -- 查询特定列
    SELECT name, email FROM users;
    
    -- 条件查询 (WHERE)
    SELECT * FROM users WHERE age > 20;
    
    -- 排序 (ORDER BY)
    SELECT * FROM users ORDER BY created_at DESC;
    
    -- 分页 (LIMIT)
    SELECT * FROM users LIMIT 10 OFFSET 0; -- 第一页,每页10条
    
  3. 更新数据

    UPDATE users SET age = 26 WHERE id = 1;
    
  4. 删除数据

    DELETE FROM users WHERE id = 1;
    

四、高级查询

  1. 聚合函数

    SELECT COUNT(*) FROM users;       -- 总记录数
    SELECT AVG(age) FROM users;       -- 平均年龄
    SELECT MAX(age) FROM users;       -- 最大年龄
    
  2. 分组查询 (GROUP BY)

    SELECT age, COUNT(*) AS count 
    FROM users 
    GROUP BY age 
    HAVING count > 5; -- HAVING 过滤分组结果
    
  3. 连接查询

    -- 内连接 (INNER JOIN)
    SELECT u.name, o.order_id 
    FROM users u 
    INNER JOIN orders o ON u.id = o.user_id;
    
    -- 左连接 (LEFT JOIN)
    SELECT u.name, o.order_id 
    FROM users u 
    LEFT JOIN orders o ON u.id = o.user_id;
    
  4. 子查询

    SELECT * FROM users 
    WHERE age > (SELECT AVG(age) FROM users);
    

五、索引操作

  1. 创建索引

    CREATE INDEX idx_name ON users(name);
    
  2. 删除索引

    DROP INDEX idx_name ON users;
    

六、事务处理

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 提交事务
-- ROLLBACK; -- 回滚事务

七、用户与权限

  1. 创建用户

    CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';
    
  2. 授予权限

    GRANT SELECT, INSERT ON mydb.* TO 'myuser'@'localhost';
    
  3. 撤销权限

    REVOKE INSERT ON mydb.* FROM 'myuser'@'localhost';
    
  4. 删除用户

    DROP USER 'myuser'@'localhost';
    

八、其他常用操作

  1. 模糊查询 (LIKE)

    SELECT * FROM users WHERE name LIKE '张%';
    
  2. 去重查询 (DISTINCT)

    SELECT DISTINCT age FROM users;
    
  3. 处理 NULL 值

    SELECT * FROM users WHERE email IS NULL;
    
  4. 日期函数

    SELECT NOW(); -- 当前时间
    SELECT DATE_FORMAT(created_at, '%Y-%m-%d') FROM users;
    

九、导入导出数据

  1. 导出数据到文件

    mysqldump -u root -p mydb > mydb.sql
    
  2. 导入数据

    mysql -u root -p mydb < mydb.sql
    

网站公告

今日签到

点亮在社区的每一天
去签到