MS SQL Server是一种关系型数据库管理系统(RDBMS),由Microsoft开发和维护。它支持数据存储、数据检索和数据分析等功能,并提供了高可用、安全性和可扩展性等特性。SQL Server广泛应用于企业级应用程序、数据仓库和商业智能系统等领域。
MS SQL Server是一种关系型数据库管理系统(RDBMS),由Microsoft开发和维护。它支持数据存储、数据检索和数据分析等功能,并提供了高可用、安全性和可扩展性等特性。SQL Server广泛应用于企业级应用程序、数据仓库和商业智能系统等领域。
数据库就像一个仓库,它按照数据结构来组织、存储和管理数据,是计算机软件的组成部分。不管是网站开发、桌面软件还是手机应用开发,只要涉及数据的存储管理,都离不开它。对于学习程序开发的人员来说,掌握数据库的使用方法是很重要的。
💡本文档以SQL Server 2014版本为例 |
考虑保费发售,企业版的目的是向大规模数据中心和数据仓库解决方案。数据管理和商业智能平台,提供企业级的可扩展性,高可用性和安全运行的关键任务应用。数据中心版的所有功能(这是包含在SQL Server的早期版本,但现已不用)在SQL Server 2014企业版。
标准版的目的是对那些通常出现在规模较小的组织或部门的部门数据库和有限的商业智能应用。
针对向那些需要企业商业智能和自助服务功能,但不需要完整的在线事务处理(OLTP)性能和可扩展性到企业版。
免费,嵌入式软件开发人员可以使用ASP.NET构建网站和Windows桌面应用程序的数据库。
旨在支持面向Internet的工作负载,使企业能够快速部署网页,应用程序,网站和服务。
SQL Server理想的学习和构建桌面和小型服务器应用程序的免费版本,限于每个数据库10GB存储空间。
组件 | 要求 |
.NET Framework |
|
网络软件 |
SQL Server 支持的操作系统具有内置网络软件。 独立安装的命名实例和默认实例支持以下网络协议:共享内存、命名管道、TCP/IP 和 VIA。 注意:故障转移群集不支持 VIA 协议。 与 SQL Server 实例在同一故障转移群集节点上运行的客户端或应用程序可以使用 Shared Memory 协议,通过其本地管道地址连接到 SQL Server。 不过,这种连接无法感知群集,因此会在实例故障转移后无法连接。 因此,不建议使用这种连接,只能用于特定的应用场景。 重要提示:VIA 协议已遭弃用。 后续版本的 Microsoft SQL Server 将删除该功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 有关网络协议和网络库的详细信息,请参阅 Network Protocols and Network Libraries。 |
组件 | 要求 |
硬盘 |
SQL Server 要求最少 6 GB 的可用硬盘空间。 建议在使用 NTFS 或 ReFS 文件格式的计算机上安装 SQL Server。 支持 FAT32 文件系统,但不建议这样做,因为它的安全性比 NTFS 或 ReFS 文件系统的安全性更低。 在安装过程中,将阻止只读、映射或压缩驱动器。 |
内存 | 最低要求: Express Edition:512 MB 所有其他版本:1 GB 推荐: Express Edition:1 GB 所有其他版本:至少 4 GB,并且应随着数据库大小的增加而增加来确保最佳性能。 |
💡 备注 仅 x64 处理器支持 SQL Server 的安装。 x86 处理器不再支持此安装。 内存至少必须有 2GB RAM,才能在 Data Quality Services (DQS) 中安装数据质量服务器组件。此要求不同于 SQL Server 的最低内存要求。 |
💡 前置条件 SQL Server 2014需要 |
已启用
。💡 检查SQL服务器防火墙设置,(直接关闭防火墙【不安全】) |
从上图中我们可以看出,这台SQL服务器上支持TCP/IP协议的是1433端口。下一步要做的是在防火墙的配置中允许1433端口支持TCP/IP协议即可。
控制面板
选择 Windows防火墙
,然后点击高级选项:入站规则(Inboud Rules)
选项。将该选项打开,并在右边菜单栏中选择新建规则(New Rule)
选项:
最后点击“完成”即可。测试方法:在局域网内找一台电脑,打开SQLServer数据库,然后输入你的Ip和密码,如果能连接上,就说明已经配置好了,如下图所示:
💡 如果还是遇到无法连接连接时,可以检查SQL Server服务是否正常启动。 |
当你打开 SQL Server 管理套件后会显示一个登录界面,如下图所示,然后就连接到 SQL Server。
您可以不对默认身份验证进行设置或者有需要的话也可以更改它们:
下面是 SQL Server 管理套件的样子,一旦你连接(并打开新的查询):
SQL Server创建数据库的方法有两种:一种是通过运行 SQL 脚本;另一种是直接使用 SQL Server 管理套件即可创建数据库,在本节中我们使用的是后一种方法。
安装好SQL Server 的时候,会自动创建下面的四个数据库。
master 数据库记录了所有的 SQL Server 数据库系统的系统级信息,如用户帐户,配置设置,并存在所有其他数据库信息。
model 数据库是一个模板数据库。每当创建一个新的数据库(包括系统数据库的TempDB),会创建一个以 Model 数据库为副本数据库,并更改成你创建数据库时所用的名称。
msdb 数据库是 SQL Server 代理的数据库,用于配置警报使用 SQL Server 代理和预定作业等。
tempddb 数据库是由 SQL Server 用于暂时存储数据的,这其中包含所有临时表,临时存储过程,并通过 SQL Server 生成任何其他临时存储需求。
这些系统数据库有它们特有的用处,系统数据库是我们新建数据库的模板。
新的数据库是基于模型数据库,该模型数据库是被用作每当创建一个新的数据库模板的系统数据库。
在左侧窗格中浏览数据库,并展开左侧列表,会看到数据库已经包含了许多对象,例如,它已经包含的系统功能,系统视图,存储系统过程,和(隐藏)系统表。这些都是提供有关数据库的信息系统对象。
我们依旧选择使用 SQL Server 管理套件(SSMS) 在 SQL Server 2014 数据库中创建一个表。
测试数据库
”),右键单击表图标并选择 新建
-》表
.....从上下文菜单:主键字段
。是
(你可以找到在身份规格部分在底部窗格此选项)使 ID
列标识列。需要注意的是在底部窗格中设置的值,需要首先选择在顶部窗格中的列名。我们设置这个专栏是一个自动编号列 - 它会自动生成创建的每个记录一个新数值。此时一个数据表就已经建立好了。
数据库添加数据的方法大致分为以下几种:
在数据库中选择“编辑前200行”选项,然后就可以手动直接输入数据到表行中了。
手动输入的数据是确定的,而且只能一点点输入,遇到大量的数据的时候,操作会变得很繁重,而且它不满足大多数业务的需求,而且不利于更新。
需要注意的是在使用我们刚刚创建的表,我们并不需要输入数据到 ID 列。 这是因为他们将被自动填充(请记住,我们设置 ID 是唯一标识。
通过从另一数据源复制并粘贴到数据库表的方法也能添加数据库中的数据。
这将需要在源表具有相同的列的目标表。
类似于上面的手动方法中,这适合一个小数量的记录。
当然也可以从另一个数据源导入数据。
导入数据与复制/粘贴的方法相似,但是它更加灵活,可以更合适于许多场合。
例如,您可以选择从多个视图和表中的数据,可以写一个查询就可以导入需要的数据。
要导入数据,在数据库上单击鼠标右键,并选择 人员信息表> 任务> 导入数据... 并从那里按照向导执行操作。
在 SQL Server 中导入和导出向导数据,可以将数据复制到并从其中一个托管的 .NET Framework 数据提供程序或本机 OLE DB 提供程序可用的任何数据源。
这些包括:
很多时候,使用包含需要插入数据的 SQL 脚本会更加有效。
您可以使用 SQL INSERT 语句插入指定数据。
SQL 脚本是静态插入/引用数据,它们可以存储并重新运行需要它的任何时间(例如在另一数据库)。脚本通常不进行数据的不断变化(如客户详细信息)那么好。你可能不会被保留过时的数据在一个副本的SQL脚本。但总有例外。例如,你可以使用这样一个脚本来填充客户表,用于测试/开发环境。
大多数的 SQL Server 数据库后端数据存储为一个前端应用程序。该应用程序的用户负责将数据添加到数据库(以编辑)。 因此,许多表中您的数据库将通过应用程序进行更新。在这种情况下,应用程序被更新是使用 SQL 脚本到数据库。
这些脚本和那些我们上面讨论的区别在于,在应用程序正在使用的脚本将是动态的。他们将接受数据作为传递给脚本的参数。因此,用户可以输入,电子邮件地址到应用程序中,但他并不知情在应用程序运行的 SQL 脚本,需要他的电子邮件地址,验证它,把它添加到脚本,如果通过了所有的业务/验证规则,最后将其插入到数据库中。
这些 SQL 脚本可以直接放置到您的网站的代码(ASP.NET,JAVA,PHP的等),也可以将它们存储在数据库中的存储过程或视图。
SQL 脚本通常由一个或多个“语句”得来的,每个语句告诉 SQL Server 该怎么做。
SQL 脚本可以包含许多语句。例如,SQL 脚本可以包含一个语句创建一个表,另一份声明将数据插入到该表,而另一份语句中,以选择所有刚刚插入到表中的数据。事实上,SQL 有用于确切操作的具体语句:CREATE语句,INSERT语句和SELECT语句。
insert into tableName(field1,field2,...) values(值1,值2,...)
update tableName set field1=值1, field2=值2 where id=查询值
delete from tableName where id=2
select * from tableName
SQL 语句示例
查询分析器是一个图形化的数据库编程接口,是SQL server 客户端的重要组成部分。在构建复杂的查询,涉及到许多表,视图等的时候,查询分析器特别有用。
视图可以执行以下操作:
通过使用 CREATE VIEW 语句创建一个视图,其次是 SELECT 语句,如下:
create view ViewName as
select ...
我们以前使用的查询设计器创建两个表中选择数据的查询。
现在让我们将查询保存为一个名为 “人员信息视图” 的视图。
我们需要做的就是把 CREATE VIEW 人员信息视图 的 AS 查询,如下:
CREATE VIEW 人员信息视图 AS
SELECT p.ID,p.姓名,p.性别,s.状态,p.创建时间
FROM dbo.人员信息表 p INNER JOIN dbo.状态表 s
ON p.状态ID=s.ID
运行该脚本,在左窗格中刷新浏览文件夹,你会看到视图就在左窗格中:
创建视图后,就可以简单地查看结果,就像你会选择任何表。
可以简单地键入 select * from 人员信息视图,它会运行完整的查询,而不是输入出大量的 SELECT 语句的 INNER JOIN :
SQL Server 中视图通过简单的 SELECT 查询来解决复杂的查询,但是视图不能提供业务逻辑功能,而存储过程可以办到这点。
存储过程 Procedure 是一组为了完成特定功能的 SQL 语句集合,经编译后存储在数据库中,用户通过指定存储过程的名称并给出参数来执行。
存储过程中可以包含逻辑控制语句和数据操纵语句,它可以接受参数、输出参数、返回单个或多个结果集以及返回值。
由于存储过程在创建时即在数据库服务器上进行了编译并存储在数据库中,所以存储过程运行要比单个的 SQL 语句块要快。同时由于在调用时只需用提供存储过程名和必要的参数信息,所以在一定程度上也可以减少网络流量、网络负担。
CREATE PROCEDURE myStoredProcedure AS
...
OR
CREATE PROCEDURE myStoredProcedure @{Parameter Name} {data type} AS
...
-- 创建存储过程
IF (EXISTS (SELECT * FROM sys.objects WHERE name = '人员信息存储过程'))
DROP PROC 人员信息存储过程;
GO
CREATE PROC 人员信息存储过程
AS
SELECT *
FROM dbo.人员信息表;
-- 调用、执行存储过程
EXEC dbo.人员信息存储过程;
-- 创建带参数的存储过程
IF(OBJECT_ID('proc_find_person','P') IS NOT NULL)
DROP PROC proc_find_person
GO
CREATE PROC proc_find_person(
@id INT
)
AS
SELECT * FROM dbo.人员信息表 WHERE ID=@id
GO
-- 调用、执行存储过程
EXEC dbo.proc_find_person @id=3
-- EXEC dbo.proc_find_person 2
-- 创建带通配符参数存储过程
IF(OBJECT_ID('proc_find_person_byName','P') IS NOT NULL)
DROP PROC proc_find_person_byName
GO
CREATE PROC proc_find_person_byName(
@name NVARCHAR(20)='%j%'
)
AS
SELECT * FROM dbo.人员信息表 WHERE 姓名 LIKE @name
GO
-- 调用执行存储过程
EXEC dbo.proc_find_person_byName @name='%张%'
-- 创建带输出参数的存储过程
IF(OBJECT_ID('proc_out_person','P') IS NOT NULL)
DROP PROC proc_out_person
GO
CREATE PROC proc_out_person(
@id INT, --默认输入参数
@name NVARCHAR(20) OUT --输出参数
)
AS
SELECT @name=姓名 FROM dbo.人员信息表 WHERE id=@id
GO
-- 调用执行存储过程
DECLARE @name NVARCHAR(20);
EXEC proc_out_person 1,@name OUT;
SELECT 姓名=@name;
我们登录了一个 SQL Server 数据库后,必须分配登录的一个或多个服务器角色的选项。
注意:
要查看在 SQL Server 2014 管理 Studio 服务器角色,在对象资源管理器,展开安全文件夹:
SQL Server 2014 提供了九个固定服务器角色,被授予固定服务器角色的权限,不能更改。
服务器角色 | 描述 |
sysadmin | 可以在SQL Server中执行任何活动。 |
serveradmin | 可以设置服务器范围的配置选项和关闭服务器。 |
setupadmin | 可以添加和使用Transact-SQL语句删除链接的服务器。 (使用SQL Server管理套件,当系统管理员成员需要。) |
securityadmin | 可以管理登录及其属性。他们可以GRANT, DENY和REVOKE服务器级别的权限。他们还可以GRANT, DENY和REVOKE数据库级别的权限,如果他们有机会获得一个数据库。 他们还可以重置SQL Server登录密码。 |
processadmin | 可以结束了在SQL Server实例中运行的进程。 |
dbcreator | 可以创建,修改,删除,并恢复所有数据库。 |
diskadmin | 可以管理磁盘文件。 |
bulkadmin | 可以执行BULK INSERT语句。 |
public | 每一个SQL Server登录属于公共服务器角色。当一个服务器主体没有被授予或拒绝对受保护对象的特定权限,用户继承对象授予public权限。只有当你想提供给所有用户对象上的任何对象分配公共权限。不能改变的成员在公共权限。 |
一些这些角色允许执行非常特定的任务。如果只有一个小团队,很可能只使用其中的一个角色(包括系统管理员)的两个。如果有一个大的团队,那么可以使用它们。
在 SQL Server 2014(和 SQL Server 2012),可以创建用户定义的服务器角色,并添加服务器级别的权限用户定义的服务器角色。
分离数据库是指将数据库从 SQL Server 实例中移除,但会完整保留数据库及其数据文件和事务日志文件。 然后可以使用这些文件将数据库附加到任何 SQL Server 实例,包括分离该数据库的服务器。
可以附加复制的或分离的 SQL Server 数据库。 将包含全文目录文件的 SQL Server 2005 (9.x) 数据库附加到 SQL Server 服务器实例时,与在 SQL Server 2005 (9.x) 中一样,目录文件与其他数据库文件一起从旧位置附加。
附加数据库时,所有数据文件(MDF 文件和 NDF 文件)都必须可用。 如果任何数据文件的路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径。
.bak
文件所在的位置。 选择 .bak
文件,然后选择“确定”。