Уроки PHP, веб-студия
LIDERIT.ru
PHP без БД и MySQL
Переменные:
Массивы:
Функции:
Передача переменных
Глобальный массив
Инструкция INCLUDE
Создание SQL-оператора
SQL-оператор может быть как очень простым (состоящим из всего лишь нескольких слов), так и очень сложным. Имея под рукой описание синтаксиса, можно смело приступать к созданию оператора.
Ниже показан пример оператора, созданного на основе синтаксиса определения таблицы. Этот оператор CREATE TABLE создает таблицу под названием Parts (Части):
/* Создает таблицу Parts */CREATE TABLE Parts (
(
PartID INT NOT NULL,
PartName VARCHAR(40) NOT NULL,
CatID INT NOT NULL,
PRIMARY KEY (PartID)
)
ENGINE=MYISAM;
Рассмотрим этот код:
Операторе CREATE TABLE представляет собой одиночный SQL-оператор. Он заканчивается символом точки с запятой, который еще иногда называют терминатором. Когда доступ к базе данных MySQL получается напрямую (например, при помощи клиентской утилиты
mysql), все SQL-операторы обязательно должны завершаться точкой с запятой.
Как уже упоминалось ранее, язык SQL не чувствителен к лишним пробелам, символам табуляции и символам разрыва строки. Однако SQL-операторы обычно пишутся так, чтобы их было легко читать, и чтобы было легко понять, какие элементы они содержат.
Например, элементы таблицы отделяются отступами, а открывающая и закрывающая скобки размещаются на отдельных строках.
Первая строка кода в данном операторе CREATE TABLE выглядит так:
/* Создает таблицу Parts */
Эта строка представляет собой всего-навсего комментарий и MySQL не обрабатывается. Добавление комментариев, объясняющих роль той или иной части кода или содержащих другую важную информацию, никогда не
бывает лишним, могут значительно упрощать отладку кода.
Следующая строка кода - это фактически первая строка самого оператора CREATE TABLE:
CREATE TABLE Parts
Эта строка состоит из ключевых слов CREATE TABLE и имени новой таблицы (Parts). Если вы посмотрите на соответствующую строку в синтаксисе, то сможете увидеть, как формируется конструкция CREATE TABLE:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] <имя_таблицы>
Обратите внимание, что необязательных ключевых слов TEMPORARY и IF NOT EXISTS в данной конструкции нет: в ней присутствуют только обязательные элементы. Теперь взгляните на определения <элемент_таблицы>:
PartID INT NOT NULL,
PartName VARCHAR(40) NOT NULL,
CatID INT NOT NULL,
PRIMARY KEY (PartID)
)
В этой части оператора CREATE TABLE содержатся целых четыре компонента <элемент_таблицы>.
Первые три из их представляют собой определения столбцов, а последний - определение первичного ключа.
Все они заключены в круглые скобки и отделены друг от друга запятой. Если вы сравните эту часть оператора CREATE TABLE с синтаксисом, вы сможете увидеть, как заполнители представляют каждый компонент:
(<элемент_таблицы>, <элемент_таблицы>, <элемент_таблицы>, <элемент_таблицы>)
Однако, как вы наверняка помните, это еще не все, потому что согласно синтаксису каждый заполнитель может включать три опции, а именно: определение столбца, определение первичного ключа и определение индекса.
Чтобы понять, о чем идет речь, возьмем одно из определений столбцов в рассматриваемом операторе CREATE TABLE и сравним его с синтаксисом:
PartID INT NOT NULL,
В данном случае столбцу присваивается имя PartID, назначается тип данных INT (чтобы он мог содержать до четырех цифр) и запрещается хранить нулевые (NULL) значения. Если вы сравните эту строку с синтаксисом, то поймете, почему
определение столбца имеет следующую структуру:
<имя_столбца> <тип> [NOT NULL | NULL] [DEFAULT <значение>] [AUTO_INCREMENT]
Как видите, PartID - это значение, используемое вместо заполнителя <имя_ столбца>, INT - это значение, используемое вместо заполнителя <тип>, a NOT NULL - единственный используемый здесь необязательный элемент.
Заполнитель <тип> ссылается на тип данных столбца, который в данном случае является INT. Также обратите внимание на то, что данное определение <элемент_таблицы> заканчивается запятой, потому что за ним следует еще одно определение
<элемент_таблицы>.
Теперь посмотрим на определение первичного ключа:
PRIMARY KEY (PartID)
Эта строка содержит только ключевые слова PRIMARY KEY и одно имя столбца. Поскольку указано только одно имя столбца, запятая после него не нужна. Однако в круглые скобки это имя столбца все равно должно быть заключено обязательно.
Также поскольку данное определение <элемент_таблицы> является последним, ставить запятую после определения первичного ключа не нужно. Сравните его с синтаксисом:
PRIMARY KEY (<имя_столбца> [{, <имя_столбца>}...])
Никаких необязательных элементов в определении первичного ключа быть не может; здесь могут присутствовать только те элементы, которые имеют существенное значение для определения первичного ключа.
Теперь посмотрим на последнюю строку в нашем операторе CREATE TABLE:
ENGINE=MYISAM;
В этой части оператора определяется тип создаваемой таблицы. Если вы сравните ее с синтаксисом, то увидите, что была просто выбрана одна из доступных опций:
[ENGINE = {BDB | MEMORY | ISAM | INNODB | MERGE | MRG_MYISAM | MYISAM}]
Как показывает синтаксис, вся эта строка кода является необязательной. Однако если она все-таки добавляется к оператору, она обязательно должна включать конструкцию ENGINE= и одну из перечисленных опций (никакие другие опции после ENGINE= указывать нельзя).
Как видно из этого примера, создавая SQL-оператор, следует просто придерживаться структуры, определенной для таких операторов в синтаксисе. После выполнения показанного выше оператора CREATE TABLE в вашу базу данных будет добавлена таблица Parts. Дальше вы сможете добавлять в эту таблицу данные, получать к ним доступ и изменять их, если будет необходимо.
Кратко о SGL
Операторы
Ещё о SGL...
PHP+MySQL
Создаем БД и таблицы
Cоединяемся с БД
Вставка данных
Выборка данных
Вывод данных
Обновление данных
Операции в SQL
Функции в SQL
Экспорт, импорт
Транзакция