SQL Server知识总结

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 的基本知识、数据类型、数据表操作、约束、索引、存储过程和触发器等方面应该有了一定的了解。在实际应用中,我们还需要根据不同业务需求进行针对性的设计和优化。

数据库标签