MySQL基础增删查改操作详解

 更新时间:2026年01月29日 14:28:00   作者:君爱学习  
本文详细介绍了MySQL数据库的基础增删查改(CRUD)操作,包括数据库和数据表的创建、删除和修改,以及数据的插入、查询、更新和删除,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

以下是 MySQL 数据库基础的增删查改(CRUD)操作详解:

一、数据库操作

  1. 创建数据库
CREATE DATABASE db_name;
CREATE DATABASE IF NOT EXISTS db_name;  -- 不存在时才创建
CREATE DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  1. 删除数据库
DROP DATABASE db_name;
DROP DATABASE IF EXISTS db_name;  -- 存在时才删除
  1. 选择/切换数据库
USE db_name;

二、数据表操作

  1. 创建表
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,        -- 主键,自增
    username VARCHAR(50) NOT NULL UNIQUE,     -- 非空,唯一
    password VARCHAR(255) NOT NULL,
    email VARCHAR(100),
    age INT DEFAULT 18,                       -- 默认值
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  1. 删除表
DROP TABLE table_name;
DROP TABLE IF EXISTS table_name;
  1. 修改表结构
-- 添加列
ALTER TABLE users ADD COLUMN phone VARCHAR(20);
-- 修改列
ALTER TABLE users MODIFY COLUMN email VARCHAR(150);
-- 重命名列
ALTER TABLE users CHANGE COLUMN phone mobile VARCHAR(20);
-- 删除列
ALTER TABLE users DROP COLUMN mobile;
-- 添加索引
CREATE INDEX idx_username ON users(username);
-- 删除索引
DROP INDEX idx_username ON users;

三、数据操作(CRUD)

  1. 插入数据(Create)
-- 插入单条数据(指定列)
INSERT INTO users (username, password, email, age) 
VALUES ('john_doe', '123456', 'john@example.com', 25);
-- 插入单条数据(所有列)
INSERT INTO users VALUES (NULL, 'jane_doe', '654321', 'jane@example.com', 30, NOW(), NOW());
-- 插入多条数据
INSERT INTO users (username, password, email) 
VALUES 
    ('alice', 'pass123', 'alice@example.com'),
    ('bob', 'pass456', 'bob@example.com'),
    ('charlie', 'pass789', 'charlie@example.com');
  1. 查询数据(Read)
-- 查询所有列
SELECT * FROM users;
-- 查询指定列
SELECT id, username, email FROM users;
-- 条件查询
SELECT * FROM users WHERE age > 20;
SELECT * FROM users WHERE username = 'john_doe';
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
SELECT * FROM users WHERE email LIKE '%@example.com';
-- 逻辑运算符
SELECT * FROM users WHERE age > 20 AND email LIKE '%@example.com';
SELECT * FROM users WHERE age < 18 OR age > 60;
-- 排序
SELECT * FROM users ORDER BY age DESC;        -- 降序
SELECT * FROM users ORDER BY created_at ASC;  -- 升序
-- 限制返回数量
SELECT * FROM users LIMIT 10;                 -- 前10条
SELECT * FROM users LIMIT 5, 10;              -- 跳过5条,取10条
-- 去重
SELECT DISTINCT age FROM users;
-- 分组统计
SELECT age, COUNT(*) as count FROM users GROUP BY age;
SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
-- 聚合函数
SELECT COUNT(*) as total_users FROM users;
SELECT AVG(age) as avg_age FROM users;
SELECT MAX(age) as max_age FROM users;
SELECT MIN(age) as min_age FROM users;
SELECT SUM(age) as total_age FROM users;
  1. 更新数据(Update)
-- 更新单个字段
UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
-- 更新多个字段
UPDATE users SET 
    email = 'updated@example.com',
    age = 26,
    updated_at = NOW()
WHERE username = 'john_doe';
-- 基于现有值更新
UPDATE users SET age = age + 1 WHERE age < 30;
-- 批量更新
UPDATE users SET status = 'inactive' WHERE last_login < '2024-01-01';
  1. 删除数据(Delete)
-- 删除指定记录
DELETE FROM users WHERE id = 1;
-- 删除多条记录
DELETE FROM users WHERE age > 100;
-- 清空表(删除所有记录)
DELETE FROM users;
TRUNCATE TABLE users;  -- 更快,不能回滚

四、高级查询技巧

  1. 连接查询
-- 内连接
SELECT u.username, o.order_id, o.amount
FROM users u
INNER JOIN orders o ON u.id = o.user_id;
-- 左连接
SELECT u.username, o.order_id
FROM users u
LEFT JOIN orders o ON u.id = o.user_id;
-- 右连接
SELECT u.username, o.order_id
FROM users u
RIGHT JOIN orders o ON u.id = o.user_id;
  1. 子查询
