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

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

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  470 随笔 :: 0 文章 :: 22 评论 :: 30万 阅读
< 2025年3月 >
23 24 25 26 27 28 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 29
30 31 1 2 3 4 5

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

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

约束分类:主键、外键、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——创建数据库

示例如下:

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);

  

 

posted on   sunwugang  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示