Запросы в базе данных

Отбор данных из таблиц

Отбор данных из таблиц заключается в получении из них полей и записей, удовлетворяющих заданным условиям. Результат выполнения запроса, на основании которого отбираются записи, называется выборкой. Данные можно выбирать из одной или нескольких таблиц с помощью инструкции SELECT.

SELECT

Инструкция SELECT – важнейшая инструкция языка SQL. Она используется для отбора записей, удовлетворяющих сложным критериям поиска, и имеет следующий формат:

SELECT [DISTINCT] {* | <Список полей>}

FROM <Список таблиц>

[WHERE <Условия отбора>]

[ORDER BY <Список полей для сортировки>]

[GROUP BY <Список полей для группирования>]

[HAVING <Условия группирования>]

[UNION <Вложенная инструкция SELECT>]

Описатель DISTINCT запрещает повторяющиеся записи в наборе данных.

Обязательными являются: список полей и операнд FROM.

Если в набор данных требуется включить все поля, то вместо перечисления имен полей можно указать символ*. Если список содержит поля нескольких таблиц, то для указания принадлежности поля к той или иной таблице используют составное имя, включающее в себя имя таблицы и имя поля, разделенные точкой: <Имя таблицы>.<Имя поля>.

Примеры:

SELECT Name, Salary

FROM Personnel.db

В набор данных, формируемый в результате выполнения этого запроса, включаются поля Name и Salary всех записей из таблицы Personnel.

SELECT DISTINCT Position

FROM Personnel

Набор данных содержит список занимаемых штатных должностей организации.

SELECT "-" | | Name, Salary, Salary * 1.1

FROM Personnel

Результирующий набор будет таким:

Name Salary Salary * 1.1

- Иванов Р.О. 6700 7370

….

SELECT * FROM Personnel, Info

Результирующий набор данных состоит из всех полей и всех записей таблиц Personnel и Info.

Операнд WHERE задает условия (критерии) отбора, которым должны удовлетворять записи в результирующем наборе данных.

Примеры:

SELECT Name

FROM Personnel

WHERE Salary >= 4000

Инструкция задает получение списка сотрудников, имеющих оклад не менее 4000.

WHERE UPPER(TRIM(Post)) = 'ВОДИТЕЛЬ'

Функция TRIM удаляет из строкового значения ведущие и конечные пробелы, а функция UPPER приводит символы полученной строки к верхнему регистру. В результате значение должности водитель независимо от наличия ведущих и конечных пробелов, а также регистра букв будет приведено к значению ВОДИТЕЛЬ.

SELECT Name

FROM Personnel

WHERE Name LIKE "Ав"

Операция LIKE выполняет сравнение по частичному совпадению. В результате получаем список фамилий, начинающихся на Ав.

SELECT Name

FROM Goods

WHERE Name LIKE "%" | | "кА" | | "%"

В выражениях операции LIKE допускается использование шаблона, в котором имеются специальные символы:

% - замещение любого количества символов, в том числе и нулевого,

_ - замещение одного символа.

В приведенном запросе происходит отбор всех товаров, в названия которых входят символы ка.

SELECT Cards.*

FROM Store, Cards

WHERE (S_Quantity > 250) AND

C_Date BETWEEN "21.5.2002" AND "27.5.2002")

Происходит отбор всех записей о движении товара, количество которого на складе превышает 250 единиц, в течение заданного периода.

Операнд GROUP BY позволяет выделять группы записей в результирующем наборе данных. Группой являются записи с одинаковыми значениями в полях, перечисленных за операндом GROUP BY.

Пример:

SELECT C_Date, COUNT (C_Date)

FROM Cards

WHERE C_Date BETWEEN "01.06.2002" AND "03.06.2002"

GROP BY C_Date

Для каждой даты из указанного периода выводится количество записей, в которых оан встречается. Функция COUNT выводит для каждой группы (сформированной по полю даты) число записей в группе. Полученный набор данных может иметь следующий вид:

C_Date COUNT(C_Date)

01.06.02 20

02.06.02 15

03.06.02 10

Операнд ORDER BY содержит список полей, определяющих порядок сортировки записей результирующего набора данных. По умолчанию сортировка по каждому полю выполняется в порядке возрастания значений, если необходимо задать для поля сортировку по убыванию, то после имени этого поля указывается описатель DESC.

Пример:

SELECT Name, Position, Salary

FROM Personnel

ORDER BY Position, Salary DESC

В набор данных входят поля Name, Position и Salary всех записей. Записи отсортированы по полям Position и Salary, при этом по полю Salary упорядочивание выполняется в порядке убывания значений.

Модификация записей

Модификация записей заключается в редактировании записей, вставке в набор данных новых записей или удалении существующих записей. При модификации записей используются инструкции UPDATE, INSERT, DELETE, которые соответствующим образом изменяют записи и возвращают в качестве результата набор данных, состоящий из модифицированных записей, удовлетворяющих критерию отбора.

Редактирование записей представляет собой изменение значений полей в группе записей. Оно выполняется инструкцией UPDATE:

UPDATE <Имя таблицы>

SET <Имя поля1> = <Выражение1>,

<Имя поляN> = <ВыражениеN>

[WHERE <Условия отбора>]

После выполнения инструкции UPDATE для всех записей, удовлетворяющих условию отбора, изменяются значения полей. Имя поля указывает модифицируемое поле всей совокупности записей, а Выражение определяет значение, которое будет присвоено этому полю.

Пример:

UPDATE Personnel

SET Salary = Salary + 200

WHERE Salary < 1500

Если сотрудник имеет оклад менее 1500 рублей, оклад увеличивается на 200 руб.

Вставка записей

Осуществляется с помощью инструкции INSERT, которая позволяет добавлять к таблицам одну или несколько записей.

Добавление одной записи:

INSERT INTO <>

[(<>)]

VALUES (<>)

В результате выполнения этой инструкции к таблице, имя которой указано после слова INTO, добавляется одна запись. Для добавленной записи заполняются поля, перечисленные в списке. Значения полей берутся из списка, расположенного после слова VALUES.

Пример:

INSERT INTO Store

(S_Name, S_Price, S_Quantity)

VALUES ("Торшер", 499.9, 10)

В таблицу Store добавляется новая запись, в которой присваиваются значения полям название товара, его цены и количества.

Удаление записей

DELETE FROM <Имя таблицы>

[WHERE <Условия отбора>]

Пример:

DELETE FROM Store

WHERE S_Quantity = 0

Из таблицы Store удаляются все записи о товаре, которого нет на складе.

Статический и динамический запросы

В зависимости от способа формирования SQL-запрос может быть статическим или динамическим.

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

Динамический запрос формируется или изменяется при выполнении приложения. Такой запрос обычно применяется, если его текст зависит от действий пользователя, например, при управлении сортировкой набора данных, когда в тексте запроса изменяются названии полей и добавляется или исключается описатель DESC.

Пример формирования динамического запроса:

procedure TForm1.btnSortClick (Sender: TObject);

var str: string;

begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add ('SELECT * FROM Personnel.db')

case RadioGroup1.ItemIndex of

0: str:= 'ORDER BY Name ';

1: str:= 'ORDER BY BirthDay '

end;

case RadioGroup2.ItemIndex of

0:;

1: str:= str +' DESC';

end;

Query1.SQL.Add (str);

Query1.Open;

end;

При нажатии кнопки btnSort список сотрудников сортируется по полям Name или BirthDay. Пользователь управляет выбором поля с помощью группы переключателей RadioGroup1. В группе RadioGroup2 выбирается порядок сортировки.

Способы создания запроса

1. С помощью компонента Query, записав текст запроса в качестве значения свойства SQL.

2. Запрос можно создать с помощью программы Database Desktop, выполнив команду New\ SQL File, открыть окно редактора SQL Editor и набрать в нем текст SQL-запроса. Запрос можно сохранять в виде текстового файла, можно открыть ранее сохраненный запрос. Файл запроса имеет расширение sql. Для выполнения запроса нужно выбрать команду SQL\ un SQL.

3. Визуальное конструирование запросов.

Для удобного конструирования запросов можно использовать визуальный конструктор, вызываемый командой New\QBE Query программы Database Desktop. Для получения текста запроса необходимо выполнить команду Query\ Show SQL. Для выполнения запроса используется команда Query\ Run Query. Запрос можно сохранять. Файл запроса имеет расширение qbe.

4. С помощью программы SQL Builder. Программа вызывается выбором команды SQL Builder контекстного меню компонента Query. Сохранение запроса в виде текстового файла с расширением sql выполняется командой File\ Export to file. Открытие запроса осуществляется командой File\ Export from file.

5. С помощью программы SQL Explorer. Редактирование и запуск SQL-запросов осуществляется в текстовом редакторе, расположенном на вкладке Enter SQL.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: