作为一种事务性编程语言,SQL 被设计为全部执行或全部不执行其工作。同时,诸如 C# 和 Java 之类的过程编程语言本质上通常是循环迭代的。这样,它们倾向于循环遍历相同的代码,直到堆栈减少并完全处理为止。游标(Cursor)是 SQL 事务处理方法的显着例外。像 WHILE 循环一样,游标允许程序员通过遍历它们来分别处理 SELECT 结果集的每一行。尽管许多 SQL 纯粹主义者出于轻蔑或恐惧而避开了游标,但他们在数据库开发中占有一席之地,值得我们学习。为此,今天的文章将介绍何时以及如何在存储过程中使用游标。
很多时候,我们可能需要将数据从一个现有的表复制到一个新的表中,例如,备份数据,或将一个环境中的数据复制到另一个环境中,就像出于测试目的所做的那样。在 SQL 中,通常会使用 CREATE TABLE 和 SELECT 语句,如下所示:
CREATE TABLE new_table; SELECT SELECT col, col2, col3 INTO new_table FROM existing_table;
在第一个语句中,数据库使用 CREATE TABLE 语句中指定的名创建一个新表。新表的结构由 SELECT 语句的结果集定义。然后,数据库将 SELECT 语句的结果填充到新表中。
尽管上述的过程可以完美地复制表,但是有一种更简单的方法,我们可以使用 CREATE TABLE 语句的变体将表复制到新表中!今天我们将在这里学习如何使用它。
在认识数据库事务文章中,我们探究了事务是如何通过保证使用事务执行的所有操作同时成功或同时失败来防止数据丢失和不一致。在今天的后续文章中,我们将学习如何在存储过程中使用事务,以确保所涉及的所有表保持一致状态。
许多组织通过在其应用程序中实施输入验证来致力保护其数据。事实上,大多数网络攻击直接针对数据库服务器本身,而应用程序安全性根本没有发挥作用!作为一个数据库管理员(DBA)或数据库开发人员,你具有强大的能力来降低网络攻击的风险和/或由此造成的损害,包括最常见的网络攻击形式:SQL 注入。在今天的文章中,我们将探索一些可以大大减少遭受 SQL 注入攻击的做法。
- 2024 (1)
- 2023 (1)
- 2022 (1)
- 2021 (1)
- 2020 (1)
- 2019 (1)
- 2018 (1)
- 2017 (1)