DQL DML DDL DCL
在 SQL Server 以及其他数据库管理系统中,SQL 语句可以根据其功能被分为几个主要类别,通常称为 DQL、DML、DDL 和 DCL。这些类别代表了 SQL 语言的不同方面,每个类别都有其特定的用途和命令。下面是每个类别的简要说明:
1. DQL (Data Query Language)
DQL 用于查询数据库中的数据。它允许用户检索数据,但不修改数据库中的数据。最常用的 DQL 语句是 SELECT
,它用于从数据库表中检索数据。
示例:
SELECT * FROM Employees;
2. DML (Data Manipulation Language)
DML 用于对数据库中的数据进行增加、修改和删除操作。DML 语句包括 INSERT
、UPDATE
和 DELETE
。
-
INSERT:用于向表中添加新数据。
INSERT INTO Employees (ID, Name, Department) VALUES (101, 'John Doe', 'IT');
-
UPDATE:用于修改表中已存在的数据。
UPDATE Employees SET Department = 'HR' WHERE ID = 101;
-
DELETE:用于从表中删除数据。
DELETE FROM Employees WHERE ID = 101;
3. DDL (Data Definition Language)
DDL 用于定义和管理数据库的结构,包括创建、修改和删除数据库对象(如表、视图、索引等)。DDL 语句包括 CREATE
、ALTER
、DROP
等。
-
CREATE:用于创建新的数据库对象。
CREATE TABLE Employees (ID INT PRIMARY KEY, Name VARCHAR(255), Department VARCHAR(255));
-
ALTER:用于修改现有数据库对象的结构。
ALTER TABLE Employees ADD Email VARCHAR(255);
-
DROP:用于删除数据库对象。
DROP TABLE Employees;
4. DCL (Data Control Language)
DCL 用于定义数据库的访问权限和安全级别。它包括 GRANT
、REVOKE
和 DENY
语句,用于控制用户对数据库对象的访问。
-
GRANT:授予用户或角色特定权限。
GRANT SELECT, INSERT ON Employees TO HR_User;
-
REVOKE:撤销之前授予的权限。
REVOKE SELECT ON Employees FROM HR_User;
-
DENY:拒绝用户或角色的特定权限,即使这些权限通过其他角色或权限间接授予。
DENY DELETE ON Employees TO HR_User;
备份数据库到指定的位置
在 SQL Server 中,你可以使用 BACKUP DATABASE
语句将数据库备份到指定的位置。这通常用于创建数据库的全备份、差异备份或事务日志备份。
基本语法
BACKUP DATABASE [数据库名]
TO DISK = '文件路径'
WITH
-- 选项
示例
假设你想要备份名为 MyDatabase
的数据库到 D:\Backups\
目录下,并且你想要将备份文件命名为 MyDatabaseBackup.bak
。
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backups\MyDatabaseBackup.bak'
WITH FORMAT, -- 格式化备份介质,如果介质已存在,则删除它
MEDIANAME = 'MyDatabaseMedia', -- 指定媒体名称,用于备份集的名称
NAME = 'MyDatabase-Full Backup'; -- 指定备份操作的名称
选项说明
-
FORMAT
:如果指定了FORMAT
选项,并且备份设备已存在,则 SQL Server 将删除该设备上的所有现有备份,然后开始新的备份。 -
MEDIANAME
:为备份集指定一个名称。这在管理多个备份时非常有用。 -
NAME
:为备份操作指定一个描述性名称。
完整备份
以下是一个创建完整备份的示例:
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backups\MyDatabaseFullBackup.bak'
WITH INIT; -- INIT 选项用于确保备份集是唯一的,如果备份介质已存在,则会报错
差异备份
差异备份只包含自上次完整备份以来已更改的数据。
BACKUP DATABASE MyDatabase
TO DISK = 'D:\Backups\MyDatabaseDiffBackup.bak'
WITH DIFFERENTIAL; -- 指定这是一个差异备份
事务日志备份
事务日志备份用于复制自上次备份(无论是完整备份还是差异备份)以来对数据库所做的所有事务日志记录。
BACKUP LOG MyDatabase
TO DISK = 'D:\Backups\MyDatabaseLogBackup.trn'
WITH INIT;
注意事项
-
确保你有足够的权限来访问指定的备份路径。
-
确保备份路径是可靠的,并且有足够的空间来存储备份文件。
-
定期测试备份文件,以确保它们可以成功还原。
-
考虑实施定期备份策略,包括完整备份、差异备份和事务日志备份的组合,以保护数据库免受数据丢失。