【MySQL】常用语句

目录

      • [1. 数据库操作](#1. 数据库操作)
      • [2. 表操作](#2. 表操作)
      • [3. 数据操作(CRUD)](#3. 数据操作(CRUD))
      • [4. 高级查询](#4. 高级查询)
      • [5. 索引管理](#5. 索引管理)
      • [6. 用户与权限](#6. 用户与权限)
      • [7. 数据导入导出](#7. 数据导入导出)
      • [8. 事务控制](#8. 事务控制)
      • [9. 其他实用语句](#9. 其他实用语句)
      • 注意事项
    • 如果这篇文章对你有所帮助,渴望获得你的一个点赞!

1. 数据库操作

  • 创建数据库

    sql 复制代码
    CREATE DATABASE dbname;
    CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 指定字符集
  • 查看数据库

    sql 复制代码
    SHOW DATABASES; -- 列出所有数据库
    SHOW CREATE DATABASE dbname; -- 查看创建语句
  • 使用数据库

    sql 复制代码
    USE dbname; -- 切换当前数据库
  • 删除数据库

    sql 复制代码
    DROP DATABASE dbname; -- 谨慎操作!

2. 表操作

  • 创建表

    sql 复制代码
    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
    );
  • 查看表结构

    sql 复制代码
    DESC users; -- 查看表结构
    SHOW CREATE TABLE users; -- 查看建表语句
  • 修改表

    sql 复制代码
    ALTER TABLE users ADD COLUMN gender VARCHAR(10); -- 添加列
    ALTER TABLE users MODIFY COLUMN name VARCHAR(100); -- 修改列类型
    ALTER TABLE users DROP COLUMN age; -- 删除列
    ALTER TABLE users RENAME TO members; -- 重命名表
  • 删除表

    sql 复制代码
    DROP TABLE users; -- 删除表(谨慎!)

3. 数据操作(CRUD)

  • 插入数据

    sql 复制代码
    INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
    INSERT INTO users (name, email) VALUES 
      ('Bob', 'bob@example.com'),
      ('Charlie', 'charlie@example.com'); -- 插入多行
  • 查询数据

    sql 复制代码
    SELECT * FROM users; -- 查询所有数据
    SELECT name, email FROM users WHERE age > 20; -- 条件筛选
    SELECT DISTINCT name FROM users; -- 去重
    SELECT * FROM users ORDER BY created_at DESC; -- 排序
    SELECT * FROM users LIMIT 10 OFFSET 5; -- 分页(第2页,每页10条)
  • 更新数据

    sql 复制代码
    UPDATE users SET age = 25 WHERE id = 1; -- 更新单条
    UPDATE users SET status = 'active' WHERE last_login > '2023-01-01'; -- 批量更新
  • 删除数据

    sql 复制代码
    DELETE FROM users WHERE id = 1; -- 删除单条
    DELETE FROM users WHERE status = 'inactive'; -- 条件删除
    TRUNCATE TABLE users; -- 清空表(不可回滚,速度比DELETE快)

4. 高级查询

  • 连接查询(JOIN)

    sql 复制代码
    -- 内连接
    SELECT users.name, orders.amount 
    FROM users 
    INNER JOIN orders ON users.id = orders.user_id;
    
    -- 左连接
    SELECT users.name, orders.amount 
    FROM users 
    LEFT JOIN orders ON users.id = orders.user_id;
  • 聚合函数

    sql 复制代码
    SELECT COUNT(*) FROM users; -- 统计行数
    SELECT AVG(age) AS avg_age FROM users; -- 平均值
    SELECT MAX(created_at) AS latest FROM users; -- 最大值
    SELECT city, COUNT(*) FROM users GROUP BY city; -- 分组统计
    SELECT city, COUNT(*) FROM users GROUP BY city HAVING COUNT(*) > 100; -- 分组后筛选
  • 子查询

    sql 复制代码
    SELECT name FROM users 
    WHERE id IN (SELECT user_id FROM orders WHERE amount > 100);

5. 索引管理

  • 创建索引

    sql 复制代码
    CREATE INDEX idx_name ON users(name); -- 普通索引
    CREATE UNIQUE INDEX idx_email ON users(email); -- 唯一索引
  • 删除索引

    sql 复制代码
    DROP INDEX idx_name ON users;

6. 用户与权限

  • 创建用户

    sql 复制代码
    CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
  • 授予权限

    sql 复制代码
    GRANT SELECT, INSERT ON dbname.* TO 'username'@'localhost';
    GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION; -- 谨慎使用
  • 撤销权限

    sql 复制代码
    REVOKE INSERT ON dbname.* FROM 'username'@'localhost';
  • 删除用户

    sql 复制代码
    DROP USER 'username'@'localhost';
  • 刷新权限

    sql 复制代码
    FLUSH PRIVILEGES;

7. 数据导入导出

  • 导出数据

    sql 复制代码
    SELECT * INTO OUTFILE '/tmp/users.csv' 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n' 
    FROM users;
  • 导入数据

    sql 复制代码
    LOAD DATA INFILE '/tmp/users.csv' 
    INTO TABLE users 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n';

8. 事务控制

  • 开启事务

    sql 复制代码
    START TRANSACTION;
    -- 执行操作(如INSERT/UPDATE/DELETE)
    COMMIT; -- 提交事务
    ROLLBACK; -- 回滚事务
  • 设置自动提交

    sql 复制代码
    SET autocommit = 0; -- 关闭自动提交
    SET autocommit = 1; -- 开启自动提交(默认)

9. 其他实用语句

  • 条件判断

    sql 复制代码
    SELECT name, 
      CASE 
        WHEN age < 18 THEN 'Minor'
        ELSE 'Adult' 
      END AS age_group 
    FROM users;
  • 日期函数

    sql 复制代码
    SELECT NOW(); -- 当前时间
    SELECT DATE_FORMAT(created_at, '%Y-%m-%d') FROM users; -- 格式化日期
  • 字符串函数

    sql 复制代码
    SELECT CONCAT(name, ' (', email, ')') AS info FROM users;
    SELECT SUBSTRING(email, 1, 5) FROM users; -- 截取字符串

注意事项

  • 数据安全 :执行DELETEUPDATE时务必检查WHERE条件,避免误操作。
  • 备份 :重要操作前使用mysqldump备份数据。
  • 性能优化:合理使用索引,避免全表扫描。

掌握这些语句后,可覆盖MySQL日常开发与管理的90%场景。进阶学习可探索存储过程、触发器、视图等高级功能。


如果这篇文章对你有所帮助,渴望获得你的一个点赞!

相关推荐
田梓燊3 分钟前
leetcode 48
算法·leetcode·职场和发展
程序员老邢6 分钟前
【产品底稿 04】商助慧 V1.1 里程碑:爬虫入库 + MySQL + Milvus 全链路打通
java·爬虫·mysql·ai·springboot·milvus
6Hzlia8 分钟前
【Hot 100 刷题计划】 LeetCode 169. 多数元素 | C++ 哈希表基础解法
c++·leetcode·散列表
米粒110 分钟前
力扣算法刷题 Day 38 (打家劫舍专题)
算法·leetcode·职场和发展
TDengine (老段)11 分钟前
中原油田引入时序数据库 TDengine:写入性能提升、存储成本下降 85%
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据
智者知已应修善业13 分钟前
【CD4022八进制计数器脉冲分配器】2023-5-31
驱动开发·经验分享·笔记·硬件架构·硬件工程
IT邦德14 分钟前
Oracle 26ai搭建ADG Far Sync日志备库
数据库·oracle
Crazy CodeCrafter22 分钟前
现在做服装,实体和电商怎么选?
大数据·数据库·人工智能·微信·开源软件·零售
一江寒逸31 分钟前
零基础从入门到精通MongoDB(下篇):进阶精通篇——吃透高级查询、事务、索引优化与集群架构,成为MongoDB实战高手
数据库·mongodb·架构
sa1002735 分钟前
一键获取淘宝天猫商品评论:API 接口实战与多语言实现教程
数据库·oracle