SQL Server下令大全

打印 上一主题 下一主题

主题 986|帖子 986|积分 2958

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



  • 创建数据库
  1. CREATE DATABASE MyDatabase;
复制代码


  • 删除数据库
  1. DROP DATABASE MyDatabase;
复制代码


  • 选择/切换当前数据库
  1. USE MyDatabase;
复制代码
2. 表操作



  • 创建表
  1. CREATE TABLE Employees (
  2.     EmployeeID int PRIMARY KEY,
  3.     FirstName nvarchar(50),
  4.     LastName nvarchar(50),
  5.     HireDate datetime
  6. );
复制代码


  • 插入数据
  1. INSERT INTO Employees (EmployeeID, FirstName, LastName, HireDate)
  2. VALUES (1, 'John', 'Doe', '2023-01-01');
复制代码


  • 更新数据
  1. UPDATE Employees
  2. SET FirstName = 'Jane'
  3. WHERE EmployeeID = 1;
复制代码


  • 删除数据
  1. DELETE FROM Employees
  2. WHERE EmployeeID = 1;
复制代码


  • 修改表布局
  1. ALTER TABLE Employees
  2. ADD DepartmentID int FOREIGN KEY REFERENCES Departments(DepartmentID);
复制代码
3. 查询数据



  • 基本查询
  1. SELECT * FROM Employees;
复制代码


  • 条件查询
  1. SELECT * FROM Employees WHERE DepartmentID = 2;
复制代码


  • 排序查询
  1. SELECT * FROM Employees ORDER BY HireDate DESC;
复制代码


  • 聚合函数查询
  1. SELECT COUNT(*) FROM Employees;
复制代码


  • 分组查询
  1. SELECT DepartmentID, COUNT(*) AS CountOfEmployees
  2. FROM Employees
  3. GROUP BY DepartmentID;
复制代码
4. 连接查询



  • 内连接
  1. SELECT E.FirstName, D.DepartmentName
  2. FROM Employees E
  3. INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;
复制代码
5. 存储过程与函数



  • 创建存储过程
  1. CREATE PROCEDURE GetEmployeesByDepartment @deptId INT
  2. AS
  3. BEGIN
  4.     SELECT * FROM Employees WHERE DepartmentID = @deptId;
  5. END
复制代码


  • 调用存储过程
  1. EXEC GetEmployeesByDepartment 2;
复制代码


  • 创建用户界说函数
  1. CREATE FUNCTION dbo.GetTotalEmployees(@deptId INT) RETURNS INT
  2. AS
  3. BEGIN
  4.     RETURN (SELECT COUNT(*) FROM Employees WHERE DepartmentID = @deptId);
  5. END
复制代码


  • 使用函数
  1. SELECT dbo.GetTotalEmployees(2) AS TotalEmpInDept2;
复制代码
6. 视图



  • 创建视图
  1. CREATE VIEW EmployeeNames AS
  2. SELECT FirstName, LastName FROM Employees;
复制代码


  • 查询视图
  1. SELECT * FROM EmployeeNames;
复制代码
7. 索引



  • 创建索引
  1. CREATE INDEX IX_Employees_DepartmentID ON Employees (DepartmentID);
复制代码


  • 删除索引
  1. DROP INDEX IX_Employees_DepartmentID ON Employees;
复制代码
8. 其他常用下令



  • 事件控制
  1. BEGIN TRANSACTION;
  2. -- 执行一系列操作...
  3. COMMIT TRANSACTION;
复制代码


  • 备份还原
  1. BACKUP DATABASE MyDatabase TO DISK = 'C:\backup\MyDatabase.bak';
  2. RESTORE DATABASE MyDatabase FROM DISK = 'C:\backup\MyDatabase.bak';
复制代码
9. 用户与权限管理



  • 创建登录账户
  1. CREATE LOGIN NewUser WITH PASSWORD = 'StrongPassword!';
复制代码


  • 创建数据库用户并映射到登录名
  1. CREATE USER UserForDB FOR LOGIN NewUser;
  2. ALTER ROLE db_datareader ADD MEMBER UserForDB; -- 给予读权限
  3. ALTER ROLE db_datawriter ADD MEMBER UserForDB; -- 给予写权限
