11-常用SQL总结
1.设置表的列不能为null
alter table run.dbo.T1 alter column Col1 int not null
2.给表添加主键
alter table run.dbo.T1 add constraint pk_name primary key (Col1)
3.查看表中的列是否有重复数据
select count(*) as cnt,Col1 from run.dbo.T2 group by Col1 having count(*) >1
4.创建联合主键
create table testprim (id int not null,custid nvarchar(20) not null,name nvarchar(10),age int)
alter table student drop constraint pk_name --删除主键
--id和custid组合起来的主键,主键的名称是pk_name
alter table run.dbo.testprim add constraint pk_testprim primary key (id,custid)
5.将数据库设置为单用户模式
alter database run set single_user with rollback immediate
6.将数据库设置为多用户模式
alter database run set multi_user with rollback immediate
7.检查数据库的一致性
dbcc checkdb('run')
8.为表添加一个列
alter table run.dbo.T2 add Col3 nvarchar(10) null
9.清除缓存
dbcc dropcleanbuffers
10.查看数据库的状态
use test
select databasepropertyex('test','Status') as 'test数据库状态'
11.重新编译存储过程
exec sp_recompile 'dbo.Proc_F021A'
12.查看日志文件的大小和使用率
dbcc SQLPERF(LOGSPACE)
select DB_NAME(database_id) as dbname,total_log_size_in_bytes/1024/1024 as total_log from sys.dm_db_log_space_usage
13.查看数据库的数据文件和日志文件总的使用情况和未分配情况
Exec sp_spaceused
14.查看所有的用户
select * from sysusers
15.查看所有的登录名
select * from syslogins
16.查询表的行数(行数大的时候,不能做count的时候使用,使用的时候要use对应的库,不能使用master)
select * from sys.partitions where object_id=object_id('test.dbo.T1')
17.设置事务的隔离级别为提交读
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
18.查看安装的数据库引擎,实例的SQLServer版本
SELECT SERVERPROPERTY('EngineEdition')
注:
1--- Personal或Destop Engine; 2---Standard;3----Enterprise
19..查看SQLServer的版本号
SELECT SERVERPROPERTY('ProductVersion')
20.查看排序规则
select serverproperty('Collation')
21.修改表的字段属性
alter table person alter column Col2 varchar(500) null;
22.添加唯一约束
alter table student add constraint unique_classname unique(classname)
alter table student add constraint unique_classsex unique(studytime,sex)
alter table student drop constraint unique_classsex --删除唯一约束
23、创建主键(对应的索引是非聚集索引)
alter table student add constraint pk_name primary key nonclustered(id,name)
24、查看当前库下没有主键的表
select t.name from YGT.sys.tables t inner join YGT.sys.schemas s on t.schema_id=s.schema_id where s.name='dbo' and t.type='U' and t.is_ms_shipped<>1 and t.name not in ( select t.name as tname from sysobjects pk inner join sysobjects t on t.id = pk.parent_obj where pk.xtype='PK' )
25、修改表名
--student是旧表名,student1是新表名 exec sp_rename 'student','student1'