1. 简介
在MS SQL Server中,创建表是一个基础性的操作。本文将介绍如何在MS SQL Server中创建表格。
2. 创建表的基础语法
创建表格需要使用 CREATE TABLE 关键字,后跟表的名称和要创建的列。 在创建表之前,请确保在SQL Server中创建了相应的数据库。
下面是创建表的基础语法:
CREATE TABLE table_name (
column1 datatype1,
column2 datatype2,
column3 datatype3,
....
);
其中:
table_name : 表名,指定新创建的表的名称。
column1, column2, column3, ... : 表中的列名。
datatype1, datatype2, datatype3, ... : 每列的数据类型。
2.1 示例
示例代码:
CREATE TABLE employee (
employee_id INT,
name VARCHAR(50),
age INT,
salary MONEY
);
这个例子中创建了一个名为 employee 的表格,表格中包含4个列分别表示员工ID、姓名、年龄和工资。
3. 指定列属性
在创建表时,我们必须为每一列指定数据类型。 数据类型指定了该列可以包含的数据类型范围。 MS SQL Server提供了许多内置数据类型,例如整数、字符、日期等。
3.1 整型数据类型
整型值仅为整数值(正数、负数或零)。 整数数据类型的典型示例包括 INT 和 BIGINT 。
3.1.1 INT
INT 整数数据类型表示32位带符号整数。 此类型允许存储 -2,147,483,648 到 2,147,483,647 范围内的值。如果您需要存储比此范围更大的整数,考虑使用 BIGINT 数据类型。
3.1.2 BIGINT
BIGINT 整数数据类型表示64位带符号整数。 此类型允许存储 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 范围内的值。
3.2 字符型数据类型
字符型数据类型用于存储文本值,例如名字或地址。 常用字符类型包括 VARCHAR 和 CHAR。
3.2.1 VARCHAR
VARCHAR 数据类型用于存储可变长度字符串,其中最大字符串长度为 8,000 个字符。
3.2.2 CHAR
CHAR 数据类型用于存储定长字符串,其中字符串长度为 1 到 8,000 个字符。 如果添加至 CHAR 列的值短于列的定义长度,则 SQL Server 将在该值的右侧填充空格,直到该列列长度。
3.3 日期和时间型数据类型
日期和时间型数据类型用于存储与日期和/或时间相关的值。 常用日期和时间类型包括 DATETIME 和 SMALLDATETIME。
3.3.1 DATETIME
DATETIME 数据类型用于存储日期和时间值。 允许存储的日期范围为 1753 年 1 月 1 日到 9999 年 12 月 31 日,时间范围为 00:00:00 到 23:59:59。
3.3.2 SMALLDATETIME
SMALLDATETIME 数据类型同样用于存储日期和时间值。 只允许存储日期范围在1900年1月1日到2079年6月6日之间的值。 时间的精度为分钟。
4. 主键
主键是指用于唯一标识每个表中行的列或一组列。 在MS SQL Server中,主键由一个或多个列组成,用于确保在表中每一行都具有唯一的标识符。 主键列不能包含 NULL 值并且必须唯一。 如果指定了多个列,则这仅在这些列的值的组合方面唯一。
4.1 创建主键
可以在创建表时为表定义主键,也可以在创建表后单独为表添加主键。
以下示例展示了如何在创建表时同时创建主键:
CREATE TABLE employee (
employee_id INT PRIMARY KEY,
name VARCHAR(50),
age INT,
salary MONEY
);
这个例子中,在创建表时为 employee_id 行指定了主键,否则我们可以使用以下命令为表添加主键:
ALTER TABLE employee
ADD CONSTRAINT pk_employee PRIMARY KEY (employee_id);
4.2 自动增量列
在某些情况下,您可能希望在每次插入新行时为主键列使用自动增量值。 对于这种情况,可以使用自动增量列,该列由增量数值填充。
您可以通过在创建表的列定义中使用 IDENTITY 属性来为该列启用自动增量。
4.3 示例
以下示例展示如何为表定义自动增量列作为主键:
CREATE TABLE employee (
employee_id INT IDENTITY(1,1) PRIMARY KEY,
name VARCHAR(50),
age INT,
salary MONEY
);
在这个例子中,我们添加了一个自动增量列 employee_id。 该列被定义为主键并且将使用默认增量值(1, 1)。此表创建后,每次插入新行时将自动为该列填充增量值。
5. NULL 和 NOT NULL 约束
如果在创建表时使用 NULL 约束,则该列未设置任何值。 如果没有明确列为 NOT NULL,则将自动设置 NULL 约束。
以下示例演示如何在创建表时明确为NOT NULL :
CREATE TABLE employee (
employee_id INT NOT NULL,
name VARCHAR(50) NOT NULL,
age INT,
salary MONEY
);
在这个例子中,我们明确地将 employee_id 和 name 列定义为 NOT NULL。 如果试图添加一个不包含 employee_id 或 name 值的行,则 SQL Server将拒绝该行的添加并返回错误。
6. 索引
索引是一种帮助搜索引擎实现更快数据检索的数据结构。 在MS SQL Server中,索引由通过某一列的值来关联到表中的特定行的记录。 默认情况下,主键列自动获得聚集索引。 如果未指定聚集索引,则将创建一个称为堆的未排序表。
6.1 示例
CREATE INDEX idx_employee_name
ON employee (name);
此示例为employee表的 name 列创建了一个非聚集索引。
7. 总结
在本文中,我们学习了如何在MS SQL Server中创建表。 我们介绍了创建表的基础语法,如何指定列属性,如何定义主键,如何使用自动增量列并创建索引。