-- WHERE子句中的子查询
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users);
-- FROM子句中的子查询
SELECT avg_age_table.age_group, COUNT(*)
FROM (SELECT 
    CASE 
        WHEN age < 20 THEN '少年'
        WHEN age BETWEEN 20 AND 40 THEN '青年'
        ELSE '中老年'
    END as age_group
    FROM users) as avg_age_table
GROUP BY age_group;
  1. 联合查询
SELECT username, email FROM active_users
UNION
SELECT username, email FROM inactive_users;

五、事务处理

-- 开始事务
START TRANSACTION;
-- 执行操作
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE user_id = 2;
-- 提交或回滚
COMMIT;  -- 确认更改
-- 或
ROLLBACK;  -- 撤销更改

六、实用技巧

  1. 备份数据
-- 创建表备份
CREATE TABLE users_backup AS SELECT * FROM users;
-- 插入备份数据
INSERT INTO users_backup SELECT * FROM users WHERE created_at > '2024-01-01';
  1. 批量操作
-- 批量插入(提高性能)
INSERT INTO users (username, email) VALUES 
('user1', 'user1@example.com'),
('user2', 'user2@example.com'),
('user3', 'user3@example.com');
  1. 使用CASE表达式
SELECT 
    username,
    age,
    CASE 
        WHEN age < 18 THEN '未成年'
        WHEN age BETWEEN 18 AND 60 THEN '成年'
        ELSE '老年'
    END as age_group
FROM users;

注意事项

  1. WHERE条件:UPDATE和DELETE操作一定要加WHERE条件,除非确实要操作所有记录
  2. 事务处理:重要操作使用事务,确保数据一致性
  3. 索引使用:频繁查询的字段建议添加索引
  4. SQL注入:应用程序中要使用参数化查询防止SQL注入
  5. 性能优化:大数据量时注意查询性能,避免SELECT *

到此这篇关于MySQL - 基础增删查改的文章就介绍到这了,更多相关mysql增删查改内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法

    weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法

    WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器,这篇文章主要介绍了weblogic服务建立数据源连接测试更新mysql驱动包,需要的朋友可以参考下
    2022-01-01
  • 101个MySQL的配置和优化的提示

    101个MySQL的配置和优化的提示

    这里是101条调节和优化 MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧
    2013-08-08
  • mysql性能优化脚本mysqltuner.pl使用介绍

    mysql性能优化脚本mysqltuner.pl使用介绍

    无意中发现了,major哥们开发的一个性能分析脚本,很有意思,可以通过这个脚本学学他的思想
    2013-02-02
  • MySQL 分表分库怎么进行数据切分

    MySQL 分表分库怎么进行数据切分

    这篇文章主要介绍了MySQL 分表分库怎么进行数据切分,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • MySql创建分区的方法实例

    MySql创建分区的方法实例

    mysql分区相对于mysql分库分表便利很多,可以对现有的mysql大表添加分区,也可以对已有分区的表扩充分区,下面这篇文章主要给大家介绍了关于MySql创建分区的相关资料,需要的朋友可以参考下
    2022-04-04
  • 浅谈MySQL聚簇索引

    浅谈MySQL聚簇索引

    数据库的索引从不同的角度可以划分成不同的类型,聚簇索引便是其中一种。聚簇索引并不是一种单独的索引类型,而是一种数据的存储方式。本文详细介绍了MySQL的聚簇索引,感兴趣的同学可以参考阅读
    2023-04-04
  • MySQL数据库char与varchar的区别分析及使用建议

    MySQL数据库char与varchar的区别分析及使用建议

    本文主要介绍了mysql中VARCHAR与CHAR字符型数据的差异以及这两种字符型数据在项目中的使用建议,真心不错。值得一看。小编有种受益匪浅的感觉。
    2014-09-09
  • MySQL悲观锁与乐观锁的实现方案

    MySQL悲观锁与乐观锁的实现方案

    我们知道Mysql并发事务会引起更新丢失问题,解决办法是锁,所以本文将对锁(乐观锁、悲观锁)进行分析,这篇文章主要给大家介绍了关于MySQL悲观锁与乐观锁方案的相关资料,需要的朋友可以参考下
    2021-11-11
  • 如何使用C/C++链接mysql数据库

    如何使用C/C++链接mysql数据库

    本文给大家介绍了MySQL数据库的安装方法(手动导入或系统指令)及接口使用流程,包括初始化、链接、执行SQL、获取结果、释放内存等关键步骤,强调编码设置为UTF-8、正确处理头文件路径和内存泄漏问题,感兴趣的朋友跟随小编一起看看吧
    2025-09-09
  • MySQL通过binlog恢复数据

    MySQL通过binlog恢复数据

    通过了解binlog日志的相关配置,简单掌握通过binlog对数据库进行数据恢复操作。有此需求的朋友可以参考下
    2021-05-05

最新评论