在创建表的时候,假如字段没有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