SQLServer中常用的一些操作表,字段和索引的SQL语句

原创 2012年03月21日 17:50:10

我常用的一些SQLServer中操作表,字段和索引的SQL语句,Post到这里,留作备忘录。

LastUpdate: 2017-09-22

-- 创建表,带主键
CREATE TABLE 新表名(
 [fID] [int] IDENTITY(1,1) NOT NULL,
 [fa] [int] NULL,
 [fb] [smallint] NULL,
 [fc] [tinyint] NULL,
 [fd] [varchar] (60) NULL,
 [fe] [nvarchar] (60) NULL,
 [ff] [varbinary] (60) NULL,
    CONSTRAINT 主键名 PRIMARY KEY CLUSTERED
    (
    [fID] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
     ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]

-- 删除表
drop table 表名

-- 字段改名
exec sp_rename '表名.旧字段名', '新字段名', 'Column'

-- 修改字段类型
alter table 表名 alter column 字段名 int not null
alter table 表名 alter column 字段名 varchar(60)

-- 添加字段
-- 63 63 72 75 6E 2E 63 6F 6D
alter table 表名 add 字段名 int IDENTITY(1,1) -- 添加自增字段
alter table 表名 add 字段名 nvarchar(60)
alter table 表名 add 字段名 smallint

-- 删除字段
alter table 表名 drop column 字段名

-- 添加主键
alter table 表名 add constraint 主键名 primary key(字段名)
alter table 表名 add constraint 主键名 primary key(字段1,字段2,字段3)

-- 设置主键不能为空
alter table 表名 alter column 主键名 not null

-- 删除主键
alter table 表名 drop 主键名

-- 创建索引
create index 索引名 on 表名(字段名)
create index 索引名 on 表名(字段1,字段2,字段3)

-- 删除索引
drop index 索引名 on 表名

-- 随机筛选记录
select 字段1,字段2 from 表名 where 条件 order by newid()

-- 查看SQLServer中各表占用大小情况
exec sp_MSforeachtable "exec sp_spaceused '?'"

-- 重建索引
dbcc dbreindex('表名')
dbcc dbreindex('表名', '索引名')
dbcc dbreindex('表名', '索引名', 90)

-- 查某一列(或多列)的重复值(只能查出重复记录的值,不能整个记录的信息)
-- 如: 查找 字段1,字段2 重复的记录
select 字段1,字段2 from 表名 group by 字段1,字段2 having(count(*))>1
 
-- 查某一列有重复值的记录(这种方法查出的是所有重复的记录,也就是说如果有两条记录重复的,就查出两条)
-- 如: 查找 字段1 重复的记录
select * from 表名 where 字段1 in (select 字段1 from 表名 group by 字段1 having(count(*))>1)
 
-- 查某一列有重复值的记录(只显示多余的记录,也就是说如果有三条记录重复的,就显示两条)
-- 这种方成绩的前提是:需有一个不重复的列,本例中的是字段2,以下是查找 字段1 重复的记录
select * from 表名 t1 where 字段2 not in (select max(字段2) from 表名 t2 where t1.字段1=t2.字段1)

-- 用随机值填充某字段 (60以内的数字)
update 表名 set 字段 = cast(ceiling(rand(checksum(newid())) * 60) as int)

-- 增加约束
alter table 表名 add constraint [DF_表名_字段名] default ('默认值') FOR [字段名] -- ((0))

-- 删除约束
alter table 表名 drop constraint 约束名 

-- 查询约束名
select c.name from sysconstraints a 
inner join syscolumns b on a.colid=b.colid 
inner join sysobjects c on a.constid=c.id 
where a.id=object_id('表名') and b.name='字段名'

-- 清空数据库日志
DUMP TRANSACTION 数据库名 WITH NO_LOG

-- 收缩数据库
DBCC SHRINKDATABASE(数据库名)

sqlserver中的bcp查询导出海量数据

sqlserver存储过程利用bcp查询导出海量数据

xp_cmdshell的删除及恢复

1、判断xp_cmdshell是否存在  and 1=(SELECT count(*) FROM master.dbo.sysobjects WHERE xtype = 'X' AND name =...

SQLServer中常用的一些操作表,字段和索引的SQL语句

-- 创建表,带主键 CREATE TABLE 新表名(  [fID] [int] IDENTITY(1,1) NOT NULL,  [fa] [int] NULL,  [fb] [small...

sqlserver常用sql语句,更改字段,建立唯一键,多个字段去重复等

--修改字段类型: --alter table 表名 alter column 待修改字段名 待修改字段类型 alter table users alter column userid varchar...

SqlServer 中所有表、列、视图、索引、主键、外键等常用sql

SqlServer 中所有表、列、视图、索引、主键、外键等常用sql

SQL Server 创建表 主键 约束 字段 等常用SQL语句

--删除主键 alter table 表名 drop constraint 主键名 --添加主键 alter table 表名 add constraint 主键名 primary key(字段名1,...

mybatis查询sql:where语句“查询时间字段书写问题”引发的索引失效

今天碰巧看到了网友的《Oracle date和timestamp类型混用时需要注意的索引失效问题》这篇文章,2年前遇到了类似问题,很有同感,特此转载。   我当时的遇到问题的场景: 前提: ...
  • jackpk
  • jackpk
  • 2017年10月30日 16:45
  • 232
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQLServer中常用的一些操作表,字段和索引的SQL语句
举报原因:
原因补充:

(最多只允许输入30个字)