SQL и расширения

Сколько места занимают таблицы?

Информация о дисковом пространстве, используемом таблицами текущей базы данных.

DECLARE @TableInfo TABLE (
	table_name sysname,
	row_count int,
	reserved_size_kb nvarchar(50),
	data_size_kb nvarchar(50),
	index_size_kb nvarchar(50),
	unused_size_kb nvarchar(50)
)
 
INSERT INTO @TableInfo
EXEC sp_MSforeachtable 'sp_spaceused ''?'''
 
UPDATE @TableInfo 
SET 
	data_size_kb     = replace(data_size_kb, 'KB', ''),
	reserved_size_kb = replace(reserved_size_kb, 'KB', ''),
	index_size_kb    = replace(index_size_kb, 'KB', ''),
	unused_size_kb   = replace(unused_size_kb, 'KB', '')
 
SELECT * FROM @TableInfo 
ORDER BY convert(int, data_size_kb) DESC

Работа с датами. MS SQL 2005

Сюда складываю полезные функции, "шпаргалки" и другие тонкие моменты при работе с датами на MS SQL Server.

Псевдослучайная последовательность в MSSQL

Использование встроенной функции rand() в запросах чревато проблемой получения последовательности одинаковых чисел. Например

Пронумеровать записи. Пример для MSSQL 2005

Как пронумеровать записи в таблице в одном ее поле по порядку следования другого поля. Пример для MSSQL 2005.

UPDATE table1
  SET field1 = T2.rownum
  FROM table1 T1 INNER JOIN 
      (SELECT ROW_NUMBER() OVER (ORDER BY field2 ASC) AS rownum, field2 
         FROM table1
      ) T2 
      ON T1.field2 = T2.field2

Порядок нумерации дубликатов не определен, как правило это будет физическое следование записей.

Тестовый пример:

Константы в SQL

Красиво.
CREATE VIEW constant (pi, e, phi)
AS SELECT 3.141592653, 2.718281828, 1.618033988

Типы соединений в SQL. Шпаргалка

Лучше один раз увидеть, чем 100 раз услышать. Для чего служат различные виды соединений таблиц в SQL-запросах проще всего запомнить на практике.

RSS-материал