04.07.2011 Реляционное деление в SQL Рассмотрим следующую задачу. Определить производителей, которые выпускают модели всех типов (схема "Компьютерная фирма"). Ключевым словом здесь является "всех", т.е. производитель в таблице Product должен иметь модели каждого типа, т.е. и PC, и Laptop, и Printer. Как раз для решения подобных задач в реляционную алгебру Коддом была введена специальная операция реляционного деления. С помощью этой операции наша задача решается очень просто: Product[maker, type] DIVIDE BY Product[type] Автор: Моисеенко С.И.
22.03.2011 Как подсчитать накопительный итог на SQL? Часто бывает необходимо для каждой строки упорядоченной таблицы подсчитать сумму значений числового столбца из строк, выше- или нижестоящих по порядку, включая данную. Это и есть задача расчета накопительного итога. Автор: Красовский Е.А.
21.12.2010 Microsoft готовит «беcсерверный» вариант SQL Server Microsoft запустила публичный опрос, в котором предлагает всем желающим поучаствовать в поиске названия для новой редакции (или нового режима) SQL Server.
Новый режим SQL Server носит определение “server-less” (беcсерверный). Автор: XaocCPS
11.10.2010MySQL и FULL JOIN
Полное внешнее соединение (FULL JOIN) не поддерживается в MySQL. Можно считать, что это – «избыточная» операция, т.к. она представляется через объединение левого и правого внешних соединений. Автор: Моисеенко С.И. <
24.02.2010Заметки о типах данных: CHAR и VARCHAR
Недавно мне довелось искать ошибку в решении, которое содержало такое преобразование: CAST(model AS VARCHAR) Те, кто изучил схему «Компьютеры», подумают о бессмысленности преобразования типа в тот же самый тип (столбец model определен как VARCHAR(50)). Однако именно это преобразование и делало запрос неверным. Дело в том, что, если размер типа при преобразовании не указан, то в SQL Server принимается значение по умолчанию, которое для VARCHAR равно 30. Автор: Моисеенко С.И. <
27.01.2010Функция LEN(), концевые пробелы и уникальность
Недавно я столкнулся с тем, что не смог добавить значения типа VARCHAR, отличающиеся только концевым пробелом в столбец составного первичного ключа (SQL Server). Возможно, этот факт для кого-то является очевидным, но мне показалось странным, что в принципе разные значения считаются дубликатами. Для типа CHAR(n), который имеет фиксированную длину, все понятно, т.к. короткие строки дополняются пробелами до длины n. Но концевой пробел значениия типа VARCHAR является как бы обычным символом. Автор: Моисеенко С.И. <
30.09.2009Оператор PIVOT в Transact-SQL
Можно сказать, что pivot-таблица в SQL – это одноуровневая сводная таблица. Оператор PIVOT не является стандартным (я не уверен, что он когда-нибудь будет стандартизован ввиду нереляционной природы pivot-таблицы), поэтому я буду использовать в примерах его реализацию в языке T-SQL (SQL Server 2005/2008). Автор: Моисеенко С.И. <
09.04.2009Использование SQLite в .NET приложениях
В некоторых проектах достаточно часто возникает необходимость в хранении данных, объем которых уже нельзя назвать маленьким, но в тоже время использовать какую-либо СУБД слишком накладно из-за сложности развертывания приложения. И тут на помощь приходит такая прекрасная вещь как SQLite – компактная встраиваемая база данных.
Автор: MaxFX <
15.02.2009Как добавить новый столбец в таблицу между существующими столбцами?
Этот наивный с точки зрения реляционной модели вопрос, тем не менее, имеет некоторый смысл с точки зрения языка SQL. Я говорю "наивный", поскольку по определению атрибуты отношения не упорядочены, и обращение к значениям атрибута выполняется по его имени, но не по позиции. Что же касается языка SQL, то столбцы в таблице имеют порядок, который задается в операторе CREATE TABLE. Новый же столбец, который добавляется с помощью оператора ALTER TABLE, становится последним в таблице. Автор: Моисеенко С.И. <
12.02.2009Проектирование баз данных. Нормализация.
Нормализация данных — одно из самых важных понятий и концепций реляционной системы. Нормализованная система сводит к минимуму количество избыточных данных, при этом сохраняя их целостность. Поэтому, в более сложных системах всегда нужно уметь найти компромисс между степенью нормализации и производительности. В большинстве же случаев, вполне хватает следования первым трем нормальным формам, которые и рассматриваются в этой статье. Автор: Ueasley <
02.12.2008Разворачивание широкой таблицы в столбец
Есть сущность, которая характеризуется огромным и часто переменным числом параметров. Задача хранить эти сущности да еще и так чтоб поиск тоже можно было вести желательно еще и с построением индекса.
Автор: developer <
25.11.2008Мифы SQL
Многие разработчики с немалым опытом разработки на любых императивных языках свято верят в то, что SQL - это то же самое. Только синтаксис другой. После написания нескольких запросов для вытаскивания данных в свой сервер приложений начинают рождаться мифы о БД. В статье рассматриваются двенадцать распространенных мифов на примере Oracle. Автор: Краснюк Петр <
25.06.2008Производительность SELECT-запросов
Помнится, когда сообщенство SQL только появилось, я высказался в том духе, что писать надо про темы сложные и интересные, однако, получил кучу минусов. Оказалось, что на хабре обитает множество неофитов, для которых любая тема — сложная и интересная.
<