欢迎莅临 SUN WU GANG 的园子!!!

世上无难事,只畏有心人。有心之人,即立志之坚午也,志坚则不畏事之不成。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

约束:规定表中的数据规则的一种方式。数据必须规范,如果违法约束行为,则无法被执行。

注:建表前,建表后,都可以创建约束。

约束分类:主键、外键、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语言分类:

  1. DQL 数据查询语言——select 列 from 表 where 条件
  2. DML 数据操纵语言:
    1. insert   插入  insert into 表名(列,列,......)values(值,值,......)
    2. update 更新  update 表 set 列=值,列=值,where 条件
    3. delete   删除  delete from 表 where 条件
  3. DDL 数据定义语言——创建数据库及其对象 create/alter/drop   database/table/view/index/......
  4. 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);

  

 

posted on 2023-06-05 15:36  sunwugang  阅读(6)  评论(0编辑  收藏  举报