Качай мускулы

Степан Ильин aka Step

Хакер, номер #075, стр. 075-028-1

(step@real.xakep.ru)

Все о SQL

Мы уже сотню раз затрагивали тему SQL-injection’а. Разжевали материал от и до, разложили всю нужную инфу по полочкам. Ты наверняка уже усвоил основные принципы и понятия. Но далеко ли ты продвинулся в данном нами направлении? Можешь сейчас взять и сходу написать такой SQL-запрос, который выдаст тебе конкретную инфу с подопытного сервера? Причем не все подряд, как ты, возможно, подумал, а только те записи и поля, которые реально представляют для тебя интерес? То-то и оно, что вряд ли… И это определенно стоит исправить.

Что такое SQL?

Аббревиатура SQL произошла от словосочетания Structured Query Language (структурированный язык запросов). Одни называется его «сиквелом», вторые – «скулем», другие вообще не пойми как. Но смысл его от этого не меняется. Эта воистину изумительная разработка корпорации IBM с самого начала своего развития стала приоритетным направлением в сфере баз данных, а сейчас, по сути, является неотъемлемой частью любой СУБД. И это не лживый пафос. Возьмем, к примеру, MS Access. Шустрые умельцы из Microsoft’а быстро осознали всю прелесть языка SQL и тут же сварганили свою собственную программу для работы с базами данных. А сейчас, несмотря на всю свою примитивность и тормознутость, она установлена практически на любой домашней и офисной машине. С другой стороны, без SQL’а не обошлись и в небезызвестном Oracle - дорогостоящем средстве, с которым работают исключительно профи. Да и обойтись едва ли могли. Ровно так же, как и в слегка приевшихся MySQL и PostgreSQL, а также в экзотике типа Informix, MS SQL Server, Sybase.

Здесь, правда, стоит сделать оговорку. Несмотря на то что SQL был принят сначала американским (ANSI), а затем и европейским (ISO) институтами стандартов, полностью стандартизированным языком его не назовешь. Быстрое и независимое развитие сразу нескольких мощных СУБД привело к серьезной несогласованности. Поэтому любая современная система имеет некоторое расширение SQL, своего рода доработку имеющегося стандарта. Хотя в любом случае синтаксис основных команд остается единым.

Реляционные базы данных

Конечно, хотелось бы сразу взять быка за рога и приступить к освоению этих самых команд. Но без осознания такого важного понятия, как реляционная база данных, ты далеко не уедешь. Поэтому для начала определимся именно с ним. Посмотри на таблицу ниже.

Здесь каждая строка – это запись о некотором объекте (покупателе), которая описывает его по ряду явно заданных характеристик. Характеристики, по которым происходит описание, задаются столбцами или, иначе говоря, полями (Имя, Фамилия, Адрес, Город). В результате мы имеем двухмерную таблицу (строка-столбец), которая полноценно описывает некоторую структуру (информацию о покупателе). Такое описание является фундаментальным понятием реляционных баз данных. Последние состоят именно из таких таблиц.

Для большей достоверности примера добавим еще одну таблицу – информацию о заказах. Как ты, вероятно, заметил, она напрямую связана с первой. Само собой, сделано это не забавы ради, а намеренно - для того, чтобы избежать дублирования данных. Причем реализовано это крайне просто. Каждому клиенту магазина присваивается специальный ID-номер. Он уникален и нигде не повторяется. Во время описания заказа нам достаточно сослаться на него и при этом быть уверенными, что каждой записи найдется точное описание заказчика. Таким образом, мы не только устраняем возможную избыточность информации, но и сводим к нулю вероятность ввода некорректных данных.

