无经验小白快速上升SQL和数据库[进阶版]

如果说对sql的基础还不够扎实的,可以看我上一篇内容:

http://t.csdnimg.cn/i6SALicon-default.png?t=N7T8http://t.csdnimg.cn/i6SAL

除了常见的增删改查SQL语句,其实我们还有权限、视图、触发器等内容,下面我会详细讲解一下。

目录

数据控制语言(DCL)

授权(GRANT)

撤销权限(REVOKE)

高级SQL特性

存储过程(Stored Procedures)

触发器(Triggers)

视图(Views)


数据控制语言(DCL)

授权(GRANT)

授权就像是给某人一把房子的钥匙,允许他们访问和操作房子。在数据库中,GRANT语句用于授予用户或角色对数据库对象(如表、视图等)的特定权限。基本的授权语法如下

GRANT SELECT, INSERT ON 房子 TO 用户名;
  • SELECT, INSERT:即授予的权限类型。
  • 房子:即被授权的表名。
  • 用户名:即被授予权限的用户。
撤销权限(REVOKE)

撤销权限就像是收回房子的钥匙。REVOKE语句用于撤销之前授予的权限。基本的撤销权限语法如下:


REVOKE SELECT, INSERT ON 房子 FROM 用户名;

  • SELECT, INSERT:即要撤销的权限类型。

通过使用DDL和DCL,我们可以有效地管理和控制数据库的结构和访问权限,确保数据的安全和完整性。这些操作通常由数据库管理员执行,需要具备相应的权限和谨慎的态度。

高级SQL特性

存储过程(Stored Procedures)

为什么要用存储过程: 存储过程提供了一种方法来封装复杂的业务逻辑,使得代码可以重用,并且可以通过参数传递来动态执行不同的操作。它们还提高了性能,因为存储过程是预编译的,减少了数据库服务器的解析和编译时间。

什么时候用存储过程

  • 当需要执行一系列预定义的数据库操作时。
  • 当需要封装复杂的业务规则,避免在应用程序中重复编写SQL代码时。
  • 当需要提高数据库操作的性能时。

怎么用存储过程

  1. 创建存储过程:定义存储过程的名称、参数以及要执行的SQL语句。
  2. 调用存储过程:通过指定存储过程的名称和必要的参数来执行它。
  3. 管理存储过程:使用DDL语句来创建、修改或删除存储过程。

示例

 

-- 创建存储过程
CREATE PROCEDURE UpdateCustomer
    @CustomerID INT,
    @ContactName NVARCHAR(50),
    @Address NVARCHAR(100)
AS
BEGIN
    UPDATE Customers
    SET ContactName = @ContactName, Address = @Address
    WHERE CustomerID = @CustomerID;
END

-- 调用存储过程
EXEC UpdateCustomer @CustomerID = 1, @ContactName = 'John Doe', @Address = '123 Main St';
触发器(Triggers)

为什么要用触发器: 触发器用于自动响应数据表上的INSERT、UPDATE或DELETE操作。它们可以强制执行复杂的业务规则,自动更新相关数据,或维护数据完整性。

什么时候用触发器

  • 当需要在数据变更时自动执行某些操作时。
  • 当需要维护数据的一致性和完整性,而不仅仅是通过简单的CHECK约束能够实现时。
  • 当需要在多个表之间同步数据时。

怎么用触发器

  1. 创建触发器:定义触发器的名称、触发条件(如在INSERT、UPDATE或DELETE操作后)以及要执行的SQL语句。
  2. 激活触发器:当相应的数据库操作发生时,触发器会自动执行。
  3. 管理触发器:使用DDL语句来创建、修改或删除触发器。

示例

-- 创建触发器
CREATE TRIGGER AuditLog ON Customers
AFTER UPDATE
AS
BEGIN
    INSERT INTO AuditLog(CustomerID, OldContactName, NewContactName, UpdateTime)
    SELECT i.CustomerID, d.ContactName, i.ContactName, GETDATE()
    FROM deleted d
    JOIN inserted i ON d.CustomerID = i.CustomerID;
END

-- 触发器自动执行
UPDATE Customers SET ContactName = 'Jane Smith' WHERE CustomerID = 1;

视图(Views)

为什么要用视图: 视图提供了一种虚拟表的概念,它们不存储数据,而是在查询时动态生成结果。视图可以简化复杂的查询,隐藏数据的复杂性,同时提供数据的逻辑表示。

什么时候用视图

  • 当需要简化复杂的SQL查询,使它们更易于理解和维护时。
  • 当需要为不同的用户或应用程序提供定制化的数据视图时。
  • 当需要限制用户对某些数据的访问,只展示他们需要的数据时。

怎么用视图

  1. 创建视图:定义视图的名称和查询语句,该查询返回视图的数据。
  2. 查询视图:像查询普通表一样查询视图。
  3. 管理视图:使用DDL语句来创建、修改或删除视图。

示例

-- 创建视图
CREATE VIEW SalesSummary AS
SELECT ProductName, SUM(Quantity) AS TotalSold
FROM Sales
GROUP BY ProductName

-- 查询视图
SELECT * FROM SalesSummary;

-- 管理视图
ALTER VIEW SalesSummary -- 修改视图定义
DROP VIEW SalesSummary -- 删除视图

通过上述的解释和示例,我们可以看到存储过程、触发器和视图在数据库设计和应用开发中扮演的重要角色,它们提供了强大的工具来优化性能、维护数据完整性和简化数据库操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值