пятница, 28 января 2011 г.

Основы SQL – DML – DELETE

Продолжаю серию статей “Основы SQL”. В предыдущих сериях:
В этой статье я завершу рассказ про операторы DML, изменяющие данные - речь пойдет про DELETE – оператор, с помощью которого можно удалить одну или много строк в таблице, или много строк во многих таблицах… главное – не слишком увлекаться :)

Удаление строк

Удаление строк более простая операция чем все остальные в DML, по большому счету, все сказанное относительно UPDATE применимо и к DELETE, с той лишь разницей, что данные удаляются, а не модифицируются, и синтаксис немного другой:
DELETE Phones WHERE PersonID = 1 AND Phone = '100-1'
В этом примере происходит удаление одной строки (если такая есть), потому что, как вы помните, “PersonID” и “Phone” являются составным первичным ключом.

четверг, 27 января 2011 г.

Основы SQL – DML – UPDATE

Продолжаю серию статей “Основы SQL”. В предыдущих сериях:
В прошлый раз я немного рассказал про оператор INSERT (куда же без него – без первоначальных данных применять остальные операторы DML не имеет смысла).
Сейчас речь пойдет про UPDATE – оператор, позволяющий модифицировать существующие данные.

Модификация одной строки

Если для оператора INSERT существует разный синтаксис для вставки одной строки и множества строк, то для UPDATE синтаксис одинаковый и в простейшем случае выглядит так:
UPDATE Persons SET LastName = 'Петров' WHERE PersonID = 1

воскресенье, 16 января 2011 г.

Основы SQL – DML – INSERT и другие

Ранее в этой серии статей мы поговорили об SQL вообще и нормальных формах, в частности. Затем продолжили разговор о DDL и нескольких вариантах рефакторинга, с ним связанных. В этой статье речь пойдет о DML (Data Manipulation Language), то есть о тех базовых возможностях, которые предоставляет SQL (строго говоря, Transact-SQL) для обработки данных.

Когда-то давно, на университетском курсе по “Базам данных”, на котором нам немного рассказывали про FoxPro (я же говорил, что давно :)), преподаватель рассказывал про способы получения данных и их обработки. Как сейчас помню, он сказал фразу “а еще есть мощный язык для обработки данных, он называется SQL” и, после эффектной паузы, добавил – “там есть четыре инструкции – SELECT, INSERT, UPDATE и DELETE, но рассказать что-то еще у меня не хватит времени”.

Честно говоря, только через пару лет, на первой работе, я понял две вещи:
  1. На этом курсе я практически ничего полезного так и не узнал.
  2. Программирование БД может быть не менее увлекательным, чем программирование на высокоуровневых языках.
Зато сейчас у меня немного больше времени, чем у моего преподавателя, и я постараюсь рассказать про DML более подробно и, в то же время, доступно.

суббота, 8 января 2011 г.

Основы SQL - DDL и рефакторинг БД

Это вторая статья в серии статей “Основы SQL”. В ней я продолжу разговор о DDL. Также я покажу, каким образом может выглядеть рефакторинг БД (как с точки зрения нормализации, так и с точки зрения денормализации). Да, лично я считаю, что рефакторинг (можно назвать это модным словом continuous design) вполне применим к БД.

Конечно, в нашем распоряжении (пока) нет инструментов для рефакторинга SQL столь же мощных, как для C# или Java. Однако, в большинстве случаев, рефакторинг БД случается редко. Поэтому часто достаточно скриптов, написанных вручную или немного сгенерированных.
Но сначала немного о том, что делает мои трудовые будни несколько комфортнее, когда речь идет об обновлениях БД (повторюсь, речь, как и ранее, идет о MS SQL Server, хотя принципы могут быть применимы и к другим СУБД).

четверг, 6 января 2011 г.

Основы SQL - первое знакомство

Вступление

Этой статьей я начинаю серию о SQL (Structured Query Language) для разработчиков, которые еще не начали или недавно начали осваивать SQL как средство работы с БД (базой данных). Сразу хочу сказать, что эта статья будет наполнена, в основном, базовыми понятиями, историей и немного философией, а разбор конкретных задач, проблем и решений будет далее.

Основная причина, по которой мне захотелось начать подобную серию статей – часто встречающиеся ошибки, которые допускают даже опытные разработчики на высокоуровневых языках программирования, когда начинают использовать SQL.

Как вам, например, такой подход – чтобы получить первые 100 записей, сначала несколько сотен тысяч записей считываются в DataSet (или объектную модель), а потом на экран в цикле выводятся первые 100? И речь здесь, к сожалению, не о выдуманной ситуации, а о реальном коде. Причем авторы кода не любимые многими абстрактные “индусы”, а, в том числе, наши соотечественники. Скажу по секрету, приходилось сталкиваться с исходным кодом многих проектов разных контор – проблемы с ним мало зависят от национальности разработчиков, скорее от уровня и ответственности конкретных исполнителей и отношения к качеству внутри компании.