Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Краткие теоретические сведения. Второстепенные термины




Второстепенные термины

- SELECT;

- INSERT;

- UPDATE;

- DELETE.

 

Структурная схема терминов:

 
 
SQL-запрос


 

Содержание темы

1 Возможности SQL;

2 Создание запросов с помощью SELECT;

3 Добавление данных;

4 Обновление данных;

5 Удаление данных.

 

SQL (structured query language - структурированный язык запросов) является стандартом в области реляционных БД.

 

SQL позволяет манипулировать данными, производить:

1 Выбор данных (команда SELECT)

2 Добавление (команда INSERT)

3 Обновление (команда UPDATE)

4 Удаление (команда DELETE)

 

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

 

SQL является основой для БД в архитектуре Клиент-Сервер, которые в настоящее время наиболее перспективны.

 

Выбор данных

(создание запросов при помощи команды SELECT)

 

 

Запрос – это средство выбора данных из одной или нескольких таблиц.

 

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

 

Для формирования запроса используется команда:

 

SELECT [ DISTINCT ] Список Выбираемых Полей

FROM Список Таблиц

[ WHERE Условие Выборки ]

[ GROUP BY Условие Группировки ]

[ ORDER BY Условие Упорядочивания ]

[ [ INTO Имя Таблицы ]

[ TO FILE Имя Файла [ ADDITIVE ] | TO PRNTER ] ]

 

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

 

По умолчанию в отчет включаются все строки, опция DISTINCT исключает одинаковые строки. Команда INTO направляет запрос в таблицу. TO FILE – перенаправление запроса в файл. Если файл, имя которого указано для сохранения уже существует, то его содержимое будет заменено. ADDITIVE – позволяет добавить результата в конец существующего файла. TO PRNTER – направляет запрос на печать.

 

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

Пример 1: Пусть дана БД, состоящая из двух таблиц:

 

Таблица Popup (Покупатели), с полями:

 

Фамилия Cfam
Код товара Nkod
Вид оплаты Cvid
Стоимость товара Ntov
Стоимость доставки Ndos
Дата поступления заявки Dpos
Дата и время выполнения Tvip

 

и данными:

 

Cfam Nkod Cvid ntov ndos dpos tvip
Гребенев А.Н. Степанова Е.Д. Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т. Шараева Е.Н. Денисов А.В. Скрынникова Е.В.   Безналичный наличный безналичный безналичный безналичный наличный наличный безналичный 389.00 124.00 500.00 560.00 125.00 875.00 1200.00 498.00 12.00 8.50 56.00 20.00 23.00 100.00 267.50 19.90 12/04/98 11/04/98 12/04/98 13/04/98 15/04/98 10/04/98 14/04/98 12/04/98 13/04/98 10:40:00 AM 13/04/98 09:15:00 PM 12/04/98 03:10:00 PM 15/04/98 02:50:00 PM / /:: AM 12/04/98 10:10:00 PM 15/04/98 09:30:00 AM 13/04/98 10:25:00 PM

 

Таблица Tovary (товары)

 

Код товара Nkod
Наименование товара Cnaim
Цена Nzena
Сорт Nsort

 

С данными:

 

nkod Cnaim nzena Nsort
  Лак паркетный Кафель отделочный Обои Зеркало Краска Натяжной потолок Клеенка 38.90 124.00 23.00 560.00  

 

Выберем поля фамилия и дата поступления заявки из таблицы Pokup

 

SELECT cfam, dpos FROM Pokup

 

Результат:

 

Cfam dpos
Гребенев А.Н. Степанова Е.Д. Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т. Шараева Е.Н. Денисов А.В. Скрынникова Е.В. 12/04/98 11/04/98 12/04/98 13/04/98 15/04/98 10/04/98 14/04/98 12/04/98

 

Если поля выбираются из нескольких таблиц, перед именем поля необходимо поставить имя таблицы и точку. Для однотабличных запросов указание таблицы необязательно.

Второй вариант команды:

 

SELECT Pokup.cfam, Pokup.dpos FROM Pokup

 

* обозначает выбор всех полей таблицы

 

Пример 2: Выбрать все поля таблицы Pokup

 

SELECT Pokup.* FROM Pokup

Или

SELECT * FROM Pokup

 

(Результат аналогичен самой таблице)

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

 

