Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_1-44.docx
Скачиваний:
19
Добавлен:
21.04.2019
Размер:
1.07 Mб
Скачать

20. Sql. Состав операторов языка.

SQL – структурированный язык запросов. Применяется для общения пользователя с реляционной БД и состоит из трёх частей:

  1. DDL – Data Definition Language – язык определения данных – предназначен для создания БД, таблиц, индексов и т. д. и редактирования её схемы.

  2. DCL – Data Control Language – язык управления данными – содержит операторы для разграничения доступа пользователей к объектам БД.

  3. DML – Data Manipulation Language – язык обработки данных – содержит операторы для внесения изменений в содержимое таблиц БД.

Предоставляет пользователю простой и понятный механизм доступа к данным не связанный с конструированием алгоритмов и их описанием на языке высокого уровня (ЯВУ).

На языке SQL пользователь объясняет СУБД, что нужно делать, а не как это делать, далее СУБД сама анализирует текст запроса и определяет, как его выполнять.

Язык SQL является промышленным стандартом, который в большей или меньшей степени поддерживает любая СУБД, «претендующая» на звание реляционной.

История возникновения и стандарты языка SQL. В начале 70-х Кодд предложил реляционную модель, в качестве новой модели БД. Для первого прототипа реляционной СУБД разрабатывались и опробовались различные языки запросов, один из которых получил название SEQUEL (Structured English Query Lanhuage). С момента создания язык претерпел массу изменений, но идеология осталась неизменной. На язык были наложены стандарты.

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

Когда ведут речь о стандартах в разработке ПО обычно подразумевают организации:

  • ANSI – Американский национальный институт стандартов

  • ISO – Международная организация по стандартизации

Работа над официальным стандартом языка SQL началась в рамках комитета ANSI. Позже этот стандарт был утверждён и ISO.

Затем появились стандарты SQL-1999 и SQL 2003. Тем не менее, все эти стандарты не решили всех проблем связанных с наличием нескольких диалектов языка. Некоторые положения стандарта игнорируются разработчиками.

Несмотря на отличия, все коммерческие СУБД поддерживают некоторое ядро языка, описанное в стандарте одинаково. Отличий немного. Каждая СУБД по прежнему поддерживает свой диалект языка. В СУБД Microsoft SQL Server входит язык Transact-SQL разработанный на основе одного из стандартов SQL.

Типы данных в языке SQL:

  • char

  • char(n)

  • VARCHAR(n)

  • INT SMALLINT

  • FLOAT

  • SMALLFLOAT

  • DECIMAL(p)

  • DECIMAL(p,n)

  • MONEY(p,n)

  • DATE…

21. Структурированный язык запросов (sql). Оператор select и вычисления.

  1. Выборка данных

SELECT [ALL | DISTINCT] <список_выбора>

FROM<имя_таблицы>,…

[WHERE <условие>]

[GROUP BY<имя_столбца>, …]

[HAVING <условие>]

[ORDER BY <имя_столбцы> [ASC | DESC],…]

Пример:

SELECT author FROM authors; // получение списка всех авторов

SELECT * FROM authors; // получить список всех полей таблицы authors

SELECT title FROM titles WHERE yearpub > 1996; // найдём все книги опубликованные после 1996

SELECT title FROM titles WHERE yearpub>=1995 AND yearpub<=1997 // ищем все публикации за интервал 1995-1997.

SELECT title FROM titles WHERE yearpub IN (1995,1996,1997); // проверка на вхождение в список.

  1. использование «шаблона» для выборки данных

WHERE <имя_столбца> LIKE <образец> [ESCAPE <ключевой_символ>]

% - заменяет любое количество символов

_ - заменяет одиночный символ

Пример:

SELECT publisher, url FROM publishers WHERE publishers LIKE ‘%Wiley%’

SELECT title FROM titles WHERE title LIKE ‘SQL%’

Таблица mark_st связана с таблицей exam_st по полю id_ex.

Таблица mark_st связана с таблицей student по полю id_st.

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

SELECT student.surname, mark_st.id_ex, mark_st.mark

FROM student, mark_st

WHERE student.id_st = mark_st.id_st

В предложении WHERE указано условие соединения таблиц

Используя псевдонимы можно переписать предыдущий запрос следующим образом:

SELECT E.surname, M.id_ex, M.mark

FROM student E.mark_st M

WHERE E.id_st = M.id_st

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

Агрегатные функции, которые могут использоваться в операторах SELECT:

  1. AVG (<имя_поля>) – среднее по всем значениям диалогового поля.

  2. COUNT (<имя_поля>) – или COUNT (*) – число записей

  3. MAX (<имя_поля>) – максимальное из всех значений данного поля

  4. MIN (<имя_поля>) – минимальное из всех значений данного поля

  5. SUM (<имя_поля>) – сумма всех значений данного поля.

Каждая агрегирующая функция возвращает единственное значение.

В арифметических выражениях допускаются операции сложения, вычитания, умножения и деления, математические функции cos sin, строковые константы, операции сравнения.

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

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

Определение количества книг для каждого издательства:

SELECT publishers.publisher, count(titles.title)

FROM titles, publishers

WHERE titles.pub_id=publishers.pub_id

GROUP BY publishers;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]