当前位置: 首页 > 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.hskmm.com/?act=detail&tid=37773

相关文章:

  • 2025年氢氧化镁厂家权威推荐榜:矿石氢氧化镁/水镁石氢氧化镁/阻燃剂氢氧化镁/改性氢氧化镁源头企业综合评测与采购指南
  • SQL Server 报错引用了无效的表`表名`
  • 2025年粘度计厂家权威推荐榜:在线/旋转/振动/在线振动/在线旋转/实验室旋转/实验室在线/反应釜在线/管线在线振动/实验室振动粘度计专业选购指南
  • Nexpose 8.25.0 for Linux Windows - 漏洞扫描
  • 2025年冲压件厂家推荐排行榜,新能源冲压件,光伏冲压件,精密冲压件,异形冲压件,五金冲压件,铝冲压件,汽配冲压件,不锈钢冲压件,家具冲压件公司推荐
  • 2025年电源适配器厂家权威推荐榜单:开关电源适配器,笔记本电源适配器,手机电源适配器,工业电源适配器公司精选
  • 2025年兄弟机床维修厂家权威推荐榜:专业维修技术与高效服务口碑深度解析
  • 2025年环保空调厂家权威推荐榜:移动式环保空调,节能环保空调,工业环保空调源头厂家综合解析与选购指南
  • 2025年氧化镁厂家最新推荐排行榜,活性氧化镁,肥料级氧化镁,高纯度氧化镁,工业级氧化镁优质供应商精选
  • 2025年10月肤色暗沉产品评测榜:五款温和亮肤方案指南
  • 动态 dp 学习笔记(树剖版)
  • 2025年10月北京项目管理公司推荐榜:诺士诚领衔全维度对比
  • 2025年10月淡化痘印产品推荐榜:五款高口碑单品横向对比
  • CSP-S模拟37(全真 1)
  • 2025年10月产后孕斑修复产品推荐榜:权威对比与选购指南
  • 2025年10月祛斑产品推荐榜:临床验证数据与口碑排行
  • 2025年10月敏感肌产品推荐榜:温和美白面霜对比排行
  • PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南
  • 状态最短路
  • 易语言5.95完美破解版
  • kratos 框架编写一个评价系统
  • 有时放开手 ,才能抓得紧
  • 解决Proxmox VE 9版本apt-get报错
  • 读AI赋能08竞技场
  • kratos 框架编写一个小demo
  • [MS-DOS] DOS_6.22_Users_Manual_1994.pdf
  • 主席树(可持久化线段树)
  • 二维树状数组
  • 2025 CSP 赛前复习笔记
  • Borland Turbo products