Основы использования SQL.
» Введение SQL – Structured Query Language (Структурированный язык запросов). Язык SQL - наиболее распространённый язык управления базами данных типа клиент – сервер. Существует несколько разновидностей SQL. Между ними есть небольшие различия, но основа одна и та же. В Visual Basic 6 возможности языка SQL представлены Microsoft Jet Database ANSI-89. SQL запрос представляет собой набор команд, определённым образом влияющий на отбор данных. Каждая инструкция начинается командой (одной из SELECT, INSERT, DELETE, UPDATE, CREATE, DROP, ALTER, TRANSFORM) и заканчивается точкой с запятой [;]. » Команда SELECT Команда SELECT - наиболее часто употребляемая команда из всех восьми. Она используется для выборки данных из базы данных. Её синтаксис: SELECT [Предикат] Поля FROM Таблицы [IN БазаДанных] [WHERE ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...]; Необязательные аргументы заключены в []. › Предикат - одно из четырёх слов ALL, DISTINCT, DISTINCTROW, TOP. Если предикат не указан, то устанавливается ALL. Предикат ALL позволяет отобрать все записи. При использовании предиката DISTINCT, записи, которые содержат повторяющиеся значения в выбранных в запросе полях, исключаются. Предикат DISTINCTROW исключает из выборки записи, если повторяется вся запись, а не одно из полей. Предикат TOP позволяет отобрать определённое количество записей. › Поля - имена одного или нескольких полей, выборка которых производится. Для выборки всех полей вместо имен полей можно поставить звёздочку [*]. › Таблицы - имена одной или нескольких таблиц, из которых производится выборка. › БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен. Минимальный синтаксис запроса на выборку выглядиттак: SELECT поле FROM Таблица; Если таблицы, из которых выбираются записи, содержат одноимённые поля, то перед именем поля нужно поставить название таблицы и точку [.]. Предложение WHERE позволяет установить критерии отбора записей. Например: SELECT * FROM Orders WHERE ID=5; В этом запросе происходит выборка всех полей таблицы Orders. Выбираются только те записи, значения поля ID которыхравно 5. Вместо знака равно [=] можно также использовать знаки больше [>] и меньше [<]. SELECT * FROM Buyers WHERE Age>30; В этом запросе выбираются все записи из таблицы Buyers, в которых значение поля Age больше 30. Также возможно использование предложения WHERE вместе с операторами BETWEEN, IN и LIKE. Оператор BETWEEN позволяет отобрать записи, значение определённого поля которых находится в заданном диапазоне. Например: SELECT * FROM Orders WHERE ID BETWEEN 10 AND 20; Здесь выбираются все записи, значение поля ID которых находится между 10 и 20. Оператор IN позволяет отобрать записи, значение поля которых соответствует одному из значений, указанных в скобках. SELECT * FROM Orders WHERE ID IN ( 10, 12, 30, 45 ); Здесь отбираются все записи, значение поля ID которых соответствует одному иззначений 10, 12, 30, 45. Используя предложение WHERE совместно с оператором LIKE, возможен отбор записей, значение одного из полей которых совпадает с маской. Оператор LIKE применим только к текстовым полям. В маске можно использовать следующие символы: Символ | Описание | Подчёркивание [_] | Замещает один любой символ. | Процент [%] | Замещает последовательность любого числа символов. | Например: SELECT * FROM Orders WHERE Name LIKE 'Ва_я%' Здесь выбираются все записи, поле Name которых соответствует маске Ва_я%. Обраатите внимание, что значения текстового типа в SQL-запросах указываются в кавычках. Предложение GROUP BY позволяет объединять поля в запросе. Предложение ORDER BY позволяет упорядочивать выбираемые записи. При использовании совместно с предложением ключевого слова ASC можно определить возрастающий порядок, а используя DESC, определяется убывающий порядок. SELECT * FROM Orders ORDER BY Name ASC; Также можно упорядочивать записи по нескольким полям. Сначала записи упорядочиваются по первому полю, если в нём есть записи, имеющие одинаковые значения, то они упорядочиваются по следующему указанному в предложении ORDER BY полю и т.д. Имена полей пишутся через запятую [,]. SELECT * FROM Orders ORDER BY Name ASC, Email ASC; » Команда UPDATE Команда UPDATE посылает запрос на изменение записи. Синтаксис: UPDATE Таблица SET НовоеЗначение WHERE ...; › Таблица - имена одной или нескольких таблиц, в которых изменяются записи. › НовоеЗначение - новые значения для полей записи. Команду UPDATE удобно использовать, если изменяется сразу большое число записей или если изменяемые записи находятся в разных таблицах. Новые значения указываются через запятую для каждого поля. Использование предложения WHERE аналогично его использованию в команде SELECT. Пример: UPDATE Buyers SET Order='Ничего' WHERE ID=7; Устанавливаем значение поля покупки 'Ничего' у покупателя, номер которого равен 7. UPDATE Заказы SET СуммаЗаказа = СуммаЗаказа * 1.2, СтоимостьДоставки = СтоимостьДоставки * 1.1 WHEREСтрана='США'; Этот запрос немного сложнее. Он повышает сумму заказа на 20% и стоимость доставки на 10% для покупателей из США. » Команда DELETE Команда DELETE посылает запрос на удаление записей из таблицы. Синтаксис: DELETE [Таблица.*] FROM Таблица WHERE ...; › Таблица - имя таблицы, из которой удаляются записи. Использование предложения WHERE аналогично его использованию в команде SELECT. Аргумент команды DELETE можно не указывать, поскольку он фактически дублируется в предложении FROM. Пример: DELETE FROM Buyers WHERE ID=8; Этот запрос удаляет из таблицы Buyers запись, в которой ID равно 8. Для удаления не всей записи, а только ее поля, следует воспользоваться запросом на изменение записи (команда UPDATE) и поменять значения нужных полей на Null. » Команда INSERT INTO Команда INSERT INTO предназначена для добавления одной или нескольких записей в конец таблицы. Возможны 2 варианта использования этой команды. Первый вариант добавляет одну запись в таблицу, а второй вариант добавляет записи из одной таблицы в другую. Синтаксис первого варианта: INSERT INTO ТаблицаНазначения [(Поля)] VALUES (Значения); Синтаксис второго варианта: INSERT INTO ТаблицаНазначения [(Поля)] [IN БазаДанных] SELECT [Таблица.] Поля FROM Таблица; › ТаблицаНазначения - таблица, в которую добавляются записи. › Поля - названия полей. › Таблица - имя таблицы, источника данных. › БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен. › Значения - значения полей добавляемой записи. Все поля записи и соответствующие им значения должны быть определены, иначе им будут присвоены значения Null. Если таблица, в которую добавляются записи, имеет ключевое поле, то в него должны добавляться уникальные, непустые значения. Иначе запись не будет добавлена. Пример: INSERT INTO Orders (ID, Name, Email, Order) VALUES (12, 'ВасяПупкин', '
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
', 'Pentium II 450 MHz'); Добавляется новая запись, в которой полям ID, Name, Email, Order соответствуют значения 12, 'Вася Пупкин', '
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
', 'Pentium II 450 MHz'. INSERT INTO Orders2001 (ID, Name, Email, Order) SELECT ID, Name, Email, Order FROM Orders2000; Этот запрос добавляет все записи из таблицы Orders2000 в таблицу Orders2001. » Команда SELECT ... INTO Команда SELECT ... INTO позволяет создать новую таблицу на основе данных из других таблиц. Эта команда используется для архивирования данных, резервного копирования таблиц. Синтаксис команды: SELECT Поля INTO НоваяТаблица [IN БазаДанных] FROM Таблицы; › Поля - имена одного или нескольких полей, которые будут скопированы в новую таблицу. › НоваяТаблица - Имя создаваемой таблицы › БазаДанных - путь и имя внешней базы данных, в которой содержатся таблицы. Если таблицы находятся в текущей базе данных, то этот аргумент необязателен. › Таблицы - имена таблиц, из которых выбираются записи. Если имя новой таблицы совпадает с именем уже существующей, то будет сгенерирована ошибка. Пример: SELECT ID, Name, Email, Order INTO CopyOfOrders FROM Orders; » Заключение В этой статье я не описал и десятой части всех возможностей языка SQL. С помощью SQL можно создавать и удалять таблицы, соединять таблицы, вставлять в запросы подзапросы и многое другое. При написании этой статьи использовался Microsoft SQL Server 2000 Developer Edition. |