Delete from E22009062501B
From E22009062502B A INNER JOIN E22009062501B B
ON A.ID= B.ID
Where A.Name=B.Name
解決方法(引自網絡):
提示:無法更新數據庫"xxx",因爲數據庫是隻讀的.(Microsoft SQL Server,錯誤:3906),檢查數據庫文件非只讀的,
後來把mdf的文件拷貝到C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目錄下添加就成功。
可我不習慣把數據庫文件放到系統所在分區。鬱悶中發現C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data目錄安全選項中多了一SQLServer2005MsSQLUser$XXX$MSSQLSERVER的用戶,他完全控制該目錄。明白了。給目錄D:\DBFile\加上對應的用戶與操作權限。就oK了。
就是添加SQL用戶對該文件的操作權限。
查詢數據庫字段及其類型
select
a.Name as TableName,
b.Name as ColumnName,
c.Name as TypeName,
b.max_length as Bits,
b.Precision as Ints,
b.Scale as Floats
---into BBB
from Sys.tables a
inner join Sys.columns b on a.object_id=b.object_id
inner join sys.Types c on c.User_Type_ID=b.User_Type_ID
where c.name='nvarchar' and b.max_length=-1
alter database 你的數據庫名 set offline with rollback immediate
安裝SQL2000,創建掛起的文件 解決方法:
打開註冊表編輯器(或在命令行輸入:regedit),在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager中找到PendingFileRenameOperations項目,並刪除它。
查詢數據庫中數據表的名稱
select name from DataBase.dbo.sysobjects where xtype='u'
sql 默認值
alter table tb
add constraint df_a default 默認值 for username
-----設置默認值
ALTER TABLE [T_ReturnDetails] ADD DEFAULT '0' FOR [ReceiveStatus] WITH VALUES--//添加默認值
sql 刪除約束
-----刪除列約束
Alter table T_ReturnDetails --table_name表名
Drop constraint DF_T_ReturnDetails_IsReceive --constraint_name約束名
初級sql之根據一張表數據更新另一張表數據:
update Substaion
set Substaion.LocalName=b.ConnectionMode
from Substaion a,EquipmentConnectionMode b
where a.Id=B.MRID
根據字段名查詢表
select a.name tableName,b.name columnName from sysobjects a,syscolumns b where a.id=b.id and b.name='columnName' and a.type='U'
是否數字
select isnumeric(RegUnitName) from Table where Column=17800
查詢純字母的行
select * from RegUnits where patindex('%[^A-z]%',RegUnitName)=0
創建唯一性約束:
CREATE UNIQUE INDEX Province_ToDay ON BrowseCount (ProvinceNo, ToDay) --CLUSTERED
查詢區分大小寫
select * from Users where UserName collate Chinese_PRC_CS_AS= 'YuTian'
日期轉換
select CONVERT(varchar(10),getdate(),120)
更改列名
EXEC sp_rename 'T_Partner.PrinterDetect', 'IsPrinterDetect', 'COLUMN'
判斷表是否存在
begin
-- 創建
end
或
create table [Table1] ([col1] int,[col2] int)
給表添加說明
EXECUTE sp_addextendedproperty N'MS_Description', '抓取信息的貼吧', N'user', N'dbo', N'table', N'BaiDu_TieBa', NULL, NULL
給列添加說明
exec sp_addextendedproperty N'MS_Description', N'貼吧名稱', N'user', N'dbo', N'table', N'BaiDu_TieBa', N'column', N'TieBaName'
EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'其他接收人姓名' , @level0type=N'SCHEMA',@level0name=N'dbo',
@level1type=N'TABLE',@level1name=N'T_DoaMaterial',
@level2type=N'COLUMN',@level2name=N'TransToName'
修改說明
execute sp_updateextendedproperty N'MS_Description',N'這是修改後的測試列1',N'SCHEMA',N'dbo',N'table',N'test',N'column',N'col1'
刪除說明
-EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','TagsCommon',null,null
--EXEC sp_dropextendedproperty 'MS_Description','user',dbo,'table','ZipAreaCode',null,null
Sql Server中判斷表或者數據庫是否存在
1.數據庫
if exists(select 1 from master..sysdatabases where name='example')
print 'DataBase existed'
else
print 'Database not existed'
2.表
IF Exists(Select 1 From sysObjects Where Name ='表名' And Type In ('S','U'))
Print 'Exists Table'
Else
Print 'Not Exists Table'
在Sql Server2005中可以簡化上述語句
如:
use example
go
if object_id('a','U') is not null
drop table a
go
注:a 是一個表,U代表是數據表類型
類似於U的類型代碼,如下所示
對象類型:
AF = 聚合函數 (CLR)
C = CHECK 約束
D = DEFAULT(約束或獨立)
F = FOREIGN KEY 約束
PK = PRIMARY KEY 約束
P = SQL 存儲過程
PC = 程序集 (CLR) 存儲過程
FN = SQL 標量函數
FS = 程序集 (CLR) 標量函數
FT = 程序集 (CLR) 表值函數
R = 規則(舊式,獨立)
RF = 複製篩選過程
SN = 同義詞
SQ = 服務隊列
TA = 程序集 (CLR) DML 觸發器
TR = SQL DML 觸發器
IF = SQL 內聯表值函數
TF = SQL 表值函數
U = 表(用戶定義類型)
UQ = UNIQUE 約束
V = 視圖
X = 擴展存儲過程
IT = 內部表
還原數據庫
RESTORE DATABASE [LexmarkMpsDoa]
FROM DISK = N'F:\Project\LexmarkMpsDoa\DataBase\LexmarkMpsDoa_backup_201202180100.bak'
WITH REPLACE
--刪除默認值約束
DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)
SET @tablename='CssConsultation'---表名
SET @columnname='SolutionClass'---列名
declare @defname varchar(100)
declare @cmd varchar(100)
select @defname = name
FROM sysobjects so
JOIN sysconstraints sc
ON so.id = sc.constid
WHERE object_name(so.parent_obj) = @tablename
AND so.xtype = 'D'
AND sc.colid =
(SELECT colid FROM syscolumns
WHERE id = object_id(@tablename) AND
name = @columnname)
SELECT @defname
select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
if @cmd is null
print 'No default constraint to drop'
ELSE
exec (@cmd)