Do you speak SQL?

GLAZъ (glazy@mail.ru)

Спецвыпуск Xakep, номер #028, стр. 028-044-1

Любому разработчику БДей известен язык SQL. Следовательно, ты тоже должен быть с ним знаком. Этот язык является повсеместно распространенным. Он надежный, очень мощный, но иногда является довольно сложным. К сожалению, описать все его возможности я не смогу, но общее знакомство с ним постараюсь провести.

Итак, SQL - это язык структурированных запросов... Ну и все :). А ты думал, я сейчас разражусь получасовой тирадой о том, какой замечательный язык? Нет, это ты и сам поймешь :). Поехали.

Проектирование таблиц

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

Таблицу ты придумал. Теперь на каждый столбец таблицы ты можешь наложить так называемые "ограничения целостности". Это фишка позволяет контролировать, какие значения будут храниться в столбцах. Есть такие ограничения: CHECK, NULL, DEFAULT, UNIQUE, PRIMARY KEY, FOREIGN KEY.

CHECK налагает логические условия. То есть могут вставляться значения, удовлетворяющие условию. Пример: вставляем значения цены не больше 50 и не меньше 10:

Price >=10 AND <=50 или price BETWEEN 10 and 50.

Здесь мы указали константы, а можно указать и значение столбцов в условии. Просто вместо констант подставляем название столбца.

NULL позволяет хранить в ячейке неопределенное значение. NULL значит, что в этой ячейке может ничего не храниться. Т.е. нельзя вставить строку, в которой содержатся пустые поля, если не разрешено хранение NULL.

DEFAULT вставляет значение по умолчанию, если при вставке не указано содержание ячейки. UNIQUE обеспечивает уникальность значения в столбце.

Про PRIMARY и FOREIGN KEY я рассказывал в предыдущей статье. Так что иди читать, если пропустил. Кстати, как ты помнишь, PRIMARY KEY всегда должен быть уникальным.

Типы данных

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

Все типы (используемые в MySQL) можно разделить на следующие группы:

- целочисленные;

- нецелочисленные;

- дата и время;

- двоичные;

- строковые;

- тестовые;

Остановимся на каждом подробнее.

Целочисленные предназначены для хранения данных, над которыми ожидается проведение стандартных арифметических операций, и чисел, не имеющих запятой. Существуют такие целочисленные типы:

- INT[(длина)] [UNSIGNED] - целые числа со знаком. 4 байта.

Есть еще BIGINT, SMALLINT, MEDIUMINT, TINYINT. Их размеры, соответственно, восемь, два, три, один байт. Синтаксис одинаков.

Нецелочисленные данные служат для хранения чисел с плавающей точкой. К ним относятся типы:

- DECIMAL (макс. длина, кол-во цифр после запятой) - десятичное число с плавающей точкой.

- FLOAT [(макс. длина, число десят. чисел)] - число одинарной точности.

Содержание  Вперед на стр. 028-044-2
Выпуски журнала "СПЕЦ Xakep"
Cпец Хакер #01Cпец Хакер #02Cпец Хакер #03Cпец Хакер #04Cпец Хакер #05Cпец Хакер #06Cпец Хакер #07Cпец Хакер #08Cпец Хакер #09Cпец Хакер #10Cпец Хакер #11Cпец Хакер #12Cпец Хакер #13Cпец Хакер #14Cпец Хакер #15Cпец Хакер #16Cпец Хакер #17Cпец Хакер #18Cпец Хакер #19Cпец Хакер #20Cпец Хакер #21Cпец Хакер #22Cпец Хакер #23Cпец Хакер #24Cпец Хакер #25Cпец Хакер #26Cпец Хакер #27Cпец Хакер #28Cпец Хакер #29Cпец Хакер #30Cпец Хакер #31Cпец Хакер #32Cпец Хакер #33Cпец Хакер #34Cпец Хакер #35Cпец Хакер #36Cпец Хакер #37Cпец Хакер #38Cпец Хакер #39Cпец Хакер #40Cпец Хакер #41Cпец Хакер #42Cпец Хакер #43Cпец Хакер #44Cпец Хакер #45Cпец Хакер #46Cпец Хакер #47Cпец Хакер #48Cпец Хакер #49Cпец Хакер #50Cпец Хакер #51Cпец Хакер #52Cпец Хакер #53Cпец Хакер #54Cпец Хакер #55Cпец Хакер #56Cпец Хакер #57Cпец Хакер #58Cпец Хакер #59Cпец Хакер #60Cпец Хакер #61Cпец Хакер #62Cпец Хакер #63Cпец Хакер #64Cпец Хакер #65Cпец Хакер #66Cпец Хакер #67Cпец Хакер #68Cпец Хакер #69Cпец Хакер #70Cпец Хакер #71Cпец Хакер #72Cпец Хакер #73Cпец Хакер #74Cпец Хакер #75