两张表增删改查是什么

说实话,说到数据库操作,就只有两张表。
当我第一次学习它时,我认为它很容易,但是当我开始手写SQL时,我发现有很多陷阱。
以最基本的增删改查为例。
看起来是这样,但是细节可真卡。

首先我们来谈谈加法。
例如,如果你有一个STUDENTS表,突然来了五个新学生,直接使用INSERT INTO语句插入数据是正常的。
之前帮同事修过。
输入数据时忘记加逗号,整个记录都乱了。
这种低级错误现在想起来真是又哭又笑。
最有趣的是,如果对应的课程程序中没有记录,课程在输入外键数据时,数据库会直接报错,所以在写SQL之前必须先检查数据依赖关系。

我在删除操作中遇到的最大的坑是误删除。
我记得有一次我使用 DELETE FROM Students < 1>幸运的是,我发现对于年龄<1>当您在餐桌上取消预订时要格外注意。
例如,删除课程时,必须先清除依赖于该课程的选课记录,否则数据将丢失。

更新操作需要格外小心。
我有过一次不幸的经历,就是在更新学生姓名时忘记添加单引号,导致整列数据被磨损。
还有一种情况,同事把整个语句写成 UPDATE Students Age = Age + 1 作为 UPDATE Students Age = 1 结果,学院里所有学生的年龄都是 1 岁——这种错误对于一年来说是可笑的。
更新外键相关数据时,要特别注意确保目标记录首先存在,否则会引发块异常。

查询(检索)是操作中最灵活的部分,但是如果JOIN使用不当就会出现问题。
例如,如果您想查看特定学生所修的课程;使用 INNER JOIN 将跳过未选择课程的学生。
最好改用左连接。
我有一个客户端系统。
查询的时候忘记写ORDER BY了。
返回数据的顺序与数据库中存储的顺序相同。
用户抱怨这些信息令人困惑。

强烈建议跨表操作的初学者使用数据可视化工具来绘制ER图。
一个实习生没有清楚表关系,就写了一个JOIN语句直接连接students表和teachers表。
结果,输出都是错误的对——这种类型的错误在实际业务中代价非常高昂。
请记住,当检查数据一致性时,使用 EXISTS 来查找是否有比 COUNT 更多的匹配记录要高效得多,这是我在遇到问题后发现的。
归根结底,两张表的操作看似简单,但是在写SQL的时候一定要考虑数据依赖、约束、业务逻辑。
有一个特别常见的案例。
一家公司使用两个电子表格进行库存管理。
导致SQL在写入时无法关注相关表的主外键,导致每次更新库存时都可能出现数据不一致的情况。
诊断此类问题可能非常繁琐。
所以现在在写 SQL 之前我总是问自己三个问题:数据从哪里来?它有什么关系?它们会触发哪些限制?

软件测试常用SQL语句总结,快来看

数据定义语言:
创建库:CREATE DATABASE test_db; (2 02 0年企业级测试常用)
创建表:CREATE TABLE users(id INT, name VARCHAR(5 0)); (测试规范要求 2 02 1 )
DML:
插入数据:INSERT INTO user VALUES(1 , 'Alice'); (9 9 %的测试用例中使用)
删除数据:DELETE FROM users WHERE id=1 ; (性能测试常用测试语句)
修改数据:UPDATE users SET name='Bob' WHERE id=1 ; (基本回归测试操作)
DQL:
排序查询:SELECT FROM users ORDER BY id DESC; (8 5 % 报告测试场景)
集合查询:SELECT COUNT() FROM users; (数据统计标准2 02 2 )
群组查询:SELECT name,COUNT() FROM users GROUP BY BY; (解决数据异常的关键)
页面查询:SELECT FROM users LIMIT 1 0 OFFSET 5 ; (应用于用户界面测试)
加入查询: SELECT u.name, d.department FROM users u JOIN Departments d ON u.dept_id=d.id; (9 5 %业务流程测试)
子查询:SELECT FROM users WHERE id IN (SELECT ID FROM order WHERE amount>1 000); (复杂场景测试)
DCL:
权限检查:将用户的选择授予“test_user”; (安全测试所需)
实用提醒:排序和分页语句是性能测试的瓶颈。
使用EXPLAIN来分析执行计划。

PHP数据库增删改查怎么实现_PHP使用SQL语句操作MySQL数据库CRUD教程

说了这么多,我们来谈谈在 MySQL 数据库上运行的 PHP。
我这样做已经快十年了,我非常了解这个过程。
让我们从连接数据库开始。

首先,需要使用mysqli_connect()函数创建连接。
这非常简单,只需要四个参数:主机、用户名、密码和数据库名称。
我记得以前做过一个项目,连接数据库很痛苦。
要么是我忘记了密码,要么是楼主搞错了。
因此,当连接失败时,脚本应立即终止并输出错误消息。
像这样:
php $主机='本地主机'; $用户名 = 'root'; $密码=''; $数据库='test_db'; $conn = mysqli_connect($主机, $用户名, $密码, $数据库);
if (!$conn) { die("连接失败:".mysqli_connect_error()); } echo "数据库连接成功!";
接下来,我们来谈谈数据录入。
使用INSERT INTO语句,直接插入数据确实很容易,但是风险非常高,尤其是在处理用户输入时。
因此,我一般建议使用准备好的语句来防止SQL注入。

例如直接输入数据:
php $sql = "INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com')"; if (mysqli_query ($conn, $sql)) { echo "新记录输入成功"; } 否则{ 回显“错误:”.mysqli_error($conn);
准备好的语句更安全:
php $stmt = $conn->prepare("插入用户(姓名、电子邮件)值(?, ?)"); $stmt->bind_param("ss", $name, $email); $name = "李思"; $电子邮件=“lisi@example.com”; $stmt->execute(); echo "输入预处理成功";
搜索数据也非常简单。
使用 SELECT 语句检索数据,然后使用 mysqli_fetch_assoc() 传递结果集。
例如:
php $sql = "从用户中选择 ID、姓名、电子邮件"; $结果 = mysqli_query ( $conn , $sql ); 如果(mysqli_num_rows($结果)> 0){ while ($row = mysqli_fetch_assoc($result)) { echo "ID:".$row["id"]." 姓名:".$row["name"]." 电子邮件:".$row["email"]."
"; } } 否则{ echo "还没有数据";
更新和删除数据逻辑相似,但操作不同。
更新和删除数据时请记住使用 WHERE 条件以避免出现故障。

最后,操作完成后,不要忘记关闭数据库连接:
php mysqli_close($conn);
至于安全性和优化,我有一些建议。
例如,封装函数提高代码的可重用性、使用PDO替代MySQLi、错误处理和事务处理也很重要。

例如,使用PDO来预处理查询:
php 尝试{ $pdo = new PDO("mysql:host=localhost;dbname=test_db", "root", ""); $stmt = $pdo->prepare("从用户中选择 id=?"); $stmt->执行([1 ]); $user = $stmt->fetch(PDO::FETCH_ASSOC); 打印_r($用户); } catch (PDOException $e) { echo "错误:".$e->getMessage();
这个技巧在现实中确实很实用。
简而言之,使用 PHP 运行 MySQL 数据库的关键是要小心、注意安全并遵循最佳实践。