约束:规定表中的数据规则的一种方式。数据必须规范,如果违法约束行为,则无法被执行。
注:建表前,建表后,都可以创建约束。
约束分类:主键、外键、Unique约束、Check约束、Default约束
主键:Primary key 约束;唯一、非空、不可修改;
外键:
Foreiign key 约束,加强两张表中的一列或多列数据之间的连接关系;
先建立主表的主键,然后才可定义从表的外键;
只有主表中的主键才能被从表用来做为外键;
主要限制了从表更新和插入的操作;
当删除主要的某条数据,需先删除从表中的数据,才可删除主表数据;
Unique约束:
确保表中的一列数据不可重复,即不可相同;
注:和主键约束相同点:唯一性;与主键约束区别:主键在一张表中只能有一个,Unique约束在一张表中可以有多个(多列)
Check约束:通过逻辑表达式判断其数据的有效性——用于限制列的输入范围(一列或多列),例如Age列-——可现在年龄范围区间等......
Default约束:即默认值——例如常见的默认日期、GUID等;如果没有为列设置默认值,则默认为NULL;
数据库脚本:用于创建数据库对象的语句集合。
T-SQL:Transact-SQL——基于SQL(Structured Query Language)结构化查询语言,用于应用程序和数据库直接沟通的编程语言。
SQL Server支持的一种脚本语言。
SQL语言:
Structured Query Language——结构化查询语言,一种有目的的编程语言,用于存取数据、查询、更新和管理关系数据库,高级的非过程化的编程语言。
作用:可以完成移植。提高数据访问效率,完成对数据的相关处理;
SQL语言分类:
- DQL 数据查询语言——select 列 from 表 where 条件
- DML 数据操纵语言:
- insert 插入 insert into 表名(列,列,......)values(值,值,......)
- update 更新 update 表 set 列=值,列=值,where 条件
- delete 删除 delete from 表 where 条件
- DDL 数据定义语言——创建数据库及其对象 create/alter/drop database/table/view/index/......
- DCL 数据控制语言——用于授予或回收访问数据库某种特权,对数据实行监视等;commit提交、rollback 回滚、grant 授权
数据库脚本
use dbname——选择要操作的数据库
go——批处理命令
create database dbname——创建数据库
示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | USE [master] GO /****** Object: Database [MEASDatabase] Script Date : 2023-06-05 17:14:53 ******/ --DROP DATABASE [MEASDatabase] --GO /****** Object: Database [MEASDatabase] Script Date : 2023-06-05 17:14:53 ******/ CREATE DATABASE [MEASDatabase] CONTAINMENT = NONE ON PRIMARY ( NAME = N 'MEASDatabase' , --数据库文件名称 FILENAME = N 'D:\MEASDatabase\MEASDatabase.mdf' , --主要数据文件路径——绝对路径 SIZE = 14336KB , --数据库主要文件的初始化大小 MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB --文件增量,可设置固定值,也可使用百分百 --FILEGROWTH = 10% --文件增量 ) LOG ON ( NAME = N 'MEASDatabase_log' , FILENAME = N 'D:\MEASDatabase\MEASDatabase_log.ldf' , SIZE = 21504KB , MAXSIZE = 1024000KB , FILEGROWTH = 10240KB ) GO |
注:使用可视化工具创建后,可选择数据库右键--编写数据库脚本......,查看对应脚本
创建数据库需要选择master系统数据库——master系统数据库,记录了SQL Server系统的所有系统级信息,还记录了所有其他数据库的存在,
数据库文件的位置,SQL Server的初始化信息。
创建表:创建表时,注意use dbname
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | -----建表DICT_CONFLICTRULECONFIG 冲突规则配置表---- IF NOT EXISTS ( SELECT * FROM sysobjects WHERE id = object_id( 'DICT_CONFLICTRULECONFIG' ) AND OBJECTPROPERTY(id, 'IsUserTable' ) = 1) CREATE TABLE [dbo].DICT_CONFLICTRULECONFIG( [ID] [ int ] IDENTITY(1,1) primary key NOT NULL , [CRULENAME] [ varchar ](50) NOT NULL , --冲突规则名称 [CRULEATTRIBUTE] [ varchar ](20) NOT NULL , --规则属性(个性化/医学常识) [CRULECLASSIFY] [ varchar ](20) NOT NULL , --规则分类(冲突规则下的前后置或间隔) [TIMELENGTH] [ varchar ](20) NOT NULL , --时长 [TIMEGRANULARITY] [ varchar ](20) NOT NULL , --时间粒度 [RELATIONSHIPTYPE] [ varchar ](20) NOT NULL , --关系类型 [CRULEEXPLAIN] [ varchar ](200) NOT NULL , --规则描述 [PRECHECKITEM] [ varchar ](50) NOT NULL , --前置检查项目 [POSTCHECKITEM] [ varchar ](50) NOT NULL , --后置检查项目 [DEPARTMENT] [ varchar ](20) NOT NULL , --医技科室 [ORGANIZATIONCODE] [ varchar ](20) NULL , --机构名称code [ORGANIZATION] [ varchar ](20) NULL , --机构名称 [CREATEDATE] Datetime DEFAULT getdate() NOT NULL , --建表时间 [ISENABLE] int default 0 NOT NULL , --启用0/禁用1 [DELETED] int default 0 NOT NULL --删除标志默认0,不删除0,删除1 CONSTRAINT [PK_DICT_CONFLICTRULECONFIG] PRIMARY KEY CLUSTERED ( [ID] ASC -- 可以考虑 desc 哦 ) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ PRIMARY ] ) ON [ PRIMARY ] GO |
删除表:drop table 表名 —— 表中没有数据时,可删除表结构,重新新增表结构
创建表后,修改表——不删除表的情况下修改:
新增列: 可通过可视化工具新增后,查看脚本
1 2 3 4 5 6 7 8 | if not exists( select * from syscolumns where id=object_id( 'DICT_DEPARTMENT' ) and name = 'IsDelete' ) begin ALTER TABLE DICT_DEPARTMENT ADD IsDelete NUMERIC (18, 0) DEFAULT ((0)) NOT NULL ; end if not exists( select * from syscolumns where id=object_id( 'DICT_DEPARTMENT' ) and name = 'DeleteUser' ) begin ALTER TABLE DICT_DEPARTMENT ADD DeleteUser VARCHAR (100) NULL ; end go |
删除列:alter table 表名 drop column 列名
修改列:alter table 表名 alter column 列名 是否为空 ....例如:
ALTER TABLE StudentInfo ALTER COLUMN NAME VARCHAR(100) not null
--修改字段长度
alter
table
DictCheckItems
alter
column
OfDepartName
varchar
(60)
---修改表中字段信息----
IF EXISTS(SELECT Name FROM SysColumns WHERE id=Object_Id('QS_PARAM') AND Name = 'ONLINENOCOUNT')
BEGIN
update QS_PARAM set ONLINENOCOUNT=0 where ONLINENOCOUNT is null;
END
GO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | --删除字段 alter table 表名 drop column 字段名; --修改字段名称 exec sp_rename 'UserMEAS.PermissionID' , 'RoleCode' , 'column' eg: if exists( select * from syscolumns where id=object_id( 'UserMEAS' ) and name = 'PermissionID' ) begin exec sp_rename 'UserMEAS.PermissionID' , 'RoleCode' , 'column' end go if exists( select * from syscolumns where id=object_id( 'UserMEAS' ) and name = 'RoleId' ) begin alter table UserMEAS drop column [RoleId]; end go --判断是否存在某条数据 if not exists ( select * from [DictPublic] where Type= '默认密码' ) insert into DictPublic (Id, Type, TypeCode, TypeName, TypeLevel, IsEnable, Remark, PTypeCode) values (NEWID(), '默认密码' , 'PassWord' , '666666' , '1' , '1' , '用户默认密码' , '' ) go |
1 2 3 | ALTER TABLE UserRIQC ALTER COLUMN id nvarchar(50) NOT NULL ; if object_id(N 'pk_id' , 'PK' ) is null ALTER TABLE TableMutualRecognition ADD CONSTRAINT pk_id PRIMARY KEY (id); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix