Вступление:
Добро пожаловать в заключительную главу этой статьи. Если вы зашли так далеко, вы должны четко понимать, как использовать ColdFusion для создания динамического сайта. В этой части я расскажу код, который вы найдете внутри тегов <CFQUERY>, и более продвинутый SQL.
1. Добавление данных
Для добавления данных в вашу базу данных вы будете использовать оператор INSERT SQL.
Figure 1. The INSERT Statement
INSERT INTO Friends(Name, Sex, FavMovie)
VALUES (Chris, Male, Braveheart)
Как это работает, вы указываете таблицу, в которую вы хотите вставить, в нашем случае «Друзья», а затем столбцы в скобках. На следующей строке вы указываете значения почти таким же образом. Порядок перечисления значений должен соответствовать порядку, в котором перечислены столбцы. Вы также можете сделать этот оператор вставки динамическим.
Figure 2. A Dynamic INSERT Statement
INSERT INTO Friends(Name, Sex, FavMovie)
VALUES (#name#, #sex#, #movie#)
Как было показано в первой части этой статьи, любой аспект оператора SQL можно заменить вводом формы, это верно для оператора INSERT. Большинство веб-сайтов, управляемых базой данных, имеют раздел администратора, использующий динамические операторы, подобные этому, для добавления нового контента.
2. Изменение данных
Чтобы изменить существующие данные, вы должны использовать инструкцию UPDATE.
Figure 3. The UPDATE Statement
UPDATE Friends
SET Age = '21'
WHERE Name like "Chris"
Как это работает, вы сначала указываете таблицу, которую хотите обновить, в нашем случае «Друзья», затем выбираете значение с помощью ключевого слова SET. Если вы хотите обновить несколько значений, вы должны разделить каждое запятой, например, SET Age = ’21’, FavMovie = ‘The Patriot’. Наконец, мы включаем предложение where, без него все строки будут обновлены. Оператор UPDATE очень полезен, например, в нашей базе данных друзей мы будем использовать его для изменения чьего-либо возраста, когда у него день рождения.
3. Удаление данных
Вы всегда должны быть очень осторожны при удалении данных. Опечатка или опечатка, и вы можете иметь пустую базу данных.
Figure 4. The DELETE Statement
DELETE FROM Friends
WHERE Name = "Tim"
Допустим, вы поссорились с другом. Вы можете удалить их имя из базы данных ваших друзей, используя приведенное выше утверждение. Опять же, первое, что указано, это имя таблицы, за которым следует необязательный оператор WHERE. Однако помните, что хотя оператор where является необязательным, без него все в таблице будет стерто.
4. Отдельное ключевое слово
Иногда при работе с базой данных вы не хотите возвращать повторяющиеся значения. Например, при работе с базой данных подержанных автомобилей я хотел динамически создать форму выбора для марки автомобиля на веб-сайте. Если бы я не использовал отдельное ключевое слово, список выбора был бы очень длинным, у него была бы 1 опция для каждого автомобиля в базе данных. Использование отдельного ключевого слова в моем операторе SELECT ограничивало вывод каждой отдельной маркой в базе данных.
Figure 5. The DISTINCT Keyword
Select DISTINCT Make
FROM Used
Как вы можете видеть, он выглядит как обычный оператор SELECT, только с добавленным ключевым словом DISTINCT, чтобы исключить дублирующиеся значения.
5. Псевдонимы столбцов
Может наступить время, когда вы захотите использовать псевдонимы при обращении к вашим столбцам. Псевдоним — это просто имя, которое вы назначаете столбцу для облегчения обращения к нему, он никоим образом не изменяет вашу базу данных, он только меняет то, как интерпретатор CF видит столбец.
Figure 6. Aliases
<CFQUERY DATASOURCE = "Friends" name = "Query1">
Select DISTINCT FavMovie as Movie
From Friends
</CFQUERY>
.
.
.
<CFOUTPUT QUERY = "Query1">
#Movie#
</CFOUTPUT>
То, что сделало бы вышеизложенное, это вернуть отдельный список любимых фильмов ваших друзей. Единственное отличие, которое он имеет с обычным оператором select, заключается в том, что на странице мы можем ссылаться на столбец FavMovie как на Movie, поскольку мы установили псевдоним.
6. Агрегатные функции
Агрегатные функции используются для обобщения результатов ваших запросов. Наиболее распространенным способом использования этого является отображение количества результатов, полученных в результате поиска. Для этого вы должны использовать функцию COUNT.
Figure 7. Count Function
Select COUNT(*) as Friends
From Friends
Выше приведено количество ваших друзей. Обратите внимание на звездочку в SQL, это используется, потому что мы хотим просто посчитать общее количество записей. Звездочку можно заменить на имя столбца, чтобы просто посчитать количество записей в определенном столбце.
Конечно, есть более агрегатные функции, все они используются одинаково и перечислены ниже:
Count () — подсчитывает количество результатов.
Sum () — вычисляет сумму возвращаемых значений.
Avg () — вычисляет среднее значение возвращаемых значений.
Min () — вычисляет наименьшее значение, самую раннюю дату или первую запись в алфавитном порядке.
Макс () — вычисляет наибольшее значение, последнюю дату или последнюю запись в алфавитном порядке.
7. Сортировка результатов
При выполнении оператора выбора результаты будут возвращены в том порядке, в котором они были введены в таблицу. Это не всегда то, что вы хотите, иногда вы можете упорядочить результаты по набору критериев. Для этого вы используете пункт Order by.
Figure 8. Ordering Results
Select Firstname, Lastname
From Friends
Order by Lastname
Что будет сделано выше, так это вернуть список имен ваших друзей в алфавитном порядке по фамилии. Если вы хотите начать с Z и перейти к A, вы должны изменить его на «Order by Lastname DESC». DESC — сокращение по убыванию и обратный порядок, в котором перечислены записи.
Но что, если вы хотите заказать более одного столбца? Предположим, у вас есть друг по имени Джон Смит и друг по имени Питер Смит. Они будут перечислены в нужном месте по фамилии, но независимо от того, находится ли Джон над Питером, зависит от того, как вы ввели их в базу данных.
Чтобы это исправить, вы просто передаете два имени столбца в предложении Order.
Figure 9. Ordering by Two Columns
Select Firstname, Lastname
From Friends
Order by Lastname, Firstname
8. Ограничение результатов
Часто желательно отображать только 10 записей одновременно, например, большинство поисковых систем работают таким образом. Для этого вы добавляете несколько аргументов в свой тег запроса.
Figure 10. Limiting Results
<CFQUERY DATASOURCE = "Friends" Name = "Query1" Maxrows = "10" Startrow = "0">
..
..
..
</CFQUERY>
Обратите внимание, что начальная строка установлена в 0. Помните, что компьютеры начинают нумерацию с 0, а не с 1. Поэтому первая запись в базе данных — это запись с номером 0.
Вывод:
Если вы продвинулись так далеко, то вы сможете создать сайт, основанный на базе данных, с помощью ColdFusion. Я рассказал о том, что необходимо для достижения наиболее часто желаемых результатов на веб-сайте, управляемом базой данных, но я только немного коснулся. В ColdFusion и реляционных базах данных есть еще много чего, что я не смог охватить в коротком руководстве. Если вы хотите узнать больше, я предлагаю ColdFusion Web Application Construction Kit 4.0 от Ben Forta. Без сомнения, это самая полная книга, которая у меня есть, и она сможет помочь вам во всех ваших начинаниях ColdFusion.