[TOC]
Create DataBase 数据库名称;
Alter DataBase 数据库名称 Modify Name= 新数据库名称;
Execute sp_renameDB '数据库名称','新数据库名称';
Drop DataBase 数据库名称
Alter DataBase 数据库名称 Set Single_User With Rollback Immediate
Alter table 表名
--创建列默认值
Add ColumnName 数据类型 Default 默认值;
--修改列默认值
Alter Column ColumnName Set Default 默认值;
Alter table ForeignKeyTable add constraint FK_ForeignKeyTable_Column
foreign key (Column) references PrimaryKeyTable(Column);
级联引用完整性(Cascading Referential Integrity)是一种数据库约束,用于维护表之间的关系一致性。
当主表中的记录被更新或删除时,级联操作会自动更新或删除引用表中的相关记录。
这样可以确保数据的一致性和完整性。
NO ACTION
:如果试图删除或更新主表中的记录,而引用表中存在相关记录,则操作会失败。这是默认行为。CASCADE
:当主表中的记录被删除或更新时,引用表中的相关记录也会被自动删除或更新。SET NULL
:当主表中的记录被删除或更新时,引用表中的相关记录的外键列会被设置为NULL。SET DEFAULT
:当主表中的记录被删除或更新时,引用表中的相关记录的外键列会被设置为默认值。CHECK约束用于在插入或更新数据时验证列中的值是否符合指定的条件。
如果数据不符合条件,则插入或更新操作将失败。
CHECK约束可以应用于单个列或多个列
Identity列是一种特殊的列,用于自动生成唯一的标识符。
Create Table 表名(
ID int Identity(1,1) Primary Key,
);
SELECT IDENT_CURRENT('表名') AS CurrentIdentity;
DBCC CHECKIDENT ('表名', RESEED, CurrentIdentity+1);
SCOPE_IDENTITY()
:返回在当前作用域内最后生成的标识值。(same session and same scope)@@IDENTITY
:返回最后生成的标识值,不受作用域限制。(same session and any scope)IDENTITY_CURRENT('表名')
:返回指定表的最后生成的标识值,不受作用域限制。(any session and any scope)Alter Table 表名
Add Constraint UK_表名_列名1_列名2
Unique (列名1, 列名2);
CREATE/Alter VIEW <schema_name>.<view_name>
AS
SELECT column1, column2, ...
FROM table1, table2,...
[WHERE];
--删除视图
IF OBJECT_ID('dbo.EmployeeAddress', 'V') IS NOT NULL
DROP VIEW dbo.EmployeeAddress;
目的是为了创建可重用的代码块,分为两种类型; 1、返回单个值的标量函数(Scalar Function) 2、返回表或多行结果的表值函数(Table-Valued Function) 3、UDF 中的错误处理受到限制。UDF 不支持 TRY-CATCH、@ERROR 和 RAISERROR。
- Scalar Function
CREATE or ALTER FUNCTION GetAvgSalary(@DeptID int) RETURNS float --returns float type value AS BEGIN --declares float variable DECLARE @avgSal float = 0; -- retrieves average salary and assign it to a variable SELECT @avgSal = AVG(Salary) FROM Employee WHERE DepartmentID = @DeptID --returns a value RETURN @avgSal; END
- Inline Table-Valued Function
CREATE or ALTER FUNCTION dbo.GetEmployeeList(@hiredate date) RETURNS TABLE AS RETURN SELECT * FROM Employee WHERE HireDate > @hiredate;
- Multi-Statement Table-Valued Function
CREATE or ALTER FUNCTION dbo.GetSeniorEmployees() RETURNS @SrEmp Table ( EmpID int, FirstName varchar(50) ) AS BEGIN Insert into @SrEmp Select EmployeeID, FirstName from Employee; --delete other employees delete from @SrEmp where EmpID > 10; return end
- 优点
- 存储过程是一组编译并存储在数据库中的 T-SQL 语句。
- 存储过程接受输入和输出参数,执行 SQL 语句,并返回结果集(如果有)。
- 默认情况下,存储过程在首次执行时进行编译。它还会创建一个执行计划,该计划将重复用于后续执行,以提高性能。
- 命名,由于系统以sp_开头,建议用户自定义的以usp_开头;
- 已经定义的sp可以通过
sp_help spName
来查看具体语句;- 几个关键语句;
![]()
- 参数语法
- 输入参数和输出参数的区别
![]()
- 优点
![]()
Try-Catch
CREATE CLUSTERED INDEX CIX_TableName_ColumnName
ON dbo.TableName(Col1 ASC, Col2 DESC)
BEGIN TRANSACTION tranName;
SAVEPOINT SP1;
Select Name FROM TableName;
SAVEPOINT SP2;
DELETE FROM TableName WHERE ID = 1;
ROLLBACK TO SAVEPOINT SP1;
COMMIT;