1. 程式人生 > >接到新數據庫時,分析業務常用的SQL語句

接到新數據庫時,分析業務常用的SQL語句

增加 臨時 columns != question 名稱 信息 語句 insert

USE DataBaseName--清空當前GridView顯示,釋放內存:
SELECT GETDATE()

--數據庫關系圖
SELECT * FROM sysdiagrams

--列出所有表
SELECT * FROM information_schema.TABLES ORDER BY TABLE_NAME ASC

--顯示當前數據庫的所有列名
SELECT TABLE_NAME,COLUMN_NAME,DATA_TYPE FROM information_schema.columns WHERE TABLE_NAME LIKE %TableName%
--查找出指定的列名在哪些表中存在: SELECT * FROM information_schema.columns WHERE column_name =Col1 --查看表明細信息(數據全面,但不便快速瀏覽): EXEC sp_help Orders --查看表結構: SELECT sys.columns.name, sys.types.name AS types, sys.columns.max_length,sys.columns.is_nullable, (SELECT COUNT(*) FROM sys.identity_columns WHERE
sys.identity_columns.object_id = sys.columns.object_id AND sys.columns.column_id = sys.identity_columns.column_id) AS is_identity , (SELECT value FROM sys.extended_properties WHERE sys.extended_properties.major_id = sys.columns.object_id AND sys.extended_properties.minor_id = sys.columns.column_id) AS
description FROM sys.columns, sys.tables, sys.types WHERE sys.columns.object_id = sys.tables.object_id AND sys.columns.system_type_id=sys.types.system_type_id AND sys.tables.name=TableName AND sys.types.name != sysname -- 去除系統的名稱 ORDER BY sys.columns.name --顯示表字段的描述信息: SELECT objname,value FROM ::fn_listextendedproperty (NULL, user, dbo, table, XXX, column, DEFAULT) --查詢一個表有哪些存儲過程: EXEC sp_depends Hotel --顯示存儲過程的腳本內容: EXEC sp_helptext PPaymentLogGetInfo --查看當前數據庫中列名的默認值(不包含NULL值): SELECT a.name,OBJECT_NAME(a.parent_object_id) AS tableName, a.definition,a.is_system_named,b.name AS 列名 FROM sys.default_constraints a LEFT JOIN sys.columns b ON a.parent_object_id=b.object_id AND b.column_id=a.parent_column_id WHERE OBJECT_NAME(a.parent_object_id)=XXX --為字段增加描述信息: EXEC sp_addextendedproperty --不能重復添加,可以修改。 MS_Description, 描述字符串, user, dbo, table, TableName, column, ColumnName EXEC sp_dropextendedproperty MS_Description,user,dbo,table,TableName,column,ColumnName --刪除 EXEC sp_updateextendedproperty --要存在了對應的屬性才能修改; MS_Description, BookTitle, user, dbo, table, Books, column, Title --技巧:在創建表的時候一起執行增加屬性的存儲過程可以實現“同時”創建字符描述: --SQL Server - Can you add field descriptions in CREATE TABLE? - Stack Overflow --http://stackoverflow.com/questions/1985254/sql-server-can-you-add-field-descriptions-in-create-table --Example: CREATE TABLE TableName (id INT , name CHAR (20)) EXEC sp_addextendedproperty MS_Description, 描述字符串, user, dbo, table, TableName, column, id --查看結果: SELECT * FROM ::fn_listextendedproperty (NULL, user, dbo, table, TableName, column, DEFAULT) --臨時表 /* [註明] 本地臨時表的名稱以單個數字符號 (#) 打頭;它們僅對當前的用戶連接是可見的;當用戶從 sql server 實例斷開連接時被刪除。 全局臨時表的名稱以兩個數字符號 (##) 打頭,創建後對任何用戶都是可見的,當所有引用該表的用戶從 sql server 斷開連接時被刪除。 */ IF OBJECT_ID(tempdb..#temp) IS NOT NULL DROP TABLE #temp SELECT * INTO #temp FROM ShipTicketWs SELECT * FROM #tempIN -----------------------【刪除數據庫裏的所有表】----------------Begin----------------- --如果由於外鍵約束刪除table失敗,則先刪除所有約束: --/第1步**********刪除所有表的外鍵約束*************************/ DECLARE c1 CURSOR FOR SELECT alter table [ + OBJECT_NAME(parent_obj) + ] drop constraint [+ name + ]; FROM sysobjects WHERE xtype = F; OPEN c1; DECLARE @c1 VARCHAR(8000); FETCH NEXT FROM c1 INTO @c1; WHILE (@@fetch_status = 0) BEGIN EXEC(@c1); FETCH NEXT FROM c1 INTO @c1; END; CLOSE c1; DEALLOCATE c1; --/第2步**********刪除所有表*************************/ USE XXXXX --數據庫名(是要刪除表的所在的那個數據庫的名稱) GO DECLARE @sql VARCHAR(8000); WHILE (SELECT COUNT(*) FROM sysobjects WHERE type = U) > 0 BEGIN SELECT @sql = drop table + name FROM sysobjects WHERE (type = U) ORDER BY drop table + name; EXEC(@sql); END; --刪除所有的存儲過程同理可得,但不需要走第一步,只需將第2步的代碼的where type=‘U‘ 改成 where type=‘P‘,drop table 改成 drop Procedure。 --Sql Server 刪除所有表 - jiangys - 博客園 --http://www.cnblogs.com/jys509/p/3589468.html -----------------------【刪除數據庫裏的所有表】----------------End---------------------- -- 一、查看表名和對應的數據行數 --SQL Server查看所有表大小,所占空間 - niky - 博客園 --http://www.cnblogs.com/nikyxxx/archive/2012/10/08/2715423.html SELECT TOP 10 * FROM RequestData ORDER BY RequestDataId DESC SELECT COUNT(*) FROM RequestData WHERE UserAgent LIKE %Firefox% DELETE RequestData WHERE UserAgent LIKE %Firefox% select a.name as 表名,b.rows as 表數據行數 from sysobjects a inner join sysindexes b on a.id = b.id where a.type = u and b.indid in (0,1) --and a.name not like ‘t%‘ order by b.rows desc --二、查看表名和表占用空間信息 --判斷臨時表是否存在,存在則刪除重建 if exists(select 1 from tempdb..sysobjects where id=object_id(tempdb..#tabName) and xtype=u) drop table #tabName GO create table #tabName( tabname varchar(100), rowsNum varchar(100), reserved varchar(100), data varchar(100), index_size varchar(100), unused_size varchar(100) ) declare @name varchar(100) declare cur cursor for select name from sysobjects where xtype=u order by name open cur fetch next from cur into @name while @@fetch_status=0 begin insert into #tabName exec sp_spaceused @name --print @name fetch next from cur into @name end close cur deallocate cur select tabname as 表名,rowsNum as 表數據行數,reserved as 保留大小,data as 數據大小,index_size as 索引大小,unused_size as 未使用大小 from #tabName --where tabName not like ‘t%‘ order by cast(rowsNum as int) desc --系統存儲過程說明: --sp_spaceused 該存儲過程在系統數據庫master下。 exec sp_spaceused 表名 --該表占用空間信息 exec sp_spaceused --當前數據庫占用空間信息

接到新數據庫時,分析業務常用的SQL語句