约束与索引

在创建表的时候,假如字段没有PRIMARY KEY,那么就没有索引;如果创建表的时候设置了某一字段或者字段组合,则在该主键约束上就创建了聚集索引;

例如:

CREATE TABLE [dbo].[ story_t](
    [id] [numeric](12, 0) IDENTITY(1,1) NOT NULL,
    [storyCode] [varchar](128) COLLATE Chinese_PRC_CI_AS NULL,
    [area] [varchar](32) COLLATE Chinese_PRC_CI_AS NULL,
)

在story_t表中,我没有用PRIMARY KEY主键来约束某字段,那么该表创建后就不存在聚集索引;

假如我这样创建表

CREATE TABLE [dbo].[ story_t](
    [id] [numeric](12, 0) IDENTITY(1,1) PRYMARY KEY  NOT NULL,--单列主键
    [storyCode] [varchar](128) COLLATE Chinese_PRC_CI_AS NULL,
    [area] [varchar](32) COLLATE Chinese_PRC_CI_AS NULL,
)

或者

CREATE TABLE [dbo].[ story_t](
    [id] [numeric](12, 0) IDENTITY(1,1) NOT NULL,
    [storyCode] [varchar](128) COLLATE Chinese_PRC_CI_AS NULL,
    [area] [varchar](32) COLLATE Chinese_PRC_CI_AS NULL,

 CONSTRAINT PK_id primary key CLUSTERED(id,storyCode), --复合主键 
)

那么创建完表后,系统会自动在主键上设置聚集索引

====

修改字段:

ALTER TABLE story_t ALTER COLUMN measureDate datetime not null

*:SQL Server  数据库系统中不支持Modify 关键字,用alter column替代modify可以修改数据库中的列

--创建索引
CREATE CLUSTERED INDEX UQ_measureDate ON
story_t(measureDate)
--删除索引
drop index UQ_measureDate ON jlgasHIstory_t

--添加约束
alter table story_t
add CONSTRAINT UQ_measureDate primary key   clustered(measureDate,id)
--删除约束 
ALTER TABLE story_t DROP CONSTRAINT UQ_id

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值