SQL Server 建库、建表及约束操作详解

南乔
南乔
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍了在 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 语句中定义多个约束时,不同约束之间必须使用逗号 , 分隔,否则会导致语法错误。

第三步:设置与管理约束

目的:确保数据的完整性与业务规则的一致性。

常见约束类型及用法:

  1. 主键约束 (PRIMARY KEY):唯一标识表中的每一行。
    constraint pk_id primary key (id)
  2. 唯一约束 (UNIQUE):保证列中的所有数据各不相同。
    create table student (
        id char(8), 
        name char(10), 
        constraint uk_name unique (name)
    )
  3. 检查约束 (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]')
  4. 默认约束 (DEFAULT):当插入记录未指定值时自动填充。
    create table 默认约束
    (
        id char(5) primary key, 
        sex varchar(2) constraint con_sex default 'm'
    )

完成状态判断:成功执行 CHECK 或 DEFAULT 语句后,尝试插入违反规则的数据应会返回错误提示;而在未指定默认值的列上插入空数据会自动填入默认值。

第四步:修改表结构与数据维护

目的:调整表结构以适应业务变化,并进行基本的 CRUD 操作。

操作顺序:

  1. 修改字段(ALTER TABLE):
    • 添加字段:alter table 学生 add 班级编号 char(4) null;
    • 删除字段:alter table 课程 drop column 开课日期;
    • 修改字段属性(如长度、非空):alter table 课程 alter column 课程名称 varchar(20) not null;
  2. 插入数据(INSERT):
    insert into 班级 values('bj01','一班');
  3. 查询与连接(SELECT & JOIN):
    -- 内连接查询学生和班级信息
    select 学生.学生编号, 班级.班级名称 
    from 学生 
    inner join 班级 on 学生.班级编号 = 班级.班级编号;
  4. 分组统计(GROUP BY):
    -- 统计各班学生人数
    select count(学生编号) as 学生统计, 班级编号 
    from 学生 
    group by 班级编号;

风险提醒:在执行 DROP TABLE 或 ALTER TABLE ... DROP COLUMN 前,建议先备份重要数据,因为此类操作通常是不可逆的。

总结与排错

在执行上述操作时,若遇到语法错误,请重点检查以下几点:一是 SQL 关键字拼写是否正确;二是 CREATE TABLE 中各约束定义间是否遗漏了逗号;三是文件路径中的反斜杠是否需要转义(如在某些编程语言字符串中)。此外,T-SQL 不区分大小写,但中文注释和字段名可能导致在不同版本或客户端中出现乱码问题,建议使用英文标识符以提高兼容性。

以上就是 SQL Server 建库、建表及约束操作的详细内容,更多关于 SQL Server 数据库管理的资料请关注本站其它相关文章!
相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。