W Cat - SQL за 24 часа
2. Верно ли следующее утверждение: "Команда SAVEPOINT сохраняет транзакции после выполнения определенного количества транзакций?"
3. Кратко охарактеризуйте назначение команд COMMIT, ROLLBACK и SAVEPOINT.
Упражнения
1. Рассмотрите следующие транзакции и создайте точки отката после каждой третьей из них. После этого подтвердите все транзакции.
transaction1;
transaction2;
transaction3;
transaction4;
transaction5,
transaction6,
transaction7;
transaction8;
transaction9;
transaction10;
transaction11;
transaction12;
7-й час Знакомство с запросами
На этом уроке мы поговорим о запросах к базе данных. В основе запросов лежит использование оператора SELECT, из операторов SQL являющегося, пожалуй, для уже сложившихся баз данных наиболее часто используемым
Основными на этом уроке будут следующие темы
• Что такое запрос к базе данных
• Использование оператора SELECT
• Добавление в запрос условий с помощью ключевого слова WHERE
• Использование псевдонимов столбцов
• Получение данных из таблиц других пользователей
Что такое запрос?
Запрос - это обращение к базе данных с помощью оператора SELECT. Запросы используются для того, чтобы извлечь данные в том виде, который удобен пользователю. Например, с помощью соответствующего оператора SQL можно из таблицы с информацией о служащих извлечь имя служащего с максимальным уровнем оплаты. Такого вида запросы являются типичными для реляционных баз данных.
Оператор SELECT
Оператор SELECT, представляющий язык запросов к данным (Data Query Language - DQL) в SQL, используется для составления запросов к базе данных. Оператор SELECT не используется сам по себе, а требует указания некоторых параметров с помощью ключевых слов. Кроме обязательных, у этого оператора имеется несколько необязательных ключевых слов, расширяющих его возможности. Оператор SELECT является, пожалуй, одним из наиболее полезных операторов SQL. С оператором SELECT должно использоваться ключевое слово FROM, которое для этого оператора является обязательным.
Оператор SELECT состоит из выражений, строящихся на основе следующих четырех ключевых слов.
• SELECT
• FROM
• WHERE
• ORDER BY Использование этих ключевых слов будет подробно рассмотрено в следующих разделах.
Ключевое слово SELECT
В операторе SELECT ключевое слово SELECT используется в совокупности с ключевым словом FROM для того, чтобы организовать извлечение данных из базы данных в удобном для чтения формате. Часть запроса, заданная ключевым словом SELECT, определяет источник отбора данных.
Синтаксис простого оператора SELECT следующий.
SELECT [ * | ALL | DISTINCT СТОЛБЕЦ1, СТОЛБЕЦ2 ]
FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ];
За ключевым словом SELECT в запросе следует список столбцов, значения которых вы хотели бы видеть в результате запроса За ключевым словом FROM следует список таблиц, из которых должны извлекаться данные. Звездочка (*) используется для указания того, что в результате запроса должны быть показаны значения всех столбцов таблицы. По поводу ее использования обратитесь к документации той реализации SQL, с которой работаете вы. Опция ALL используется тогда, когда нужно показать все значения столбца, включая и повторяющиеся. Опция DISTINCT используется для того, чтобы повторения исключить. Из этих опций используемой по умолчанию опцией является ALL, которую поэтому указывать не обязательно. Обратите внимание на то, что имена столбцов в списке, следующем за ключевым словом SELECT, разделяются запятыми, точно так же, как имена таблиц, следующие за ключевым словом FROM.
В операторах SQL запятые используются для разделения аргументов в списках Это могут быть, например, списки с именами столбцов в запросах, списки с именами таблиц, списки значений, помещаемых в таблицу или списки значений, задающих условия с ключевым словом WHERE.
Аргументы - это значения, предусмотренные в синтаксисе оператора или команды SQL. Аргументы могут быть как обязательными, так и необязательными.
Основные возможности оператора SELECT раскрываются в следующих примерах.
Давайте сначала выполним простой запрос по отношению к таблице PRODUCT S_TBL:
SELECT * FROM PRODUCTSJTBL;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
11 строк выбраны.
Звездочка означает выбор всех столбцов таблицы, которая, как видите, состоит из трех столбцов PROD_ID, PROD_DESC и COST. При выводе столбцы показываются в том порядке, в котором они расположены в таблице. В данной таблице 11 записей, на что указывает последняя строка вывода. Содержимое этой строки зависит от конкретной реализации SQL, например, в Oracle это будет 11 rows selected, а в другой реализации эта строка может выглядеть как 11 rows affected.
Теперь выберем данные из таблицы CANDY_TBL. Создадим эту таблицу из таблицы PRODUCTSJTBL специально для данного примера. Чтобы показать данные только одного столбца, укажем имя столбца после ключевого слова SELECT
SELECT PROD_DESC FROM CANDYJTBL;
PROD_DESC
СЛАДКАЯ КУКУРУЗА
СЛАДКАЯ КУКУРУЗА
ШОКОЛАД HERSHEYS
СНИКЕРС
4 строки выбраны.
В таблице CANDY_TBL четыре записи. В следующем примере для отображения всех записей используется опция ALL, чтобы показать, что эта опция необязательна и вообще лишняя. Нет необходимости указывать ALL, поскольку эта опция подразумевается по умолчанию.
SELECT ALL PROD_DESC FROM CANDYJTBL;
PROD_DESC
СЛАДКАЯ КУКУРУЗА
СЛАДКАЯ КУКУРУЗА
ШОКОЛАД HERSHEYS
СНИКЕРС
4 строки выбраны.
В следующем операторе использована опция DISTINCT, чтобы подавить вывод повторяющихся строк. Обратите внимание на то, что здесь значение СЛАДКАЯ КУКУРУЗА напечатано только один раз.
SELECT DISTINCT PROD_DESC FROM CANDYJTBL;
PROD_DESC
СЛАДКАЯ КУКУРУЗА
ШОКОЛАД HERSHEYS
СНИКЕРС
3 строки выбраны.
При использовании DISTINCT и ALL можно заключить имя соответствующего столбца в круглые скобки. Скобки часто используются в SQL, как и во многих других языках, для удобства чтения операторов.
SELECT DISTINCT(PROD_DESC) FROM CAHDYJTBL;
PROD_DESC
СЛАДКАЯ КУКУРУЗА
ШОКОЛАД HERSHEYS
СНИКЕРС
3 строки выбраны.
Ключевое слово FROM
Ключевое слово FROM всегда используется с оператором SELECT. Это ключевое слово является обязательным элементом запроса. Целью задаваемого с помощью FROM выражения является сообщение базе данных о том, из какой таблицы или таблиц должны извлекаться данные. Выражение FROM может включать как одну, так и несколько таблиц.
Синтаксис задаваемого с помощью FROM выражения следующий.
FROM ТАБЛИЦА1 [ , ТАБЛИЦА2 ]
Использование условий для отбора данных
Условие - это часть запроса, содержащая информацию, на основе которой отбираются данные. Условие может принимать либо значение TRUE, либо значение FALSE, что и используется для отбора. Выражение WHERE используется в запросах для исключения из рассмотрения некоторых строк из тех, что при отсутствии условий были бы включены в результаты запроса.
В выражении WHERE может содержаться несколько условий. Если условий несколько, они связываются операциями AND и OR, обсуждение которых предполагается в ходе урока 8, "Операции в условиях для отбора данных". Из того же урока вы узнаете об использовании логических операций, с помощью которых можно конструировать условия в запросах. В ходе данного урока мы будем рассматривать только запросы с одним условием.
Операция - это символ или ключевое слово SQL, использующееся для связывания элементов в операторе SQL.
Синтаксис оператора SELECT, использующего выражение WHERE следующий.
SELECT [ ALL | * | DISTINCT СТОЛБЕЦ!, СТОЛБЕЦ2 ] FROM ТАБЛИЦА! [ , ТАБЛИЦА2 ] WHERE [ УСЛОВИЕ! | ВЫРАЖЕНИЕ! ] [ AND УСЛОВИЕ2 | ВЫРАЖЕНИЕ2 ];
Вот простой запрос без использования ключевого слова WHERE.
SELECT *
FROM PRODUCTS_TBL;
PROD_ID PROD_DESC COST
11235 КОСТЮМ ВЕДЬМЫ 29.99
222 ПЛАСТИКОВЫЕ ТЫКВЫ 7.75
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
90 ФОНАРИ 14.5
15 КОСТЮМЫ В АССОРТИМЕНТЕ 10
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
1234 ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 5.95
2345 ПОЛОЧКА ИЗ ДУБА 59.99
11 строк выбраны.
Добавим в тот же запрос условие.
SELECT * FROM PRODUCTSJTBL WHERE COST < 5;
PROD_ID PROD_DESC COST
13 ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 1.1
9 СЛАДКАЯ КУКУРУЗА 1.35
6 ТЫКВЕННЫЕ КОНФЕТЫ 1.45
87 ПЛАСТИКОВЫЕ ПАУКИ 1.05
119 МАСКИ В АССОРТИМЕНТЕ 4.95
5 строк выбраны.
Теперь показаны только строки с информацией о товарах стоимостью меньше $5. С помощью следующего запроса извлекается информация о товаре с кодовым номером 119.
SELECT PROD_DESC,
COST FROM PRODUCTS_TBL
WHERE PROD_ID = '119';
PROD_DESC COST
МАСКИ В АССОРТИМЕНТЕ 4.95
1 строка выбрана.
Сортировка вывода
Обычно требуется, чтобы выводимые данные были как-то упорядочены. Выводимые данные можно упорядочить с помощью выражения, связанного с ключевым словом ORDER BY. Упорядочение, задаваемое с помощью ключевого слова ORDER BY, по умолчанию будет упорядочением по возрастанию, обозначается A-Z (А-Я) в случае сортировки имен. Алфавитное упорядочение по убыванию соответствует порядку Z-А (Я-А). Для числовых значений между 1 и 9 упорядочение по возрастанию обозначается 1-9, а по убыванию - 9- 1.