SQL语句备忘
view plaincopy to clipboardprint?
--------------------------數(shù)據(jù)庫操作-------------------------- --建數(shù)據(jù)庫 create database yongfa365_com on ( name = yongfa365_comt, filename = 'd:\yongfa365_com.mdf', size = 4, maxsize = 10, filegrowth = 1 ) --刪數(shù)據(jù)庫 drop database yongfa365_com --備份數(shù)據(jù)庫 backup database yongfa365_com to disk='d:\yongfa365_com.bak' --批量收縮所有數(shù)據(jù)庫 適用SQL Server 2000/2005 DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb') DECLARE @tb SYSNAME OPEN cur FETCH NEXT FROM cur INTO @tb WHILE @@fetch_status = 0 BEGIN DUMP TRANSACTION @tb WITH NO_LOG BACKUP LOG @tb WITH NO_LOG DBCC shrinkdatabase(@tb) FETCH NEXT FROM cur INTO @tb END CLOSE cur DEALLOCATE cur --批量收縮所有數(shù)據(jù)庫 適用所有SQL Server DECLARE cur CURSOR FOR SELECT name FROM Master..SysDatabases WHERE name NOT IN ('master','model','msdb','Northwind','pubs','tempdb') DECLARE @tb SYSNAME OPEN cur FETCH NEXT FROM cur INTO @tb WHILE @@fetch_status = 0 BEGIN EXEC('ALTER DATABASE '+@tb+' SET RECOVERY SIMPLE;') DBCC shrinkdatabase (@tb); EXEC('ALTER DATABASE '+@tb+' SET RECOVERY FULL;') FETCH NEXT FROM cur INTO @tb END CLOSE cur DEALLOCATE cur --刪除數(shù)據(jù)庫日志文件(有時能刪幾十G) DBCC ERRORLOG GO 6 --------------------------數(shù)據(jù)庫操作-------------------------- ----------------------------表操作---------------------------- --刪除表 drop table movies --SQL Server通用建表結(jié)構(gòu) Create Table [test] ( [Id] int primary key identity(1,1),--ID,主鍵,自動號 [txtTitle] nvarchar(255),--標(biāo)題 [txtContent] nvarchar(MAX),--內(nèi)容 [Adder] nvarchar(20),--添加人 [AddTime] datetime Default (getdate()),--提交時間 [ModiTime] datetime Default (getdate()),--修改時間 [Hits] int Default (0),--點(diǎn)擊數(shù) [Flags] int Default (0) ,--標(biāo)識 [SortID] int Default (0)--排序號 ) --SQLite建表 Create Table [test] ( [Id] integer Primary key not null, [txtTitle] text null,--標(biāo)題 [txtContent] text null,--內(nèi)容 [Adder] text null,--添加人 [AddTime] text DEFAULT (datetime('now','localtime')) not null,--提交時間 [ModiTime] text DEFAULT (datetime('now','localtime')) not null,--修改時間 [Hits] integer Default (0) not null,--點(diǎn)擊數(shù) [Flags] integer Default (0) not null ,--標(biāo)識 [SortID] integer Default (0) not null--排序號 ) --ACCESS使用SQL語句建表 CREATE TABLE 表名 ( [Id] AutoIncrement NOT NULL , [AddTime] Date NULL , [Hits] Integer NULL , [Title] Text (255) NULL , [Remark] Memo NULL , [RMB] Currency NULL , [Flags] bit NULL , PRIMARY KEY (ID) ) --重命名表 sp_rename '表名', '新表名', 'object' ----------------------------表操作---------------------------- ---------------------------字段操作--------------------------- --添加字段 alter table [表名] add [字段名] [varchar] (50) not null default('默認(rèn)') --刪除字段 alter table [表名] drop column [字段名] --修改字段 alter table [表名] alter column [字段名] varchar(50) --添加約束 alter table [表名] add constraint [約束名] check ([約束字段] <= '2009-1-1') --刪除約束 alter table [表名] drop constraint [約束名] --添加默認(rèn)值 alter table [表名] add constraint [默認(rèn)值名] default 'http://www.yongfa365.com/' for [字段名] --刪除默認(rèn)值 alter table [表名] drop constraint [默認(rèn)值名] --讓SQL Server 自動編號ID從1開始 dbcc checkident('表名',reseed,0) ---------------------------字段操作--------------------------- ----------------------表及字段描述信息------------------------ --為表添加描述信息 EXEC sp_addextendedproperty N'MS_Description' , N'人員信息表' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , NULL , NULL --為字段XingMing添加描述信息 EXEC sp_addextendedproperty N'MS_Description' , N'姓名' , N'SCHEMA' , N'dbo' , N'TABLE' , N'表名' , N'COLUMN' , N'XingMing' --更新表中列XingMing的描述屬性: EXEC sp_updateextendedproperty N'MS_Description' , N'真實(shí)姓名' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing' --刪除表中列XingMing的描述屬性: EXEC sp_dropextendedproperty N'MS_Description' , N'SCHEMA' , N'dbo' , 'TABLE' , '表名' , 'COLUMN' , N'XingMing' ----------------------表及字段描述信息------------------------ ---------------------------數(shù)據(jù)操作--------------------------- --插入數(shù)據(jù) insert into [表名] (字段1,字段2) values (100,'http://www.yongfa365.com/') --刪除數(shù)據(jù) delete from [表名] where [字段名]>100 --刪除重復(fù)記錄(效率低,適合少量數(shù)據(jù)操作,極不適合ACCESS使用) delete from [表名] where id not in (select max(id) from [表名] group by txtTitle,txtContent) --NOT IN 效率太低,20000條數(shù)據(jù)都讓access死掉了??尚械姆椒?#xff1a;建個臨時表,在需要判斷是否重復(fù)的字段上加主鍵,用insert into InfoTemp select * from Info將原表的數(shù)據(jù)導(dǎo)入臨時表, 數(shù)據(jù)庫可以自動篩去重復(fù)數(shù)據(jù),delete * from Info 清空原表,再用insert into Info select * from InfoTemp 將臨時表中數(shù)據(jù)導(dǎo)回原表 --更新數(shù)據(jù) update [表名] set [字段1] = 200,[字段2] = 'http://www.yongfa365.com/' where [字段三] = 'haiwa' --多表,用一個表更新另一個表(SQL Server版) update 表一 set 表一.a = 表二.b from 表一,表二 where 表一.id = 表二.id update 表一 set a = 表二.b from 表二 where id = 表二.id --多表,用一個表更新另一個表(ACCESS版) update 表一 inner join 表二 on 表一.id = 表二.id set 表一.a = 表二.b --查詢結(jié)果存儲到新表 select * into [新表表名] from [表名] --從table 表中取出從第 m 條到第 n 條的記錄:(not in 版本) select top n-m+1 * from [表名] where id not in (select top m-1 id from [表名]) --例:取出第31到第40條記錄 select top 10 * from [表名] where id not in (select top 30 id from [表名]) --從table 表中取出從第 m 條到第 n 條的記錄:(ROW_NUMBER 版本) SELECT * FROM ( SELECT ROW_NUMBER() OVER ( ORDER BY id DESC ) AS idx , * FROM dbo.Articles ) a WHERE a.idx BETWEEN m AND n --隨機(jī)取10條數(shù)據(jù),newid()是SQL數(shù)據(jù)庫里的一個函數(shù),跟數(shù)據(jù)庫里的ID沒關(guān) select top 10 * from [表名] order by newid() --隨機(jī)取10條數(shù)據(jù),如果是ACCESS數(shù)據(jù)庫用order by rnd(數(shù)字字段) select top 10 * from [表名] order by rnd(id) --連接查詢left join select * from Article left join Category on Article.CategoryID=Category.ID --查詢結(jié)果插入到另一個表的相關(guān)字段里(可以插入一個表的字段,也可以是一個數(shù)字常量) insert into desttbl(fld1, fld2) select fld1, 5 from srctbl --把當(dāng)前表里的數(shù)據(jù)再復(fù)制一份到這個表里 insert into [表名] select * from [表名] --SQL 2008支持這種插入方法,使用,隔開各行 DECLARE @Student TABLE (NO INT,Name NVARCHAR(4),Sex NVARCHAR(2),Age INT,Dept VARCHAR(2)) INSERT INTO @Student VALUES ( 95001,N'李勇',N'男',20,'CS'), ( 95002,N'劉晨',N'女',19,'IS'), ( 95003,N'王敏',N'女',18,'IS'), ( 95004,N'張立',N'男',19,'MA'), ( 96001,N'徐一',N'男',20,'IS'), ( 96002,N'張三',N'女',21,'CS'), ( 96003,N'李四',N'男',18,'IS') SELECT * FROM @Student --向數(shù)據(jù)庫中添加5000條數(shù)據(jù) declare @i int set @i=1 while @i<=5000 begin insert into users(userid,username) values(@i,'username' convert(varchar(255),@i)) set @i=@i+1 end go --統(tǒng)計SQL語句執(zhí)行時間 declare @dt datetime set @dt=getdate() --要執(zhí)行的SQL語句 select [語句執(zhí)行花費(fèi)時間(毫秒)]=datediff(ms,@dt,getdate()) --Case When語句 SELECT UserName,sex= CASE WHEN sex='男' THEN '男人' WHEN sex='女' THEN '女人' ELSE '哈哈' END ,Age FROM Users --having使用方法 --一個表中的UserName有很多重復(fù), --只顯示重復(fù)項: select UserName,COUNT(*) from Users group by UserName having count(*)>1 --不顯示重復(fù)項: select UserName,COUNT(*) from Users group by UserName having count(*)=1 ---------------------------數(shù)據(jù)操作---------------------------
總結(jié)
- 上一篇: 数学方面的一些思维训练
- 下一篇: emc整改措施及案例_EMC整改方案