MySQL系列(二)之CRUD(增删改查)操作

本文详细介绍了CRUD(创建、检索、更新、删除)这四个数据库操作的基本概念和在MySQL中的实现,包括CREATE用于创建数据表,INSERT用于插入数据,SELECT用于查询数据,UPDATE用于更新数据,以及DELETE用于删除数据。这些操作构成了数据库管理的核心功能。

一. 什么是CRUD

CRUD 是计算机编程中常用的四个基本操作的首字母缩写,它代表了 Create(创建)、Retrieve(检索)、Update(更新) 和 Delete(删除)这四种操作。

Create:创建新的数据记录或对象。
Retrieve:检索(读取)已存在的数据记录或对象。
Update:更新已存在的数据记录或对象。
Delete:删除已存在的数据记录或对象。

CRUD 是许多软件系统中对数据进行简单操作的基本操作集。它常常是与数据库操作密切相关的术语,表示对数据库中的数据进行增加、查询、更新和删除的操作。通过这些操作,用户可以管理和维护数据库中的数据。

二. Create创建

创建表:使用 CREATE TABLE 语句创建新的数据表。
插入数据:使用 INSERT INTO 语句向表中插入新的数据记录

在 MySQL中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据。

INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句。

  • INSERT…VALUES语句

INSERT VALUES 的语法格式为:

INSERT INTO <表名> [ <列名1> [ , … <列名n>] ]
VALUES (值1) [… , (值n) ];

语法说明如下。

  • <表名>:指定被操作的表名。

  • <列名>:指定需要插入数据的列名。若向表中的所有列插入数据,则全部的列名均可以省略,直接采用 INSERT<表名>VALUES(…) 即可。

  • VALUESVALUE 子句:该子句包含要插入的数据清单。数据清单中数据的顺序要和列的顺序相对应。

  • INSERT…SET语句

语法格式为:

INSERT INTO <表名>
SET <列名1> = <值1>,
    <列名2> = <值2>,
    …

此语句用于直接给表中的某些列指定对应的列值,即要插入的数据的列名在 SET 子句中指定,col_name 为指定的列名,等号后面为指定的数据,而对于未指定的列,列值会指定为该列的默认值。

由 INSERT 语句的两种形式可以看出:

  • 使用 INSERT…VALUES 语句可以向表中插入一行数据,也可以插入多行数据;
  • 使用 INSERT…SET 语句可以指定插入行中每列的值,也可以指定部分列的值;
  • INSERT…SELECT 语句向表中插入其他表的数据。
  • 采用 INSERT…SET 语句可以向表中插入部分列的值,这种方式更为灵活;
  • INSERT…VALUES 语句可以一次插入多条数据。

三. Retrieve(检索)

查询数据:使用 SELECT 语句从表中检索数据记录
条件查询:使用 WHERE 子句来过滤查询结果

在MySQL中,可以使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求,使用不同的查询方式来获取不同的数据,是使用频率最高、最重要的操作。
SELECT 的语法格式如下:

