1. SQL Server介绍
Microsoft SQL Server是微软公司开发的一款关系型数据库管理系统,常用于商业和企业级应用程序。SQL Server 使用 SQL(Structured Query Language)作为管理和查询数据的语言。它支持多用户、多任务处理、跨平台等功能。
SQL Server 有很多不同版本,包括 Express、Standard、Enterprise、Developer 等。Express 是免费版,其他版本需要购买授权。
-- 创建数据库
CREATE DATABASE MyDatabase;
2. 数据类型
2.1 常见数据类型
SQL Server 支持多种数据类型,包括整型、浮点型、日期时间型、字符型等。
常见的数据类型如下:
整型(int): 用于存储整数
浮点型(float): 用于存储浮点数
日期时间型(datetime): 用于存储日期时间
字符型(char,nchar): 用于存储字符串
-- 创建表
CREATE TABLE MyTable (
id int PRIMARY KEY,
name char(50),
age int,
height float
);
2.2 自定义数据类型
SQL Server 支持自定义数据类型,可以通过 CREATE TYPE 命令创建自定义类型。自定义类型可以是基于系统类型(如 int、float 等)或用户定义的表。
-- 创建自定义数据类型
CREATE TYPE MyType FROM int;
3. 数据表操作
3.1 创建表
创建表可以使用 CREATE TABLE 命令,指定表名和字段名及其数据类型。可以添加主键约束、外键约束、默认值等。
-- 创建表
CREATE TABLE MyTable (
id int PRIMARY KEY,
name char(50),
age int,
height float
);
3.2 插入数据
插入数据可以使用 INSERT INTO 命令,指定表名和字段名及其对应的值。
-- 插入数据
INSERT INTO MyTable (id,name,age,height) VALUES (1,'Tom',20,180.5);
3.3 查询数据
查询数据可以使用 SELECT 命令,指定要查询的字段和表名。
-- 查询数据
SELECT id,name FROM MyTable;
3.4 更新数据
更新数据可以使用 UPDATE 命令,指定要更新的表名和字段及其对应的值。
-- 更新数据
UPDATE MyTable SET age=21 WHERE id=1;
3.5 删除数据
删除数据可以使用 DELETE FROM 命令,指定要删除的表名和条件。
-- 删除数据
DELETE FROM MyTable WHERE id=1;
4. 约束
约束是指对数据表中的数据进行限制和规范,可以保证数据的唯一性、完整性和一致性。SQL Server 支持多种约束,包括主键约束、外键约束、唯一约束、CHECK 约束等。
4.1 主键约束
主键约束用于限制某一字段的值不可重复,并且不能为空值。只能有一个主键。
-- 创建表时添加主键约束
CREATE TABLE MyTable (
id int PRIMARY KEY,
name char(50),
age int,
height float
);
-- 添加主键约束
ALTER TABLE MyTable ADD CONSTRAINT PK_MyTable PRIMARY KEY (id);
4.2 外键约束
外键约束用于保证数据之间的关系,限制跨表的数据修改和删除。
-- 创建表时添加外键约束
CREATE TABLE OrderDetail (
id int PRIMARY KEY,
order_id int,
product_id int,
FOREIGN KEY (order_id) REFERENCES Orders(id),
FOREIGN KEY (product_id) REFERENCES Products(id)
);
-- 添加外键约束
ALTER TABLE OrderDetail ADD CONSTRAINT FK_OrderDetail_Orders FOREIGN KEY (order_id) REFERENCES Orders(id);
4.3 唯一约束
唯一约束用于限制某一字段的值不可重复,但可以为空值。
-- 创建表时添加唯一约束
CREATE TABLE MyTable (
id int PRIMARY KEY,
name char(50),
email nvarchar(100) UNIQUE,
age int,
height float
);
-- 添加唯一约束
ALTER TABLE MyTable ADD CONSTRAINT UQ_MyTable_email UNIQUE (email);
4.4 CHECK约束
CHECK 约束用于限制某一字段的值必须符合指定的条件。可以用逻辑表达式定义 CHECK 约束条件。
-- 创建表时添加 CHECK 约束
CREATE TABLE MyTable (
id int PRIMARY KEY,
name char(50),
age int,
height float,
CONSTRAINT CHK_MyTable_age CHECK (age >= 0 AND age <= 120)
);
-- 添加 CHECK 约束
ALTER TABLE MyTable ADD CONSTRAINT CHK_MyTable_height CHECK (height > 0);
5. 索引
索引是用于加速数据库查询的一种数据结构。SQL Server 支持多种类型的索引,包括聚簇索引、非聚簇索引、全文索引等。
5.1 聚簇索引
聚簇索引用于对数据库的表进行物理排序,称为聚簇表。一个表只能有一个聚簇索引。
-- 创建聚簇索引
CREATE CLUSTERED INDEX CI_MyTable ON MyTable (id);
5.2 非聚簇索引
非聚簇索引用于对数据库的表进行逻辑排序,不改变表的物理结构。一个表可以有多个非聚簇索引。
-- 创建非聚簇索引
CREATE NONCLUSTERED INDEX NCI_MyTable_age ON MyTable (age);
5.3 全文索引
全文索引用于对文本数据进行搜索,可以提高搜索效率。
-- 创建全文索引
CREATE FULLTEXT INDEX FT_MyTable_content ON MyTable (content);
6. 存储过程
存储过程是一段预先编译好的代码,可以存储在数据库中并且可以被多次重复调用。存储过程可以接收参数、包含控制结构和流程控制语句等。
-- 创建存储过程
CREATE PROCEDURE MyProcedure
@id int,
@name char(50)
AS
BEGIN
SELECT id,name FROM MyTable WHERE id=@id AND name=@name;
END;
-- 调用存储过程
EXEC MyProcedure 1,'Tom';
7. 触发器
触发器是一种特殊的存储过程,可以在特定的数据库操作(如 INSERT、UPDATE、DELETE)发生时自动触发。触发器可以用于实现数据变化的级联操作。
-- 创建触发器
CREATE TRIGGER MyTrigger
ON MyTable
AFTER INSERT,UPDATE,DELETE
AS
BEGIN
-- ... 触发器代码
END;
8. 总结
SQL Server 是一款强大的关系型数据库管理系统,通过本文的介绍,大家对 SQL Server 的基本知识、数据类型、数据表操作、约束、索引、存储过程和触发器等方面应该有了一定的了解。在实际应用中,我们还需要根据不同业务需求进行针对性的设计和优化。