Качай мускулыСтепан Ильин 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 |


















































































