Пример 3: Выбрать поля фамилия, код товара, рассчитать сумму стоимости товара и доставки

 

SELECT cfam, nkod, ntov+ndos FROM Pokup

Результат

 

Cfam nkod Exp 1
Гребенев А.Н. Степанова Е.Д. Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т. Шараева Е.Н. Денисов А.В. Скрынникова Е.В.   391.00 132.50 556.00 580.00 148.00 975.00 1467.50 517.90

 

 

В качестве агрегатных функций можно использовать:

 

MIN Минимальное значение
MAX Максимальное значение
AVG Среднее значение
SUM Сумма
COUNT Расчет количества

 

Пример 4: Рассчитать общее количество покупателей и среднюю стоимость товара:

SELECT COUNT(cfam), AVG(ntov) FROM Pokup

 

В качестве результата будет передана одна строка, которая содержит два значения.

 

Cnt cfam Avg ntov
  533.94

 

Для изменения имени столбца в результате можно использовать опцию AS

 

В предыдущем примере сохраним количество покупателей под именем KOL_VO, среднюю стоимость под именем SRED

 

SELECT COUNT(cfam) AS KOL_VO, AVG(ntov) AS SRED FROM Pokup

 

Kol vo Sred
  533.94

 

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

Если название таблицы достаточно длинное можно использовать вместо него псевдоним.

 

Пример 5: Выберем из таблицы Pokup фамилию покупателя и стоимость товара, а из таблицы Tovary – наименование товара.

1 вариант команды:

 

SELECT Pokup.cfam, Pokup.ntov, Tovary.cnaim

FROM Pokup, Tovary

WHERE Pokup.nkod = Tovary.nkod

 

Опция WHERE задает условие связи таблиц (по совпадению кода товара)

 

Результат:

 

Cfam Ntod cnaim
Гребенев А.Н. Степанова Е.Д. Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т. Шараева Е.Н. Денисов А.В. Скрынникова Е.В. 389.00 124.50 500.00 560.00 125.00 875.00 1200.00 498.00 Лак паркетный Кафель отделочный Обои Зеркало Обои Краска Натяжной потолок Кафель отделочный

 

2 вариант команды, с использование псевдонима p для Pokup и t для Tovary:

 

SELECT p.cfam, p.ntov, t.cnaim

FROM Pokup p, Tovary t

WHERE p.nkod = t.nkod

 

Опция WHERE позволяет задавать условие отбора записей

Пример 6: Выберем из таблицы Pokup поля фамилия покупателя, код товара и стоимость товара для всех товаров с кодом больше 400.

SELECT cfam, nkod, ntov

FROM Pokup WHERE nkod > 400

Результат:

 

Cfam Nkod ntov
Гребенев А.Н. Гребенев А.Н. Звягинцев Р.Т.   389.00 500.00 125.00

 

Условие может строиться с использованием логического операции AND (И),

OR (ИЛИ), NOT (НЕ), включать в себя операции сравнения: <, <=, >, >=, =

Пример 6: Выберем из таблицы Pokup поля фамилия покупателя, код товара и стоимость товара для всех товаров с кодом больше 400, но меньше 700.

SELECT cfam, nkod, ntov

FROM Pokup WHERE 400< nkod AND nkod < 700

 

Результат:

 

Cfam Nkod ntov
Гребенев А.Н.   389.00

 

В условиях можно использовать функции:

BETWEEN - задает диапазон значений,

IN – задает список,

LIKE – маска для символьных переменных (% - любое количество произвольных символов, * - один произвольный символ)

 

Предыдущий пример с использование функции BETWEEN

 

SELECT cfam, nkod, ntov

FROM Pokup WHERE nkod BETWEEN 400 AND 700

 

Пример 7: Выбрать все поля из таблицы Pokup, код товара должен быть равен 310, 600 или 910.

 

SELECT * FROM Pokup WHERE nkod IN (310, 600, 910)

Результат:

 

Cfam Nkod Cvid ntov ndos dpos tvip
Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т.   безналичный безналичный безналичный 500.00 560.00 125.00 56.00 20.00 23.00 12/04/98 13/04/98 15/04/98 12/04/98 03:10:00 PM 15/04/98 02:50:00 PM / /:: AM

 

