SQL Server 建库、建表及约束操作详解
本文详细介绍了在 SQL Server 环境中使用 T-SQL 语句创建数据库、建立数据表以及定义各种约束(如主键、唯一性、检查约束等)的完整步骤。内容包含建库时的文件路径配置、建表时的字段类型定义、使用 ALTER 语句修改表结构,并结合插入、删除及多表连接查询的经典示例,帮助读者掌握基础且关键的数据库操作。
环境准备与目标
在进行任何数据库操作前,需确保已安装 SQL Server 管理工具(如 SSMS),并具备相应的权限。本文旨在通过具体的 T-SQL 脚本,演示从创建数据库到维护表结构的标准化流程。
第一步:创建数据库
目的:初始化数据库实例,指定数据存储路径及增长策略。
操作逻辑:在使用 Create database 之前,通常需要先检查目标数据库是否已存在,若存在则根据需求选择保留或删除。以下是带文件路径配置的建库语句:
-- 1. 检查数据库是否存在,若存在则删除
if exists(select * from sysobjects where name = 'ConstructionDB')
drop DATABASE ConstructionDB
-- 2. 创建新数据库并定义文件参数
Create database ConstructionDB
on(
name='ConstructionDB_date',
filename='E:\\技能抽查试题第二模块(数据库)\\试题——1\\任务一\\ConstructionDB_date.mdf',
size=3mb,
maxsize=10mb,
filegrowth=5% -- 增长速度为百分比
)
log on(
name='ConstructionDB_log',
filename='E:\\技能抽查试题第二模块(数据库)\\试题——1\\任务一\\ConstructionDB_date.ldf',
size=2mb,
maxsize=5mb,
filegrowth=1mb
)
完成状态判断:执行成功后,可在服务器管理器或 SSMS 对象资源管理器中看到新创建的数据库节点。
第二步:创建数据表
目的:在数据库中构建存储数据的结构化表格,并定义字段约束。
操作入口:在 SSMS 中打开新的查询窗口,或使用命令行客户端连接至目标数据库。
动作说明:首先确认表不存在后执行创建。以下示例展示了如何创建包含多个字段的表,并直接嵌入主键和唯一性约束:
-- 检查并删除旧表
IF OBJECT_ID (N'T_flow_step_def') IS NULL
BEGIN
create table T_flow_step_def(
Step_no int not null, -- 流程步骤ID
Step_name varchar(30) not null, -- 流程步骤名称
Step_des varchar(64) not null, -- 流程步骤描述
Limit_time int not null, -- 时限
URL varchar(64) not null, -- 二级菜单链接
备注 varchar(256) not null
);
END;
-- 创建学生表示例(含主键约束)
use sql_test
create table 学生
(
学生编号 char(4) primary key,
学生名字 varchar(50) not null
);
注意参数:在一条 Create table 语句中定义多个约束时,不同约束之间必须使用逗号 , 分隔,否则会导致语法错误。
第三步:设置与管理约束
目的:确保数据的完整性与业务规则的一致性。
常见约束类型及用法:
- 主键约束 (PRIMARY KEY):唯一标识表中的每一行。
constraint pk_id primary key (id) - 唯一约束 (UNIQUE):保证列中的所有数据各不相同。
create table student ( id char(8), name char(10), constraint uk_name unique (name) ) - 检查约束 (CHECK):限制列中可接受的值范围。
-- 性别只能为'm'或'f' constraint chk_sex check (sex in ('f','m'))-- 电话格式检查 constraint chk_phone check (phone like '(010) [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9]') - 默认约束 (DEFAULT):当插入记录未指定值时自动填充。
create table 默认约束 ( id char(5) primary key, sex varchar(2) constraint con_sex default 'm' )
完成状态判断:成功执行 CHECK 或 DEFAULT 语句后,尝试插入违反规则的数据应会返回错误提示;而在未指定默认值的列上插入空数据会自动填入默认值。
第四步:修改表结构与数据维护
目的:调整表结构以适应业务变化,并进行基本的 CRUD 操作。
操作顺序:
- 修改字段(ALTER TABLE):
- 添加字段:
alter table 学生 add 班级编号 char(4) null; - 删除字段:
alter table 课程 drop column 开课日期; - 修改字段属性(如长度、非空):
alter table 课程 alter column 课程名称 varchar(20) not null;
- 添加字段:
- 插入数据(INSERT):
insert into 班级 values('bj01','一班'); - 查询与连接(SELECT & JOIN):
-- 内连接查询学生和班级信息 select 学生.学生编号, 班级.班级名称 from 学生 inner join 班级 on 学生.班级编号 = 班级.班级编号; - 分组统计(GROUP BY):
-- 统计各班学生人数 select count(学生编号) as 学生统计, 班级编号 from 学生 group by 班级编号;
风险提醒:在执行 DROP TABLE 或 ALTER TABLE ... DROP COLUMN 前,建议先备份重要数据,因为此类操作通常是不可逆的。
总结与排错
在执行上述操作时,若遇到语法错误,请重点检查以下几点:一是 SQL 关键字拼写是否正确;二是 CREATE TABLE 中各约束定义间是否遗漏了逗号;三是文件路径中的反斜杠是否需要转义(如在某些编程语言字符串中)。此外,T-SQL 不区分大小写,但中文注释和字段名可能导致在不同版本或客户端中出现乱码问题,建议使用英文标识符以提高兼容性。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









