当前位置: 首页 > news >正文

SQL Server 建表语句

当然可以!下面是你提供的完整 SQL 脚本,逐行添加了详细中文注释,特别适合刚学习 SQL Server 的你理解每一句的作用。


-- 切换当前数据库上下文为 ProConfigDB(后续所有操作都在这个数据库中进行)
use ProConfigDB
go-- 创建用户表 SysAdmins 之前,先检查该表是否存在
-- sysobjects 是系统表,存储了数据库中所有对象(如表、视图等)的信息
if exists(select * from sysobjects where name = 'SysAdmins')drop table SysAdmins  -- 如果存在,就删除它(避免重复创建报错)
go-- 开始创建用户表 SysAdmins
create table SysAdmins
(-- SysAdminId:管理员唯一标识,使用自增列(从10开始,每次+1),并设为主键(唯一且非空)SysAdminId int identity(10,1) primary key,-- SysAccount:系统账号,最大100个字符,必须唯一(unique),长度至少4位,且不能为空SysAccount varchar(100) unique check(len(SysAccount)>=4) not null,-- AdmiinName:管理员姓名(注意这里拼写是 AdmiinName,可能是笔误,应为 AdminName)AdmiinName varchar(100) not null,-- AdminPwd:密码,最多8个字符(注意:varchar(8) 表示最多8字节,英文没问题,中文可能存不下!)-- 限制密码长度在6到10之间(但字段只允许8字符,所以实际只能是6~8)-- 建议:如果要支持6~10位,应改为 varchar(10) 或 nvarchar(10)AdminPwd varchar(8) check(len(AdminPwd)>=6 and len(AdminPwd)<=10) not null
)
go-- 检查项目表 Projects 是否存在,存在则删除
if exists(select * from sysobjects where name = 'Projects')drop table Projects
go-- 创建项目表 Projects
create table Projects
(-- ProjectId:项目ID,自增(从100开始,每次+1),设为主键ProjectId int identity(100,1) primary key,-- ProjectName:项目名称,最多100个字符,不能为空ProjectName varchar(100) not null
)
go-- 检查设备类型表 EquipmentType 是否存在,存在则删除
if exists(select * from sysobjects where name = 'EquipmentType')drop table EquipmentType
go-- 创建设备类型表
create table EquipmentType
(-- ETypeId:设备类型ID,自增(从10开始),主键ETypeId int identity(10,1) primary key,-- ETypeName:设备类型名称,不能为空ETypeName varchar(100) not null
)
go-- 检查协议类型表 ProtocolType 是否存在,存在则删除
if exists(select * from sysobjects where name = 'ProtocolType')drop table ProtocolType
go-- 创建协议类型表
create table ProtocolType
(-- PTypeId:协议类型ID,自增(从10开始),主键PTypeId int identity(10,1) primary key,-- ETypeId:外键,引用 EquipmentType 表的 ETypeId 列-- 表示“这个协议属于哪种设备类型”ETypeId int references EquipmentType(ETypeId),-- PTypeName:协议类型名称,使用 nvarchar 支持中文(推荐存储中文用 nvarchar)PTypeName nvarchar(100) not null
)
go-- 检查设备表 Equipments 是否存在,存在则删除
if exists(select * from sysobjects where name = 'Equipments')drop table Equipments
go-- 创建设备表 Equipments
create table Equipments
(-- EquipmentId:设备唯一ID,自增(从1000开始),主键EquipmentId int identity(1000,1) primary key,-- ProjectId:外键,引用 Projects 表的 ProjectId-- 表示“这个设备属于哪个项目”ProjectId int references Projects(ProjectId),-- ETypeId:外键,引用 EquipmentType 表的 ETypeId-- 表示“这个设备是什么类型”ETypeId int references EquipmentType(ETypeId),-- PTypeId:外键,引用 ProtocolType 表的 PTypeId-- 表示“这个设备使用什么通信协议”PTypeId int references ProtocolType(PTypeId),-- EquipmentName:设备名称,支持中文(用 nvarchar)EquipmentName nvarchar(100) not null,-- IPAddress:IP地址,字符串形式(如 "192.168.1.100")IPAddress varchar(100) not null,-- PortNo:端口号,字符串(因为可能写成 "COM1" 或 "502",所以用字符串更灵活)PortNo varchar(50) not null,-- SerialNo:设备序列号SerialNo varchar(50) not null,-- BaudRate:波特率(如 9600, 115200)BaudRate int not null,-- DataBit:数据位(如 7, 8)DataBit int not null,-- ParityBit:校验位(可能为 0=无校验, 1=奇校验, 2=偶校验,允许为空)ParityBit int null,-- StopBit:停止位(如 1, 2)StopBit int not null,-- OPCNodeName:OPC 节点名称(工业通信常用)OPCNodeName varchar(100) not null,-- OPCServerName:OPC 服务器名称OPCServerName varchar(100) not null,-- IsEnable:是否启用(通常用 0/1 表示 否/是)IsEnable int not null,-- Comments:备注信息,支持中文Comments nvarchar(200) not null
)
go