Пример 8: Выбрать все поля из таблицы Pokup, фамилия клиента должна начинаться с буквы С

 

SELECT * FROM Pokup WHERE cfam LIKE 'С%'

 

Cfam Nkod Cvid ntov ndos dpos tvip
Степанова Е.Д. Скрынникова Е.В.   наличный безналичный 124.00 498.00 8.50 19.90 11/04/98 12/04/98 13/04/98 09:15:00 PM 13/04/98 10:25:00 PM

 

Условие группировки используется в том случае, если какое-либо поле содержит повторяющиеся значения. В этом случае записи с каждым значением будут выделены в отдельные группы.

 

Пример 9: Выбрать из таблицы Pokup поле вид оплаты, сгруппировать по нему, рассчитать сумму стоимости товара и доставки для каждого вида оплаты.

 

SELECT cvid, SUM(ntov+ ndos) FROM Pokup GROUP BY cvid

 

 

Результат:

 

Cvid Sum exp 2
безналичный наличный 2202.00 1575.00

 

Можно использовать группировку по нескольким полям.

 

Пример 10: Выбрать из таблицы Pokup поля вид оплаты и код товара, сгруппировать по этим полям, рассчитать сумму стоимости товара и доставки для каждого товара и вида оплаты.

 

SELECT cvid, nkod, SUM(ntov+ ndos) FROM Pokup

GROUP BY Pokup.cvid, Pokup.ckod

 

Результат

Cvid Nkod Sum_exp 3
безналичный безналичный безналичный безналичныйналичный наличный наличный   389.00 517.00 401.00 704.00 975.00 133.00 1467.00

 

Строки группируются по виду оплаты (безналичный, наличный), а за тем по коду товара. Обратите внимание, товар 910 покупался 2 раза по безналичному расчету:

 

Cfam Nkod Cvid ntov ndos dpos tvip
Гребенев А.Н. Звягинцев Р.Т.   безналичный безналичный 500.00 125.00 56.00 23.00 12/04/98 15/04/98 12/04/98 03:10:00 PM / /:: AM

В результате указывается общая сумма стоимости товара и доставки.

Условие упорядочивания позволяет задать порядок следования записей. В качестве такового задается одно или несколько полей. По умолчанию записи располагаются в порядке возрастания. Для размещения в порядке убывания необходимо указывать опцию DESC.

 

Пример 11: Выбрать все поля из таблицы Tovary, в порядке возрастания цены:

 

SELECT * FROM Tovary ORDER BY nzena

 

Результат:

 

Nkod Cnaim nzena Nsort
  Обои Клеенка Краска Лак паркетный Кафель отделочный Натяжной потолок Зеркало 23.00 24.00 25.00 38.90 124.00 200.00 560.00  

 

В порядке убывания цены:

 

SELECT * FROM Tovary ORDER BY nzena DESC

 

Результат – строки в обратном порядке.

 

Пример 12: Выбрать поля фамилия, дата поступления заявки, стоимость товара и направить результат в таблицу S1.dbf

 

SELECT cfam, dpos, ntov FROM Pokup INTO TABLE S1.dbf

 

Результат: таблица S1.dbf, будет содержать данные:

 

Cfam Dpos Ntov
Гребенев А.Н. Степанова Е.Д. Гребенев А.Н. Акимченко В.Г. Звягинцев Р.Т. Шараева Е.Н. Денисов А.В. Скрынникова Е.В. 12/04/98 11/04/98 12/04/98 13/04/98 15/04/98 10/04/98 14/04/98 12/04/98 389.00 124.00 500.00 560.00 125.00 875.00 1200.00 498.00

 

Пример 13: Запрос из предыдущего примера направить в файл t1.txt

 

SELECT cfam, dpos, ntov FROM Pokup TO TABLE t1.txt

 

По умолчанию будет создан файл t1.txt. Если такой файл уже существует, то его содержимое будет заменено на результат запроса. Опция ADDITIVE позволяет добавить результаты в конец существующего файла.

 

SELECT cfam, dpos, ntov FROM Pokup TO TABLE t1.txt ADDITIVE

 

Пример 14: Направить результаты запроса на принтер

 

SELECT cfam, dpos, ntov FROM Pokup TO PRINTER




Поделиться с друзьями:


Дата добавления: 2014-10-17; Просмотров: 303; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.077 сек.