Содержание  Вперед на стр. 075-028-2
Выпуски журнала "Xakep"
Журнал Хакер. Содержание номера #001Журнал Хакер. Содержание номера #002Журнал Хакер. Содержание номера #003Журнал Хакер. Содержание номера #004Журнал Хакер. Содержание номера #005Журнал Хакер. Содержание номера #006Журнал Хакер. Содержание номера #007Журнал Хакер. Содержание номера #008Журнал Хакер. Содержание номера #009Журнал Хакер. Содержание номера #010Журнал Хакер. Содержание номера #011Журнал Хакер. Содержание номера #012Журнал Хакер. Содержание номера #013Журнал Хакер. Содержание номера #014Журнал Хакер. Содержание номера #015Журнал Хакер. Содержание номера #016Журнал Хакер. Содержание номера #017Журнал Хакер. Содержание номера #018Журнал Хакер. Содержание номера #019Журнал Хакер. Содержание номера #020Журнал Хакер. Содержание номера #021Журнал Хакер. Содержание номера #022Журнал Хакер. Содержание номера #023Журнал Хакер. Содержание номера #024Журнал Хакер. Содержание номера #025Журнал Хакер. Содержание номера #026Журнал Хакер. Содержание номера #027Журнал Хакер. Содержание номера #028Журнал Хакер. Содержание номера #029Журнал Хакер. Содержание номера #030Журнал Хакер. Содержание номера #031Журнал Хакер. Содержание номера #032Журнал Хакер. Содержание номера #033Журнал Хакер. Содержание номера #034Журнал Хакер. Содержание номера #035Журнал Хакер. Содержание номера #036Журнал Хакер. Содержание номера #037Журнал Хакер. Содержание номера #038Журнал Хакер. Содержание номера #039Журнал Хакер. Содержание номера #040Журнал Хакер. Содержание номера #041Журнал Хакер. Содержание номера #042Журнал Хакер. Содержание номера #043Журнал Хакер. Содержание номера #044Журнал Хакер. Содержание номера #045Журнал Хакер. Содержание номера #046Журнал Хакер. Содержание номера #047Журнал Хакер. Содержание номера #048Журнал Хакер. Содержание номера #049Журнал Хакер. Содержание номера #050Журнал Хакер. Содержание номера #051Журнал Хакер. Содержание номера #052Журнал Хакер. Содержание номера #053Журнал Хакер. Содержание номера #054Журнал Хакер. Содержание номера #055Журнал Хакер. Содержание номера #056Журнал Хакер. Содержание номера #057Журнал Хакер. Содержание номера #058Журнал Хакер. Содержание номера #059Журнал Хакер. Содержание номера #060Журнал Хакер. Содержание номера #061Журнал Хакер. Содержание номера #062Журнал Хакер. Содержание номера #063Журнал Хакер. Содержание номера #064Журнал Хакер. Содержание номера #065Журнал Хакер. Содержание номера #066Журнал Хакер. Содержание номера #067Журнал Хакер. Содержание номера #068Журнал Хакер. Содержание номера #069Журнал Хакер. Содержание номера #070Журнал Хакер. Содержание номера #071Журнал Хакер. Содержание номера #072Журнал Хакер. Содержание номера #073Журнал Хакер. Содержание номера #074Журнал Хакер. Содержание номера #075Журнал Хакер. Содержание номера #076Журнал Хакер. Содержание номера #077Журнал Хакер. Содержание номера #078Журнал Хакер. Содержание номера #079Журнал Хакер. Содержание номера #080Журнал Хакер. Содержание номера #081Журнал Хакер. Содержание номера #082Журнал Хакер. Содержание номера #083Журнал Хакер. Содержание номера #084Журнал Хакер. Содержание номера #085Журнал Хакер. Содержание номера #086Журнал Хакер. Содержание номера #087Журнал Хакер. Содержание номера #088Журнал Хакер. Содержание номера #089Журнал Хакер. Содержание номера #090Журнал Хакер. Содержание номера #091Журнал Хакер. Содержание номера #092Журнал Хакер. Содержание номера #093Журнал Хакер. Содержание номера #094Журнал Хакер. Содержание номера #095Журнал Хакер. Содержание номера #096Журнал Хакер. Содержание номера #097Журнал Хакер. Содержание номера #098Журнал Хакер. Содержание номера #099Журнал Хакер. Содержание номера #100Журнал Хакер. Содержание номера #101Журнал Хакер. Содержание номера #102Журнал Хакер. Содержание номера #103Журнал Хакер. Содержание номера #104Журнал Хакер. Содержание номера #105Журнал Хакер. Содержание номера #106Журнал Хакер. Содержание номера #107Журнал Хакер. Содержание номера #108Журнал Хакер. Содержание номера #109Журнал Хакер. Содержание номера #110Журнал Хакер. Содержание номера #111Журнал Хакер. Содержание номера #112Журнал Хакер. Содержание номера #113Журнал Хакер. Содержание номера #114