小工具知识网

当前位置: 首页 > 行业知识 > SQL Server命令大全

行业知识

SQL Server命令大全

2026-11-12 06:10:52 来源:互联网转载

文章目录

      • 1. 数据库管理
      • 2. 表操作
      • 3. 查询数据
      • 4. 连接查询
      • 5. 存储过程与函数
      • 6. 视图
      • 7. 索引
      • 8. 其他常用命令
      • 9. 用户与权限管理
      • 10. 数据备份与恢复
      • 11. 系统函数与信息查询
      • 12. 其他高级特性
      • 13. 分区表
      • 14. 高级查询操作
      • 15. 复制与同步
      • 16. 异步处理与作业调度
      • 17. 查询执行计划
      • 18. 引用外部数据
      • 19. 动态SQL
      • 20. 自增序列与标识符
      • 21. 数据类型转换
      • 22. CASE表达式和IIF函数
      • 23. 数据库快照

        SQL Server 中包含了大量的命令用于数据库的管理、查询和操作。以下是一些主要命令分类及其简要示例:

        1. 数据库管理

        • 创建数据库
          CREATE DATABASE MyDatabase;
          • 删除数据库
            DROP DATABASE MyDatabase;
            • 选择/切换当前数据库
              USE MyDatabase;

              2. 表操作

              • 创建表
                CREATE TABLE Employees (    EmployeeID int PRIMARY KEY,    FirstName nvarchar(50),    LastName nvarchar(50),    HireDate datetime);
                • 插入数据
                  INSERT INTO Employees (EmployeeID, FirstName, LastName, HireDate)VALUES (1, 'John', 'Doe', '2023-01-01');
                  • 更新数据
                    UPDATE EmployeesSET FirstName = 'Jane'WHERE EmployeeID = 1;
                    • 删除数据
                      DELETE FROM EmployeesWHERE EmployeeID = 1;
                      • 修改表结构
                        ALTER TABLE EmployeesADD DepartmentID int FOREIGN KEY REFERENCES Departments(DepartmentID);

                        3. 查询数据

                        • 基本查询
                          SELECT * FROM Employees;
                          • 条件查询
                            SELECT * FROM Employees WHERE DepartmentID = 2;
                            • 排序查询
                              SELECT * FROM Employees ORDER BY HireDate DESC;
                              • 聚合函数查询
                                SELECT COUNT(*) FROM Employees;
                                • 分组查询
                                  SELECT DepartmentID, COUNT(*) AS CountOfEmployeesFROM EmployeesGROUP BY DepartmentID;

                                  4. 连接查询

                                  • 内连接
                                    SELECT E.FirstName, D.DepartmentName FROM Employees EINNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;

                                    5. 存储过程与函数

                                    • 创建存储过程
                                      CREATE PROCEDURE GetEmployeesByDepartment @deptId INTASBEGIN    SELECT * FROM Employees WHERE DepartmentID = @deptId;END
                                      • 调用存储过程
                                        EXEC GetEmployeesByDepartment 2;
                                        • 创建用户定义函数
                                          CREATE FUNCTION dbo.GetTotalEmployees(@deptId INT) RETURNS INTASBEGIN    RETURN (SELECT COUNT(*) FROM Employees WHERE DepartmentID = @deptId);END
                                          • 使用函数
                                            SELECT dbo.GetTotalEmployees(2) AS TotalEmpInDept2;

                                            6. 视图

                                            • 创建视图
                                              CREATE VIEW EmployeeNames ASSELECT FirstName, LastName FROM Employees;
                                              • 查询视图
                                                SELECT * FROM EmployeeNames;

                                                7. 索引

                                                • 创建索引
                                                  CREATE INDEX IX_Employees_DepartmentID ON Employees (DepartmentID);
                                                  • 删除索引
                                                    DROP INDEX IX_Employees_DepartmentID ON Employees;

                                                    8. 其他常用命令

                                                    • 事务控制
                                                      BEGIN TRANSACTION;-- 执行一系列操作...COMMIT TRANSACTION;
                                                      • 备份还原
                                                        BACKUP DATABASE MyDatabase TO DISK = 'C:\backup\MyDatabase.bak';RESTORE DATABASE MyDatabase FROM DISK = 'C:\backup\MyDatabase.bak';

                                                        9. 用户与权限管理

                                                        • 创建登录账户
                                                          CREATE LOGIN NewUser WITH PASSWORD = 'StrongPassword!';
                                                          • 创建数据库用户并映射到登录名
                                                            CREATE USER UserForDB FOR LOGIN NewUser;ALTER ROLE db_datareader ADD MEMBER UserForDB; -- 给予读权限ALTER ROLE db_datawriter ADD MEMBER UserForDB; -- 给予写权限
                                                            • 撤销用户对数据库的访问
                                                              DROP USER UserForDB;
                                                              • 授予、拒绝或撤销权限
                                                                GRANT SELECT ON Employees TO UserForDB;DENY UPDATE ON Employees TO UserForDB;REVOKE DELETE ON Employees FROM UserForDB;

                                                                10. 数据备份与恢复

                                                                • 完整数据库备份
                                                                  BACKUP DATABASE MyDatabaseTO DISK = 'C:\Backup\MyDatabase.bak'WITH FORMAT, MEDIANAME = 'MyDatabase_Full', NAME = 'Full Backup';
                                                                  • 差异备份
                                                                    BACKUP DATABASE MyDatabaseTO DISK = 'C:\Backup\MyDatabase_diff.bak'WITH DIFFERENTIAL, FORMAT, MEDIANAME = 'MyDatabase_Diff', NAME = 'Differential Backup';
                                                                    • 事务日志备份
                                                                      BACKUP LOG MyDatabaseTO DISK = 'C:\Backup\MyDatabase_log.trn'WITH NOFORMAT, NOINIT, NAME = N'MyDatabase_LogBackup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
                                                                      • 还原数据库
                                                                        RESTORE DATABASE MyDatabaseFROM DISK = 'C:\Backup\MyDatabase.bak'WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5;

                                                                        11. 系统函数与信息查询

                                                                        • 查询当前数据库版本
                                                                          SELECT @@VERSION;
                                                                          • 查询表结构信息
                                                                            sp_help 'Employees';
                                                                            • 获取当前时间
                                                                              SELECT GETDATE() AS CurrentDateTime;

                                                                              12. 其他高级特性

                                                                              • 窗口函数
                                                                                SELECT     EmployeeID,     FirstName,     Salary,    AVG(Salary) OVER (PARTITION BY DepartmentID) AS AvgSalaryInDeptFROM Employees;
                                                                                • CTE(公用表表达式)
                                                                                  WITH EmpSalaries AS (    SELECT EmployeeID, Salary    FROM Employees)SELECT * FROM EmpSalaries WHERE Salary > (SELECT AVG(Salary) FROM EmpSalaries);

                                                                                  13. 分区表

                                                                                  • 创建分区函数
                                                                                    CREATE PARTITION FUNCTION pf_EmployeesRange (int)AS RANGE RIGHT FOR VALUES (2000, 2005, 2010, 2015);
                                                                                    • 创建分区方案
                                                                                      CREATE PARTITION SCHEME ps_Employees AS PARTITION pf_EmployeesRange TO (    [PrimaryFileGroup],     [SecondaryFileGroup1],    [SecondaryFileGroup2],    [SecondaryFileGroup3]);
                                                                                      • 创建分区表
                                                                                        CREATE TABLE PartitionedEmployees (    EmployeeID int PRIMARY KEY,    HireDate int NOT NULL) ON ps_Employees(HireDate);

                                                                                        14. 高级查询操作

                                                                                        • 联合查询(UNION、UNION ALL)
                                                                                          SELECT FirstName, LastName FROM Employees WHERE DepartmentID = 1UNION ALLSELECT FirstName, LastName FROM Employees WHERE DepartmentID = 2;
                                                                                          • INTERSECT和EXCEPT操作
                                                                                            SELECT EmployeeID FROM Employees WHERE DepartmentID = 1INTERSECTSELECT EmployeeID FROM Employees WHERE DepartmentID = 2;SELECT EmployeeID FROM Employees WHERE DepartmentID = 1EXCEPTSELECT EmployeeID FROM Employees WHERE DepartmentID = 2;

                                                                                            15. 复制与同步

                                                                                            • 使用SQL Server Replication进行数据复制

                                                                                              这涉及到一系列复杂的配置步骤,包括发布设置、订阅设置、代理设置等。

                                                                                              16. 异步处理与作业调度

                                                                                              • 创建SQL Server Agent作业
                                                                                                USE msdb;GOEXEC sp_add_job @job_name=N'MyBackupJob',                 @enabled=1,                 @description='Daily backup job';GO-- 添加作业步骤EXEC sp_add_jobstep @job_name=N'MyBackupJob',                    @step_name=N'Backup Database',                   @subsystem=N'TSQL',                    @command=N'BACKUP DATABASE MyDatabase TO DISK = ''C:\Backup\MyDatabase.bak'';',                   @retry_attempts=5,                    @retry_interval=5;GO-- 启用作业调度EXEC dbo.sp_add_schedule    @schedule_name = N'DailyAtMidnight',    @freq_type = 4, -- 每日    @freq_interval = 1, -- 每天运行一次    @active_start_time = 000000; -- 在午夜开始-- 将作业与调度关联EXEC sp_attach_schedule    @job_name = N'MyBackupJob',     @schedule_name = N'DailyAtMidnight';GO

                                                                                                17. 查询执行计划

                                                                                                • 查看查询执行计划
                                                                                                  -- 在查询语句前添加EXPLAIN 或者 SET SHOWPLAN_ALL ONSET SHOWPLAN_ALL ON;SELECT * FROM Employees WHERE DepartmentID = 1;SET SHOWPLAN_ALL OFF;-- 或使用图形化方式查看-- 在SQL Server Management Studio中,运行查询后右键选择"包括实际执行计划"SELECT * FROM Employees WHERE DepartmentID = 1;

                                                                                                  18. 引用外部数据

                                                                                                  • OPENROWSET函数读取文件
                                                                                                    SELECT *FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=C:\Data;HDR=YES;FMT=Delimited', 'SELECT * FROM [Employees.txt]');
                                                                                                    • 链接服务器
                                                                                                      -- 创建链接服务器EXEC sp_addlinkedserver @server = N'MyLinkedServer', @srvproduct=N'OtherDB', @provider=N'SQLNCLI', @datasrc=N'ServerName\InstanceName';-- 使用链接服务器查询数据SELECT * FROM MyLinkedServer.RemoteDB.dbo.Employees;

                                                                                                      19. 动态SQL

                                                                                                      • 构建并执行动态SQL语句
                                                                                                        DECLARE @DepartmentID INT = 1;DECLARE @SQL NVARCHAR(MAX) = N'SELECT * FROM Employees WHERE DepartmentID = ' + CAST(@DepartmentID AS NVARCHAR(10));EXEC sp_executesql @SQL;

                                                                                                        20. 自增序列与标识符

                                                                                                        • 创建带有自增列的表
                                                                                                          CREATE TABLE Orders (    OrderID INT IDENTITY(1,1),    CustomerID INT,    OrderDate DATE,    PRIMARY KEY (OrderID));

                                                                                                          21. 数据类型转换

                                                                                                          • 显式转换
                                                                                                            SELECT CAST('1234' AS INT), CONVERT(INT, '1234');

                                                                                                            22. CASE表达式和IIF函数

                                                                                                            • CASE表达式
                                                                                                              SELECT EmployeeID, FirstName, LastName,    CASE WHEN Salary > 50000 THEN 'High'         WHEN Salary > 30000 THEN 'Medium'         ELSE 'Low'    END AS SalaryLevelFROM Employees;
                                                                                                              • IIF函数(SQL Server 2012及以上版本)
                                                                                                                SELECT EmployeeID, FirstName, LastName,    IIF(Salary > 50000, 'High', IIF(Salary > 30000, 'Medium', 'Low')) AS SalaryLevelFROM Employees;

                                                                                                                23. 数据库快照

                                                                                                                • 创建数据库快照
                                                                                                                  CREATE DATABASE MyDatabase_snapshot ON     (NAME = MyDatabase, FILENAME = 'C:\Snapshots\MyDatabase_snapshot.ss')AS SNAPSHOT OF MyDatabase;
                                                                                                                  • 从快照恢复数据
                                                                                                                    RESTORE DATABASE MyDatabase FROM DATABASE_SNAPSHOT = 'MyDatabase_snapshot';

                                                                                                                    python推荐学习汇总连接:

                                                                                                                    50个开发必备的Python经典脚本(1-10)

                                                                                                                    50个开发必备的Python经典脚本(11-20)

                                                                                                                    50个开发必备的Python经典脚本(21-30)

                                                                                                                    50个开发必备的Python经典脚本(31-40)

                                                                                                                    50个开发必备的Python经典脚本(41-50)

                                                                                                                    ————————————————

                                                                                                                    ​最后我们放松一下眼睛

上一篇:Android使用WebView打开外部网页链接

下一篇:荒野行动流星全面解析,性能、特点一网打尽!