SELECT
{* | <字段列名>}
[FROM <表 1>, <表 2>…
[WHERE <表达式>
[GROUP BY <group by definition>
[HAVING <expression> [{<operator> <expression>}…]]
[ORDER BY <order by definition>]
[LIMIT[<offset>,] <row count>]
]

其中,各条子句的含义如下:

  • {*|<字段列名>}包含星号通配符的字段列表,表示所要查询字段的名称。
  • <表 1>,<表 2>…,表 1 和表 2 表示查询数据的来源,可以是单个或多个。
  • WHERE <表达式>是可选项,如果选择该项,将限定查询数据必须满足该查询条件。
  • GROUP BY< 字段 >,该子句告诉 MySQL 如何显示查询出来的数据,并按照指定的字段分组。
  • [ORDER BY< 字段 >],该子句告诉 MySQL 按什么样的顺序显示查询出来的数据,可以进行的排序有升序(ASC)和降序(DESC),默认情况下是升序。
  • [LIMIT[<offset>,]<row count>],该子句告诉 MySQL 每次显示查询出来的数据条数。

四. Update(更新)

更新数据:使用 UPDATE 语句更新表中的数据记录

使用 UPDATE 语句修改单个表,语法格式为:

UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]

语法说明如下:

  • <表名>:用于指定要更新的表名称。
  • SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
  • WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
  • ORDER BY 子句:可选项。用于限定表中的行被修改的次序。
  • LIMIT 子句:可选项。用于限定被修改的行数。

五. Delete(删除)

删除数据:使用 DELETE FROM 语句从表中删除数据记录

使用 DELETE 语句从单个表中删除数据,语法格式为:

DELETE FROM <表名> [WHERE 子句] [ORDER BY 子句] [LIMIT 子句]

语法说明如下:

  • <表名>:指定要删除数据的表名。
  • ORDER BY 子句:可选项。表示删除时,表中各行将按照子句中指定的顺序进行删除。
  • WHERE 子句:可选项。表示为删除操作限定删除条件,若省略该子句,则代表删除该表中的所有行。
  • LIMIT 子句:可选项。用于告知服务器在控制命令被返回到客户端前被删除行的最大值。

注意:在不使用 WHERE 条件的时候,将删除所有数据。

07-25
CRUD操作是指创建(Create)、读取(Read)、更新(Update)和删除(Delete)四种基础数据操作,广泛应用于数据库管理和软件开发领域。这些操作构成了数据交互的核心流程,是构建各类信息系统的基础。 在关系型数据库中,CRUD操作通常通过SQL语句实现。例如,使用`INSERT`语句进行创建操作,`SELECT`语句进行读取操作,`UPDATE`语句用于更新数据,而`DELETE`语句则用于删除记录。这些操作可以单独使用,也可以结合事务处理来确保数据一致性和完整性[^2]。 对于非关系型数据库(如NoSQL数据库),CRUD操作同样适用,但具体的实现方式可能有所不同。例如,在文档型数据库MongoDB中,创建操作使用`insert`方法,读取操作使用`find`方法,更新操作使用`update`方法,删除操作使用`remove`方法。这些操作的设计理念与SQL中的CRUD操作类似,但在语法和实现细节上有所不同[^1]。 在编程语言层面,CRUD操作通常需要结合数据库连接库或框架来实现。例如,在Python中可以使用`mysql-connector-python`库与MySQL数据库进行交互。通过该库,开发者可以建立数据库连接、执行SQL语句并处理结果集。以下是Python中使用`mysql-connector-python`实现CRUD操作的示例代码: ```python import mysql.connector # 建立数据库连接 conn = mysql.connector.connect( host="localhost", user="root", password="password", database="test_db" ) cursor = conn.cursor() # 创建操作 cursor.execute("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')") conn.commit() # 读取操作 cursor.execute("SELECT * FROM users") for row in cursor.fetchall(): print(row) # 更新操作 cursor.execute("UPDATE users SET email='new_email@example.com' WHERE name='Alice'") conn.commit() # 删除操作 cursor.execute("DELETE FROM users WHERE name='Alice'") conn.commit() # 关闭连接 cursor.close() conn.close() ``` 在前端开发中,CRUD操作通常涉及与后端API的交互。例如,使用JavaScript的`fetch` API发送HTTP请求来实现数据的创建、读取、更新和删除。以下是一个使用JavaScript实现CRUD操作的示例: ```javascript // 创建操作 fetch('/api/users', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'Alice', email: 'alice@example.com' }) }); // 读取操作 fetch('/api/users') .then(response => response.json()) .then(data => console.log(data)); // 更新操作 fetch('/api/users/1', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'Alice', email: 'new_email@example.com' }) }); // 删除操作 fetch('/api/users/1', { method: 'DELETE' }); ``` 此外,一些框架和库提供了对CRUD操作的进一步封装和优化。例如,在Java开发中,MyBatis是一个常用的持久层框架,它通过XML配置文件或注解的方式定义SQL语句,并将结果映射为Java对象。以下是一个使用MyBatis实现CRUD操作的示例: ```xml <!-- 创建操作 --> <insert id="insertUser" parameterType="com.example.User"> INSERT INTO users (name, email) VALUES (#{name}, #{email}); </insert> <!-- 读取操作 --> <select id="selectUser" resultType="com.example.User"> SELECT * FROM users WHERE id = #{id}; </select> <!-- 更新操作 --> <update id="updateUser" parameterType="com.example.User"> UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}; </update> <!-- 删除操作 --> <delete id="deleteUser" parameterType="int"> DELETE FROM users WHERE id = #{id}; </delete> ``` 通过上述方法,开发者可以灵活地实现CRUD操作,并根据具体需求选择合适的工具和框架。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不念那年晚春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值