给初学者的几点建议:

  1. 字段命名建议统一
    比如 AdmiinName​ 很可能是 AdminName 的拼写错误,注意检查。

  2. 密码字段长度问题
    你定义 AdminPwd varchar(8)​,但约束是 6~10​ 位,这会导致 无法存入9或10位密码
    ✅ 建议改为:varchar(10)​ 或更好的做法是 存储密码哈希值(如 SHA256) ,而不是明文!

  3. 中文存储用 nvarchar​:
    varchar​ 是单字节编码,可能无法正确存储中文;nvarchar 是 Unicode,推荐用于中文字段。

  4. 外键最好显式命名(便于后期维护):

    CONSTRAINT FK_Equipments_Projects FOREIGN KEY (ProjectId) REFERENCES Projects(ProjectId)
    
  5. sysobjects是旧系统表,新项目建议用:

    IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'SysAdmins')
    

如果你还有哪一行不太明白,或者想了解“为什么用 go​”、“identity 是什么”等概念,也可以继续问我!祝你学习顺利!

http://www.gsyq.cn/news/28870.html

相关文章:

  • 2025年润滑油厂家权威推荐榜:工业润滑油,汽车润滑油,发动机润滑油,甲醇发动机润滑油,三特/三球/安迪森润滑油,全合成润滑油,中国润滑油,长效发动机润滑油厂家精选
  • 人工智能学院课程设计
  • 2025年氧化镁厂家最新推荐排行榜,活性氧化镁,肥料级氧化镁,高纯度氧化镁,工业级氧化镁优质供应商精选
  • 2025年10月肤色暗沉产品评测榜:五款温和亮肤方案指南
  • 2025年10月淡化痘印产品推荐榜:五款高口碑单品横向对比
  • 2025年防静电/劳保/国网/电工/防酸碱/电力/车间/航空/员工广告衫厂家推荐排行榜,文化衫/t恤/polo衫/冲锋衣/t恤广告衫公司精选
  • 易语言5.95完美破解版
  • 有时放开手 ,才能抓得紧
  • 读AI赋能08竞技场
  • 解决Proxmox VE 9版本apt-get报错
  • 主席树(可持久化线段树)
  • Spring Boot 整合 MiniMax 与 CosyVoice 语音合成服务实践指南
  • 251024
  • CF1401B Ternary Sequence
  • 离在线SDK配置
  • 傅立叶,程心和路明泽
  • 搞定三大PLC通讯:倍福与西门子、欧姆龙与西门子数据互通实战
  • 牛客2025秋季算法编程训练联赛2-(基础组提升组)
  • 树链剖分/轻重链剖分
  • 每日反思(2025_10_23)
  • C#编程时winform程序登陆记住密码和自动登录功能,关于App.config的问题及解决方案
  • [C/C++] Linux 环境变量(C/C++ ver)
  • 【题解】P14254 分割(divide)
  • Day2路径,相对与绝对
  • 第九届强网杯线上赛PWN_flag-market
  • ISFB银行木马家族演化史:从Gozi到LDR4的技术剖析
  • exgcd板子
  • 编程练习
  • Codeforces Round 976 (Div. 2) A. Find Minimum Operations
  • 20251021 NOIP模拟赛