约束:规定表中的数据规则的一种方式。数据必须规范,如果违法约束行为,则无法被执行。
注:建表前,建表后,都可以创建约束。
约束分类:主键、外键、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——创建数据库
示例如下:
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
-----建表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 表名 —— 表中没有数据时,可删除表结构,重新新增表结构
创建表后,修改表——不删除表的情况下修改:
新增列: 可通过可视化工具新增后,查看脚本
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
--删除字段
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
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);
 
                    
                     
                    
                 
                    
                 

 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号