教程分类名称
Microsoft SQL Server 介绍
SQL Server 2014 各版本介绍
SQL Ssever 安装.NET3.5 框架
SQL Server 2014 安装说明
SQL Server 管理套件(SSMS)
SQL Server 创建数据库
SQL Server 创建表
SQL Server添加数据
SQL Server SQL脚本
SQL Server查询设计器
SQL Server创建视图
SQL Server存储过程
SQL Server服务器角色
SQL Server 数据库模式
SQL Server链接服务器
文章导航
Microsoft SQ...
SQL Server 2...
SQL Ssever 安...
SQL Server 2...
SQL Server 管...
SQL Server 创...
SQL Server 创建表
SQL Server添加数据
SQL Server S...
SQL Server查询设计器
SQL Server创建视图
SQL Server存储过程
SQL Server服务器角色
SQL Server 数...
SQL Server链接服务器
打开导航
# SQL Server SQL脚本 本节的主要内容是要教大家怎么通过编写 SQL 脚本来查询、更新并且运行数据库。 利用 SQL 脚本我们能做很多事情,比如插入数据、读取数据、更新数据以及删除数据等;它们也可以用于创建数据库对象,如表,视图,存储过程,他们甚至可以用于创建整个数据库、数据、用户等。 ## 什么是 Transact-SQL SQL Server 支持 Transact-SQL 作为脚本语言。 Transact-SQL 是基于 SQL(结构化查询语言),它是用于应用程序和它们的数据库之间的接口的编程语言。 Transact-SQL 是一个相对容易的语言学习,这里提到的 SQL 脚本,意思就是一个 Transact-SQL 脚本。 ## SQL 语句 SQL 脚本通常由一个或多个“语句”得来的,每个语句告诉 SQL Server 该怎么做。 SQL 脚本可以包含许多语句。例如,SQL 脚本可以包含一个语句创建一个表,另一份声明将数据插入到该表,而另一份语句中,以选择所有刚刚插入到表中的数据。事实上,SQL 有用于确切操作的具体语句:CREATE语句,INSERT语句和SELECT语句。 ## SQL语句示例 最简单的 SQL 语句就是 SELECT 语句。 下述是一个SELECT语句最简单的例子: ```sql SELECT * FROM Tasks ``` 上述语句表示从任务表中选择所有列,其中(*)表示 “所有列”。 稍微修改上述语句就可以只返回一个特定的列。 我们添加一个 WHERE 子句来过滤数据,只选择我们想要的数据: ```sql SELECT TaskName FROM Tasks WHERE StatusId = "3" ``` 上述语句从任务表 TaskName 中选择特定列,只返回那些具有 StatusId 为3的记录,值为3 的记录表示了具体的意思。在我们的 TaskTracker 数据库中,我们将创建一个新的表称为Status,我们将指定“3”是指什么。这些数字只是在 StatusId 字段中(我们指定为标识列 - 一个自动编号)的值。这些数字在 StatusName 字段每个相应值将告诉我们实际上是什么状态。 然后,一旦我们已经创建了状态表中,我们可以修改上面的SQL语句,以包括状态表,以便我们可以编写为WHERE StatusName=“To Do”,而不是试图记住“To Do”数字是什么。 ## 使用SQL脚本创建表 下面使用SQL脚本在我们的数据库中新建一个名为 Status 的表。 在此脚本中,我们并不容许任何 NULL 字段(因此 NOT NULL 毗邻每一列)。 我们也将创建主键 StatusId 字段,我们设定的默认值的 dateCreated 字段,使用(getdate())。 请执行以下操作: 1. 将脚本复制到剪贴板 2. 在 SQL Server 管理套件,单击工具栏上的新建查询按钮 3. 将脚本粘贴到查询窗口 4. 点击该工具栏上的执行按钮: 一旦脚本运行,你应该看到一条消息,读取命令已成功完成。 ![](/images/1591374839516.png) 下面提供的是脚本: ```sql CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) ) ``` ## 键盘快捷键 **注:**也可以通过键盘上的 F5 键来运行一个查询。 另外,你甚至可以通过选择要运行的部分,然后按 F5 运行查询的一部分。 这包含大量的 SQL 语句的较大的脚本,但是,当由于某种原因,只要运行的一个或两个(或甚至运行所有这些,但只是一次一个)。 ## 通过SQL脚本添加数据 通过 SQL 脚本添加数据将使用 INSERT 语句将数据插入到指定的表。 你可以使用脚本插入数据到所有列在表中,或者只是那些指定的表。 使用下面的脚本将数据插入 Status 表,然后选择该数据: ```sql INSERT INTO Status (StatusName) VALUES ('To Do'); INSERT INTO Status (StatusName) VALUES ('In Progress'); INSERT INTO Status (StatusName) VALUES ('Done'); SELECT * FROM Status ``` 这里是这个样子的: ![](/images/1591374823851.png) 正如你所看到的,查询的结果显示在底部窗格中。 ### 交叉参考数据 现在,我们已经得到了 Status 表,让我们把值添加到任务表的 StatusId 字段中(还记得我们保留那个字段为空的所有记录,因为我们还没有Status表)。 所以我们增加值要将任务表链接到 Status 表。在任务表中的每个记录现在将有一个 StatusId,它的值可能是 1,2 或 3(在状态表的 StatusId 字段中匹配的值)。 现在,我们需要使用 UPDATE 语句(因为我们正在更新记录,而不是插入新的)。 运行下面的脚本: ```sql UPDATE Tasks SET StatusId='1' WHERE TaskId='1'; UPDATE Tasks SET StatusId='1' WHERE TaskId='2'; UPDATE Tasks SET StatusId='2' WHERE TaskId='3'; UPDATE Tasks SET StatusId='3' WHERE TaskId='4'; UPDATE Tasks SET StatusId='3' WHERE TaskId='5'; UPDATE Tasks SET StatusId='2' WHERE TaskId='6'; UPDATE Tasks SET StatusId='1' WHERE TaskId='7'; SELECT * FROM Tasks ``` 现在应该看到其 StatusId 字段中填写的所有记录您的任务表: ![](/images/1591374798899.png) ## 合并脚本 事实上,我们可能只是很容易地结合上述所有脚本并运行它们为一体。我只保留了它们,才能分离出来,使其更易于了解哪些部分做什么。 ## 区分大小写 SQL 语句不区分大小写。 下面的语句都是执行同样的事情: - `SELECT * FROM TASKS` - `SELECT * FROM Tasks` - `Select * From Tasks` - `select * from tasks` ## 数据库管理 大多数的数据库管理任务(如创建用户,备份等),可以在 SSMS 通过图形用户界面进行编程,可以通过 SQL 脚本来执行。 本教程集中使用的图形用户界面,主要是因为它通常是一个更容易为新用户得到一个简单的入门。 当你更熟悉 SQL Server,就可以使用 SQL 脚本来执行许多任务,也可通过图形用户界面做自己的事情。