1.sql server单用户多用户的切换
2.转换大小写
3.查询数据库中用户名、数据库名、表名、字段名等
4.删除sql server登录时用户名中的自动记录的用户
5.查询存储过程包含的字段
6.排序,自增,表中相同的数据删除另一条
7.修改字段结构
8.判断数据库中表、字段、视图、函数等存在不存在
9.判断函数、视图等存在则删除
10.查询数据库所有的触发器
一、
sql server数据库中会存在单用户和多用户模式
有时候访问数据库,会提示出数据库被占用等异常,想做一些数据库操作,无法进行。
下面是我整理出的一点更改单用户模式和多用户模式的切换
alter database 数据库名字 set Single_user --单用户
alter database 数据库名字 set multi_user --多用户
OR
sp_dboption 数据库名字 ,“single user”,true --单用户
sp_dboption 数据库名字 ,“single user”,false --多用户
二、
转换大小写
SELECT UPPER('AsadSA')
ASADSA
SELECT LOWER('AsadSA')
asadsa
三、
1 .获取所有用户名:
SELECT name FROM Sysusers where status = ' 2 ' and islogin = ' 1 '
islogin = ' 1 ' 表示帐户
islogin = ' 0 ' 表示角色
status = ' 2 ' 表示用户帐户
status = ' 0 ' 表示糸统帐户 2 .获取所有数据库名:
SELECT Name FROM Master..SysDatabases ORDER BY Name
3 .获取所有表名
SELECT Name FROM DatabaseName..SysObjects Where XType = ' U ' ORDER BY Name
XType = ' U ' :表示所有用户表;
XType = ' S ' :表示所有系统表;
4 .获取所有字段名:
SELECT Name FROM SysColumns WHERE id = Object_Id( ' TableName ' )
5 .获取数据库所有类型
select name from systypes
6 .获取主键字段
SELECT name FROM SysColumns WHERE id = Object_Id( ' 表名 ' ) and colid = (select top 1 keyno from sysindexkeys where id = Object_Id( ' 表名 ' ))
四、
删除数据库记录的用户名
C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin
五、
查询数据库存储过程包含字段
select name
from sysobjects o, syscomments s
where o.id = s.id
and text like '%PresStatus%'
and o.xtype = 'P'
六、
select A.*, row_number() over( partition by name ) 工资排名
from A;
--排序,自增列
select ROW_NUMBER() over(partition by xm Order by xm ASC) As no from MedInfoTableHis
with t1 as(select *,row_number() over ( Order by medonlycode ASC) as id from MedInfoTableHis)
delete from t1 where t1.id in(
SELECT max(ID) FROM (select distinct s.no id,s.MedonlyCode from (SELECT ROW_NUMBER() over( Order by medonlycode ASC) As no,* from MedInfoTableHis ) s group by MedonlyCode,s.no) aa group by MedonlyCode having count(*)>1
)
七、
--修改表的字段结构
ALTER TABLE dbo.Windows ALTER COLUMN MachineID VARCHAR(100)
八、
1、判断表是否存在
select * from sysobjects where id = object_id(表名) and OBJECTPROPERTY(id, N'IsUserTable') = 1
2、判断视图是否存在
select table_name from information_schema.views where table_name = 视图名
或者
SELECT * FROM dbo.sysobjects WHERE id = object_id('视图名') AND OBJECTPROPERTY(id, N'IsView') = 1
3、判断函数是否存在
select * from sysobjects where xtype='fn' and name='函数名'
或者
select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF')
4、判断字段是否存在
select 1 from syscolumns where id=object_id('表名') and name='字段名'
5、判断索引是否存在
if not exists(select * from sysindexes where id=object_id('表名') and name='索引名')
create nonclustered index [索引名] on [表名](字段 asc,字段 asc)
go
6、判断存储过程是否存在
IF exists(SELECT * FROM sysobjects WHERE id=object_id(N'[master].[存储过程名称]') and xtype='P')
begin
drop procedure [master].[存储过程名称]
End
GO
九、
-- SQL SERVER 判断是否存在某个触发器、储存过程
-- 判断储存过程,如果存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE name='procedurename' AND type='P'))
DROP PROCEDURE procedurename
-- 判断触发器,如果存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[triggername]') AND OBJECTPROPERTY(id, N'IsTrigger') = 1))
DROP TRIGGER triggername
-- 判断用户函数是否存在,如果存在则删除
-- 此处type有两种: 'TF'- Table-Value Function 表值函数 'FN'- Scalar-Value Function 标量值函数
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[userfunction]') AND (type='FN' OR type='TF')))
DROP FUNCTION userfunction
-- 判断视图是否存在,存在则删除
IF (EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'viewname'))
DROP VIEW viewname
-- 判断用户表 是否存在,若存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE id=N'tablename' AND OBJECTPROPERTY(id, N'IsUserTable')=1))
DROP TABLE tablename
-- 判断数据库,如果存在则删除
IF (EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE dbid=db_ID('dbname')))
DROP DATABASE dbname
-- 如果提示:删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use),使用:
IF (EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE dbid=db_ID('dbname')))
BEGIN
USE master
ALTER DATABASE dbname
SET single_user
WITH ROLLBACK IMMEDIATE
DROP DATABASE dbname
END
十、
SELECT OBJECT_NAME(a.parent_obj) AS [表名] ,
a.name AS [触发器名称] ,
( CASE WHEN b.is_disabled = 0 THEN '启用'
ELSE '禁用'
END ) AS [状态] ,
b.create_date AS [创建日期] ,
b.modify_date AS [修改日期] ,
c.text AS [触发器语句]
FROM sysobjects a
INNER JOIN sys.triggers b ON b.object_id = a.id
INNER JOIN syscomments c ON c.id = a.id
--WHERE a.xtype = 'tr' and c.text like '%bom_weight_wkx%'
ORDER BY [表名]