记录生活
标签 Tag : SQL

关系代数、各种join的区别[转]

<Category: 数据库> 发表评论

使用关系代数合并数据
1
合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的。
在关系代数的形式化语言中:
 用表、或者数据集合表示关系或者实体。
 用行表示元组。
 用列表示属性。
关系代数包含以下8个关系运算符
 选取――返回满足指定条件的行。
 投影――从数据集合中返回指定的列。
 笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。
阅读这篇文章的其余部分 »

本文来自: 关系代数、各种join的区别[转]

创建测试数据的存储过程

<Category: SQL Server> 1 条评论

screenshot
阅读这篇文章的其余部分 »

本文来自: 创建测试数据的存储过程

查看数据库或表的空间占用情况

<Category: SQL Server> 发表评论

--查询数据库或表的空间分配情况

use   IOneDatabase
  exec   sp_spaceused     --查询数据库中的空间分配情况   

  exec   sp_spaceused   N'app_image'     --查看表的空间占用情况

---------------------------------------------------------------------------

if exists (select * from sysobjects where id = object_id(N'[dbo].[s_SpaceUsed]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[s_SpaceUsed]
GO

Create procedure s_SpaceUsed
@SourceDB	varchar(128)
as
/*
exec s_SpaceUsed 'mydb'
*/

set nocount on

declare @ varchar(128)
	create table #tables(name varchar(128))

	select @ = 'insert #tables select TABLE_NAME from ' + @SourceDB + '.INFORMATION_SCHEMA.TABLES where TABLE_TYPE = ''BASE TABLE'''
	exec (@)

	create table #SpaceUsed (name varchar(128), rows varchar(11), reserved varchar(18), data varchar(18), index_size varchar(18), unused varchar(18))
	declare @name varchar(128)
	select @name = ''
	while exists (select * from #tables where name > @name)
	begin
		select @name = min(name) from #tables where name > @name
		select @ = 'exec ' + @SourceDB + '..sp_executesql N''insert #SpaceUsed exec sp_spaceused ' + @name + ''''
		exec (@)
	end
	select * from #SpaceUsed
	drop table #tables
	drop table #SpaceUsed
go

------------------------------------

exec s_SpaceUsed 'IOneDatabase'

Reference:http://msdn.microsoft.com/en-us/library/ms188776.aspx

http://www.nigelrivett.net/SQLAdmin/SpaceUsedAllTables.html

本文来自: 查看数据库或表的空间占用情况