复制代码


  • 撤销用户对数据库的访问
  1. DROP USER UserForDB;
复制代码


  • 授予、拒绝或撤销权限
  1. GRANT SELECT ON Employees TO UserForDB;
  2. DENY UPDATE ON Employees TO UserForDB;
  3. REVOKE DELETE ON Employees FROM UserForDB;
复制代码
10. 数据备份与规复



  • 完整数据库备份
  1. BACKUP DATABASE MyDatabase
  2. TO DISK = 'C:\Backup\MyDatabase.bak'
  3. WITH FORMAT, MEDIANAME = 'MyDatabase_Full', NAME = 'Full Backup';
复制代码


  • 差别备份
  1. BACKUP DATABASE MyDatabase
  2. TO DISK = 'C:\Backup\MyDatabase_diff.bak'
  3. WITH DIFFERENTIAL, FORMAT, MEDIANAME = 'MyDatabase_Diff', NAME = 'Differential Backup';
复制代码


  • 事件日志备份
  1. BACKUP LOG MyDatabase
  2. TO DISK = 'C:\Backup\MyDatabase_log.trn'
  3. WITH NOFORMAT, NOINIT, NAME = N'MyDatabase_LogBackup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
复制代码


  • 还原数据库
  1. RESTORE DATABASE MyDatabase
  2. FROM DISK = 'C:\Backup\MyDatabase.bak'
  3. WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5;
复制代码
11. 体系函数与信息查询



  • 查询当前数据库版本
  1. SELECT @@VERSION;
复制代码


  • 查询表布局信息
  1. sp_help 'Employees';
复制代码


  • 获取当前时间
  1. SELECT GETDATE() AS CurrentDateTime;
复制代码
12. 其他高级特性



  • 窗口函数
  1. SELECT
  2.     EmployeeID,
  3.     FirstName,
  4.     Salary,
  5.     AVG(Salary) OVER (PARTITION BY DepartmentID) AS AvgSalaryInDept
  6. FROM Employees;
复制代码


  • CTE(公用表表达式)
  1. WITH EmpSalaries AS (
  2.     SELECT EmployeeID, Salary
  3.     FROM Employees
  4. )
  5. SELECT * FROM EmpSalaries WHERE Salary > (SELECT AVG(Salary) FROM EmpSalaries);
复制代码
13. 分区表



  • 创建分区函数
  1. CREATE PARTITION FUNCTION pf_EmployeesRange (int)
  2. AS RANGE RIGHT FOR VALUES
  3. (2000, 2005, 2010, 2015);
复制代码


  • 创建分区方案
  1. CREATE PARTITION SCHEME ps_Employees
  2. AS PARTITION pf_EmployeesRange
  3. TO (
  4.     [PrimaryFileGroup],
  5.     [SecondaryFileGroup1],
  6.     [SecondaryFileGroup2],
  7.     [SecondaryFileGroup3]
  8. );
复制代码


  • 创建分区表
  1. CREATE TABLE PartitionedEmployees (
  2.     EmployeeID int PRIMARY KEY,
  3.     HireDate int NOT NULL
  4. ) ON ps_Employees(HireDate);
复制代码
14. 高级查询操作



  • 团结查询(UNION、UNION ALL)
  1. SELECT FirstName, LastName FROM Employees WHERE DepartmentID = 1
  2. UNION ALL
  3. SELECT FirstName, LastName FROM Employees WHERE DepartmentID = 2;
复制代码


  • INTERSECT和EXCEPT操作
  1. SELECT EmployeeID FROM Employees WHERE DepartmentID = 1
  2. INTERSECT
  3. SELECT EmployeeID FROM Employees WHERE DepartmentID = 2;
  4. SELECT EmployeeID FROM Employees WHERE DepartmentID = 1
  5. EXCEPT
  6. SELECT EmployeeID FROM Employees WHERE DepartmentID = 2;
复制代码
15. 复制与同步



  • 使用SQL Server Replication举行数据复制
    这涉及到一系列复杂的设置步骤,包括发布设置、订阅设置、代理设置等。
16. 异步处理与作业调治



  • 创建SQL Server Agent作业
  1. USE msdb;
  2. GO
  3. EXEC sp_add_job @job_name=N'MyBackupJob',
  4.                 @enabled=1,
  5.                 @description='Daily backup job';
  6. GO
  7. -- 添加作业步骤
  8. EXEC sp_add_jobstep @job_name=N'MyBackupJob',
  9.                    @step_name=N'Backup Database',
  10.                    @subsystem=N'TSQL',
  11.                    @command=N'BACKUP DATABASE MyDatabase TO DISK = ''C:\Backup\MyDatabase.bak'';',
  12.                    @retry_attempts=5,
  13.                    @retry_interval=5;
  14. GO
  15. -- 启用作业调度
  16. EXEC dbo.sp_add_schedule
  17.     @schedule_name = N'DailyAtMidnight',
  18.     @freq_type = 4, -- 每日
  19.     @freq_interval = 1, -- 每天运行一次
  20.     @active_start_time = 000000; -- 在午夜开始
  21. -- 将作业与调度关联
  22. EXEC sp_attach_schedule
  23.     @job_name = N'MyBackupJob',
  24.     @schedule_name = N'DailyAtMidnight';
  25. GO
复制代码
17. 查询实行筹划



  • 检察查询实行筹划
  1. -- 在查询语句前添加EXPLAIN 或者 SET SHOWPLAN_ALL ON
  2. SET SHOWPLAN_ALL ON;
  3. SELECT * FROM Employees WHERE DepartmentID = 1;
  4. SET SHOWPLAN_ALL OFF;
  5. -- 或使用图形化方式查看
  6. -- 在SQL Server Management Studio中,运行查询后右键选择"包括实际执行计划"
  7. SELECT * FROM Employees WHERE DepartmentID = 1;
复制代码
18. 引用外部数据



  • OPENROWSET函数读取文件
  1. SELECT *
  2. FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Text;Database=C:\Data;HDR=YES;FMT=Delimited', 'SELECT * FROM [Employees.txt]');
复制代码


  • 链接服务器
  1. -- 创建链接服务器
  2. EXEC sp_addlinkedserver @server = N'MyLinkedServer', @srvproduct=N'OtherDB', @provider=N'SQLNCLI', @datasrc=N'ServerName\InstanceName';
  3. -- 使用链接服务器查询数据
  4. SELECT *
  5. FROM MyLinkedServer.RemoteDB.dbo.Employees;
复制代码
19. 动态SQL



  • 构建并实行动态SQL语句
  1. DECLARE @DepartmentID INT = 1;
  2. DECLARE @SQL NVARCHAR(MAX) = N'SELECT * FROM Employees WHERE DepartmentID = ' + CAST(@DepartmentID AS NVARCHAR(10));
  3. EXEC sp_executesql @SQL;
复制代码
20. 自增序列与标识符



  • 创建带有自增列的表
  1. CREATE TABLE Orders (
  2.     OrderID INT IDENTITY(1,1),
  3.     CustomerID INT,
  4.     OrderDate DATE,
  5.     PRIMARY KEY (OrderID)
  6. );
复制代码
21. 数据类型转换



  • 显式转换
  1. SELECT CAST('1234' AS INT), CONVERT(INT, '1234');
复制代码
22. CASE表达式和IIF函数



  • CASE表达式
  1. SELECT EmployeeID, FirstName, LastName,
  2.     CASE WHEN Salary > 50000 THEN 'High'
  3.          WHEN Salary > 30000 THEN 'Medium'
  4.          ELSE 'Low'
  5.     END AS SalaryLevel
  6. FROM Employees;
复制代码


  • IIF函数(SQL Server 2012及以上版本)
  1. SELECT EmployeeID, FirstName, LastName,
  2.     IIF(Salary > 50000, 'High', IIF(Salary > 30000, 'Medium', 'Low')) AS SalaryLevel
  3. FROM Employees;
复制代码
23. 数据库快照



  • 创建数据库快照
  1. CREATE DATABASE MyDatabase_snapshot ON
  2.     (NAME = MyDatabase, FILENAME = 'C:\Snapshots\MyDatabase_snapshot.ss')
  3. AS SNAPSHOT OF MyDatabase;
复制代码


  • 从快照规复数据
  1. 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)
————————————————
​末了我们放松一下眼睛


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表