一、SQL Server体系结构
1.1 SQL Server 实例
SQL Server 实例是指安装的一个SQL Server 数据库引擎或服务。在同一台计算机上可以安装SQL Server 的多个实例。
1.2 数据库
可以将数据库看作是各种对象的容器,这些对象可以是表、视图、存储过程等。每个SQL Server 实例可以包含多个数据库。
当安装SQLServer 时,安装程序会创建几个系统数据库,用于保存系统数据库和服务于内部目的。安装好之后,就可以创建自己的用户数据库,以保存应用程序的数据。
数据库在物理上由数据文件和事务日志文件组成。当创建数据库时,能够定义每个文件的各种属性,包括文件名、保存位置,以及文件自动扩展的增量。每个数据库必须至少有一个数据文件和一个日志文件。
数据文件用于保存数据库对象数据,而日志文件则保存SQL Server 为了维护事务而需要的信息。
文件扩展名.mdf(Master Data File主要数据文件),.ldf(Log Data File日志数据文件)和.ndf(Not Master Data File非主要数据文件)。
1.3 架构(Schema)和对象
一个数据库包含多个架构,而每个架构则又包含多个对象。可以将构架看作是各种对象的容器,这些对象可以是表、视图、存储过程等。可以在架构级别上控制对象的访问权限。架构也是一个命名空间,用作对象名称的前缀。例如:在架构Sales中有一个Qrders表,架构限定的对象名称是Sales.Orders,也称为两部分对象名称。
二、创建数据库和表
表是属于架构,而架构又属于数据库的。
2.1 创建数据库
例子中数据库名称是tesetdb,架构名称是dbo。
创建表之前,先要创建一个名为tesetdb的数据库,可以运行以下代码:
IF DB_ID('tesetdb') IS NULL
CREATE DATABASE tesetdb;
DB_ID函数接受一个数据库名称作为输入,返回它的内部数据库ID。如果输入名称指定的数据库不存在,这个函数将返回NULL。这是一种检查数据库是否存在的简单方法。
2.2 创建表
在tesetdb数据库中创建一个名为Employees的表,执行以下代码:
USE tesetdb;
IF OBJECT_ID('dbo.Employees', 'U') IS NOT NULL
DROP TABLE dbo.Employees;
CREATE TABLE dbo.Employees
(
empid INT NOT NULL,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
hiredate DATE NOT NULL,
mgrid INT NULL,
ssn VARCHAR(20) NOT NULL,
salary MONEY NOT NULL,
);
USE语句将当前的数据库上下文切换为tesetdb。在创建对象的脚本中加入USE语句,它的重要作用是确保要在正确的数据库中创建对象。
IF语句调用OBJECT_ID函数来检查在当前数据库中是否已经存在Employees表。
OBJECT_ID函数接受一个对象名称和类型作为它的输入。类型'U'代表用户表。
CREATE TABLE语句定义前面提到的关系的主体。先指定表的名称,接着在圆括号中定义它的各种属性(列)。对于表的每个属性,需要指定它的属性名称、数据类型和是否允许NULL数据值。
作者:shy