SQL Server 中包含了大量的下令用于数据库的管理、查询和操作。以下是一些主要下令分类及其扼要示例:
1. 数据库管理
- CREATE DATABASE MyDatabase;
复制代码
- DROP DATABASE 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 Employees
- SET FirstName = 'Jane'
- WHERE EmployeeID = 1;
复制代码
- DELETE FROM Employees
- WHERE EmployeeID = 1;
复制代码
- ALTER TABLE Employees
- ADD DepartmentID int FOREIGN KEY REFERENCES Departments(DepartmentID);
复制代码 3. 查询数据
- SELECT * FROM Employees WHERE DepartmentID = 2;
复制代码
- SELECT * FROM Employees ORDER BY HireDate DESC;
复制代码
- SELECT COUNT(*) FROM Employees;
复制代码
- SELECT DepartmentID, COUNT(*) AS CountOfEmployees
- FROM Employees
- GROUP BY DepartmentID;
复制代码 4. 连接查询
- SELECT E.FirstName, D.DepartmentName
- FROM Employees E
- INNER JOIN Departments D ON E.DepartmentID = D.DepartmentID;
复制代码 5. 存储过程与函数
- CREATE PROCEDURE GetEmployeesByDepartment @deptId INT
- AS
- BEGIN
- SELECT * FROM Employees WHERE DepartmentID = @deptId;
- END
复制代码
- EXEC GetEmployeesByDepartment 2;
复制代码
- CREATE FUNCTION dbo.GetTotalEmployees(@deptId INT) RETURNS INT
- AS
- BEGIN
- RETURN (SELECT COUNT(*) FROM Employees WHERE DepartmentID = @deptId);
- END
复制代码
- SELECT dbo.GetTotalEmployees(2) AS TotalEmpInDept2;
复制代码 6. 视图
- CREATE VIEW EmployeeNames AS
- SELECT 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; -- 给予写权限
复制代码
- GRANT SELECT ON Employees TO UserForDB;
- DENY UPDATE ON Employees TO UserForDB;
- REVOKE DELETE ON Employees FROM UserForDB;
复制代码 10. 数据备份与规复
- BACKUP DATABASE MyDatabase
- TO DISK = 'C:\Backup\MyDatabase.bak'
- WITH FORMAT, MEDIANAME = 'MyDatabase_Full', NAME = 'Full Backup';
复制代码
- BACKUP DATABASE MyDatabase
- TO DISK = 'C:\Backup\MyDatabase_diff.bak'
- WITH DIFFERENTIAL, FORMAT, MEDIANAME = 'MyDatabase_Diff', NAME = 'Differential Backup';
复制代码
- BACKUP LOG MyDatabase
- TO DISK = 'C:\Backup\MyDatabase_log.trn'
- WITH NOFORMAT, NOINIT, NAME = N'MyDatabase_LogBackup', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
复制代码
- RESTORE DATABASE MyDatabase
- FROM DISK = 'C:\Backup\MyDatabase.bak'
- WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5;
复制代码 11. 体系函数与信息查询
- SELECT GETDATE() AS CurrentDateTime;
复制代码 12. 其他高级特性
- SELECT
- EmployeeID,
- FirstName,
- Salary,
- AVG(Salary) OVER (PARTITION BY DepartmentID) AS AvgSalaryInDept
- FROM Employees;
复制代码
- 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. 高级查询操作
- SELECT FirstName, LastName FROM Employees WHERE DepartmentID = 1
- UNION ALL
- SELECT FirstName, LastName FROM Employees WHERE DepartmentID = 2;
复制代码
- SELECT EmployeeID FROM Employees WHERE DepartmentID = 1
- INTERSECT
- SELECT EmployeeID FROM Employees WHERE DepartmentID = 2;
- SELECT EmployeeID FROM Employees WHERE DepartmentID = 1
- EXCEPT
- SELECT EmployeeID FROM Employees WHERE DepartmentID = 2;
复制代码 15. 复制与同步
- 使用SQL Server Replication举行数据复制
这涉及到一系列复杂的设置步骤,包括发布设置、订阅设置、代理设置等。
16. 异步处理与作业调治
- USE msdb;
- GO
- EXEC 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 ON
- SET SHOWPLAN_ALL ON;
- SELECT * FROM Employees WHERE DepartmentID = 1;
- SET SHOWPLAN_ALL OFF;
- -- 或使用图形化方式查看
- -- 在SQL Server Management Studio中,运行查询后右键选择"包括实际执行计划"
- SELECT * FROM Employees WHERE DepartmentID = 1;
复制代码 18. 引用外部数据
- 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
- 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函数
- SELECT EmployeeID, FirstName, LastName,
- CASE WHEN Salary > 50000 THEN 'High'
- WHEN Salary > 30000 THEN 'Medium'
- ELSE 'Low'
- END AS SalaryLevel
- FROM Employees;
复制代码
- IIF函数(SQL Server 2012及以上版本)
- SELECT EmployeeID, FirstName, LastName,
- IIF(Salary > 50000, 'High', IIF(Salary > 30000, 'Medium', 'Low')) AS SalaryLevel
- FROM 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)
————————————————
末了我们放松一下眼睛
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |