Базовая форма опертора Select
Select список_полей
From название_таблицы
Пример
Select id_pok, pok, adr
From zakazchiki
Если требуется выбрать все поля из таблицы, то вместо списка полей используется символ *.
Если после клюючевого слова Select ключевое слово DISTINCT, тов результат не включаются записи, содержащие повторяющиеся значения
Пример
SELECT DISTINCT kod_pok FROM zakaz
Когда необходимо отобрать записи по определенному условию, то можно воспользоваться ключевым словом WHERE, за которым следует условие отбора. В нем используется операции сравнения (ЮбБб=Б <>, <=, >=) логические операции or, and, not и ( ). В результирующий НД попадают только те, записи значения которых удовлетворяют заданному условию:
Select список_полей
From название_таблицы
Where условие
Пример
SELECT pok, adr, phone FROM zakazchiki
WHERE( pok = “Афина”)
Для сортирвки результирующего НД необходимо исользовать ключевые слова ORDER BY, после которых указывается поле, по которому выполняется сортировка. По умолчанию она выполняется в возрастающем порядке. Для сортировки в порядке убывания после имени поля добавляется ключевое слово DESC
Пример
SELECT pok, adr, phone FROM zakazchiki
WHERE( pok <>“Афина”)
ORDER BY adr DESC
Если в операторе SELECT необходимо использовать поля нескольких таблиц, то перед тими полями через точку указываются имена соответсвующихталиц (если в таблицах нет полейс одинаковыми именами то можно перечислять поля без имен таблиц без имен таблиц, лучше в порядке слдеования соответсвующих таблиц после ключевого слова FROM)
Пример
SELECT zakaz.kol, zakazhikik.pok
FROM Zakaz, Zakazchiki
WHERE zakaz.kod_pok = zakazchiki.id_pok
Если значение указываемое справа от операции отношения текстовое или типа дата-время, то оон должно заключаться в двойные кавычки или в обрамляющие опострафы ( по два с каждой сторны). Занчению текстового поля можно применить опреацию LIKE когда значения справа от операции LIKE представлюяет не все поля, а лишьь его часть.
Пример. Выбрать из таблицы zakazchiki fpdfybt тольок тех фирм, которые начинаются с буквы А
SELECT pok FROM zakazchiki
WHERE pok LIKE ‘”a%”
ORDER BY pok
При определении части текстового поля в операции LIKE символ % указывает, что на его месте могут стоять любые символы.
Пример. Вырбать з таблицы zakazchiki название только тез фирм, в которых хтя бы раз встречается буква А
SELECT pok FROM zakazchiki
WHERE pok LIKE ”%a%”
ORDER BY pok
С помощью зарезевированного слова IN можно перечислить несколько допустимых значений поля.
Пример. Выберем из таблицы zakazchiki название первой и третьей фирмы
SELECT pok FROM zakazchiki
WHERE id_pok IN (1,3)
Вместо печеня допустимых значений в круглых скобках посе опеации IN можно разместить мложенный оператор SELECT.
C помощью зарезервированного слова BETWEEN можно укащывать диапазон допустимых значений.
Пример. Отобразить список фирм заказавших запасные части в сентябре 2008 года, сортировка по дате заказа.
SELECT pok, date_zak FROM zakazchiki, zakaz
WHERE zakazchiki.id_pok= zakaz.kod_pok
AND
Date_zak BETWEEN “01.09.2008” and “30.02.2008”
Order by date_zak
№53 Агрегатные функции и групировка записей
Вместо имен полей и наклонная черта и/или вместе сними в операторе SELECT можно использовать одну из следуюшихагрегатных функций
1) AVG – возврещает среднее значение аргумента
2) COUNT – подсчитывает колтчества вхoждения аргумента dj все записи НД
3) SUM – суммиhetn значение аргумента
4) MIN – возвращает минимальное значение аргумента
5) MAX – возвращает максимальное значение аргумента
В качестве аргумента при обращении к агрегатной функции может стоять произвольное изобажение составленное из поле НД
Пример, выдать спсиовк всех …. С указанием общего кол-ва заказанных запасных частей. Сортировка по убыванию поле pok
Для подобного рода запросов которых вместе с агрегатными функциями выводятся и поля таблиц, SQL требует секции группировки GROPU BY, в которой в обязательном порядке перечисляются все поля, указанные в секции Select.
SELECT pok, SUM(kol)
FROM zakaz, zakazchiki
WHERE kod_pok=id_pok
GROUP BY pok
Order by pok desc
При использовании агрегатных функций иногда требуется сключить из списка повторяющиеся значенрия полей ( ключ слово distinct)
Пример. Посчитать коичество фирм заказчиков используя данные только из таблицы zakazi
///////
…..
Tovar (KodT, Naimen, Kol, Cena, Nommang)
Prodazha (Nchek, Nommang, KodT, Date_R, KolKupl, KodSotr)
Sotrudniki (KodSotr, FIO, Homeadr, God_r, Dolzh)
Отобразить список товаров продынных заданным сотрудником ( код этогосторудника ввводим в Edit1) с указание его фио, наименование товара, цены товара, его проданного количества в аппреле 2008 го года
SELECT FIO, naimen, cena, sum(kolkupl)
FROM tover, prodazha, sotrudnikik
WHERE Tover.kodt= prodazha.kodt and sotrudniki.kodsotr=prodazha.kodsotr and date_r between “01.05.2008” and “30.05.2008” and prodazha.kodsotr=: olya
GROUP BY FIO, NAIMEN, CENA
Dm.Query1.ParamByNAme(‘Olya’).AsInteger := strtoint (Edit1.Text);
Отобразить список сотрудников 1983 года рождения, у которых не указан домашний адрес:
SELECT FIO,dolzh
FROM sotrudniki
WHERE god_r =”1983” and homeadr is null
№54 Вставка, изменения и удаление записей
В таблицу БД запись вставляется с помощью оператора Insert:
INSERT INTO ИМЯ_ТАБЛИЦЫ (список полей) Vlues (список значений)
Типы значений в списке значений должны соответствовать типам значений в списке полей.
INSERT INTO zakaz (nom_zak, date_zak, KOd_pok) VALUES (1070, “20.11.2008”,2)
Если заполняются все поля записей то список полей вместе с обрамляющими скобками можно опутстить. В этом случае значение в списке значений перечисляются в строгом соответствии с порядком следования полей в структуре таблицы.
INSERT INTO zakaz
VALUES (1070, “20.11.2008”,20)
C помощью оператора Update выполняет изменения значений отдельных полей таблицы
UPDATE Имя_таблицы
SET поля=значение
WHERE условие_выборки
Пример
UPDATE ZAKAZCHIKI
SET adr=”P.ijjcr1”
WHERE id_pok =3
За зарезервированым словом SET может стоять произвольное количесво полейс указанием из значений; два сосеlних присваивания – имя поля=знаечние разделяются запятой, если опутить секцию WHERE то будет изменено значение поля во всех заисях таблицы.
Дл удаления записей используется опертор DELETE:
DELETE FROM имя_таблицы
WHERE условие_выборки
Удлаение всех записейв таблице
DELETE FROM zakaz
№55 Создание и удаление таблицы индексов
Для создания таблицы используется оператор:
CREATE TABLE имя_таблицы (определения полей)
Где имя_таблицы- произвольное имя определения полей-список имен полей с обязательным указанием их типов
Привет
CREATE TABLE Avto(Marka Char (50), Nom_avto INT)
Допустимые типы полей в общем случае зависят от типа таблиц, так как в файл-серверных БД delopi создает таблицы типа Paradox то в операторе CREAT Table можно использовать след. Типы полей:
1) Char(N), Character (N) – символьное поле длиной N символов (до 255)
2) INT, INTEGER – соответствует типу integer языка Delphi
3) SmallInt - -//- языка Delphi
4) BLOB – цепочка байтов неопределенной длины
5) Float - -\\- real языка Delphi
6) Date – поле для хранения даты
7) Boolean -\\- Boolean языка Delphi
За типом поле при его описании можно указывать зарезервированные слова, (NOT null – поле не может быть пустым, Primary key- по полю строиться первичный ключ, UNIQUE – значения поля уникальны).
Для удаления существующей таблицы используется оператор:
DROP TABLE имя_таблицы
Для создания индекса служит оператор:
CREATE INDEX имя_индекса ON имя_таблицы (список полей)
Пример
CREATE INDEX MyInd ON Avto ( Marka, Nom_avto)
Для удаления существующего индекса служит оператор
DROP INDEX имя_индекса
Дата добавления: 2017-02-20; просмотров: 485;