Работа с базами данных SQL для новичков
Работу с базами данных SQL, как структурированный язык запросов, выполняет практически идеально. Более того, он считается основным инструментом для взаимодействия с реляционными БД, позволяющим проводить с ними самые разные манипуляции.
И пусть возраст SQL насчитывает уже несколько десятилетий, он до сих пор используется весьма широко. Создать без него нечто серьезное весьма затруднительно.
Особенности языка SQL
SQL является непроцедурным языком программирования, предназначенным в первую очередь для описания данных, их выборки из реляционных БД и последующей обработки. Таким образом, SQL оперирует исключительно базами данных, и использовать только его для создания полноценного приложения нельзя.
В этом случае потребуются инструменты других языков, поддерживающих встраивание SQL-команд. Именно по причине своей специфичности SQL считают вспомогательным средством, позволяющим обрабатывать данные. Этот язык на практике используется только совместно с другими языками.
В общем случае прикладные средства программирования подразумевают создание процедур. SQL такими возможностями не обладает. Здесь нельзя указать способы решения задач — задается лишь смысл каждой конкретной задачи. Иначе говоря, в работе с базами данных SQL важны результаты, а не процедуры, приводящие к этим результатам.
Этот специфический язык программирования обладает одним важным свойством — возможностью доступа к реляционным базам данных. Иногда все реляционные БД ошибочно приравниваются к СУБД с применением средств SQL. На самом деле эти понятия следует различать.
Понятие реляционной СУБД
Не углубляясь в детали, можно дать такое определение: реляционной называется СУБД, использующая реляционную модель управления.
Доктор Е. Ф. Кодд в 1970 году опубликовал свою работу, где впервые было дано понятие реляционной модели. В публикации описывался некий математический аппарат, структурирующий данные и оперирующий ими. Основная идея состояла в представлении любых данных в виде абстрактной модели.
В соответствии с предложенной концепцией отношение между объектами (relation) представляет собой некую таблицу с данными. При этом существуют атрибуты (или признаки) отношения, которые соответствуют столбцам рассматриваемой таблицы. Сами данные предстают в виде наборов этих признаков и формируют записи (кортежи). Последние в свою очередь соответствуют табличным строкам.
Значения атрибутов каждого кортежа входят в домены, представляющие собой определенные наборы данных и задающие пределы допустимых значений.
Разберем это на примере. Существует домен «Неделя», в котором содержатся значения всех дней недели («Понедельник», «Вторник», …, «Воскресенье»). Атрибут, имеющий эти значения, называется «ДеньНедели». Тогда соответствие этого атрибута домену автоматически означает, что в одноименном столбце должны содержаться только перечисленные значения. Любые другие символы и группы символов недопустимы.
36 Особенности языка sql.
SQL явл. инструментом, предназнач. для обработки и чтения данных, содержащихся в комп. БД. SQL явл., прежде всего, инф-нно‑логич. языком, предназнач. для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL – это сокращенное название структурированного языка запросов (Structured Query Language). SQL применяется для орг-ции взаимодействия пользователя с базой данных. На самом деле SQL работает только с БД реляционного типа. Компьютерная программа, которая управляет базой данных, называется системой управления базой данных, или СУБД. Если пользователю необх. прочитать данные из БД, он запрашивает их у СУБД с пом. SQL. СУБД обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к БД: отсюда и название – структурированный язык запросов. Несмотря на то, что чтение данных по-прежнему остается одной из наиб. важн. Ф-ций SQL, сейчас этот язык исп-ся для реализации всех функциональных возможностей, кот. СУБД предоставляет пользователю, а именно:
Организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между элементами БД.
Чтение данных. SQL дает пользователю или приложению возможность читать из БД содержащиеся в ней данные и пользоваться ими.
Обработка данных. SQL дает пользователю или приложению возможн. изменять БД, т.е. добавлять в неё новые данные, а также удалять или обновлять уже имеющиеся в ней данные.
Управление доступом. С пом. SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.
Совместное использование данных. SQL координирует совместное использование данных пользователями и работающими параллельно, чтобы они не мешали друг другу.
Целостность данных. SQL позволяет обеспечить целостность БД-ых, защищая ее от разрушения из-за несогласованных изменений или отказа системы.
Т. образом, SQL явл. достаточно мощным языком для взаимодействия с СУБД.
Достоинства SQL.
SQL — это легкий для понимания язык и в то же время универсальное программное средство управления данными.
Успех языку SQL принесли следующие его особенности:
— независимость от конкретных СУБД;
— переносимость с одной вычислительной системы на другую;
— возможность выполнения специальных интерактивных запросов:
— обеспечение программного доступа к базам данных;
— возможность различного представления данных;
— полноценность как языка, предназначенного для работы с БД;
— возможность динамического определения данных;
— поддержка архитектуры клиент/сервер.
Все перечисленные выше факторы явились причиной того, что SQL стал стандартным инструментом для управления данными на персональных компьютерах.
37 Базовые структуры предложений языка в запросах
Каждое предложение SQL — это запрос или обращение к БД, которое приводит к изменению в БД. В соответствии с тем, какие изменения происходят в БД, различают следующие типы запросов:
— запросы на создание или изменение в БД новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);
— запросы на получение данных;
— запросы на добавление новых данных (записей)
— запросы на удаление данных;
Любой запрос явл. программой, написанной на языке структурированных запросов SQL. Фактически программа на SQL представляет собой некоторую фразу-запрос к выборке данных на английском языке, записанную в определенной структуре, которую затем СУБД преобразует в требуемый результат.
В большинстве СУБД предложение заканчивается «;» и СУБД не обрабатывает информацию до тех пор пока не встречает «;». Предложение состоят из фраз и оно начинаются с зарегистрированного слова. Каждая фраза имеет название.
Назначения некоторых основных операторов языка SQL:
SELECT (выбрать) – (выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями; FROM – указывает таблицу, из которой были выбраны поля; WHERE – создает условие на выборку данных в записях; ORDER BY – сортирует записи в заданном порядке; GROUP BY – группирует совпадающие записи при выполнении итоговых запросов; DISTINCTROW – исключает из результирующего набора повторяющиеся записи; TRANSFORM – вычисляет выражения в перекрестных запросах; PIVOT – определяет заголовки столбцов в таблице перекрестного запроса.
О предлож. SELECT. Все запросы на получение практически любого кол-ва данных из одной или неск. таблиц выполняются с помощью единственного предложения SELECT. В общем случае рез-том реализации предложения SELECT является другая таблица. К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Представляет исторический интерес тот факт, что именно возможность включ. одного предложения SELECT внутрь другого послужила мотивировкой использ. прилагательного «структуризированный» в названии языка SQL. В конструкциях исп. обозначения: звездочка (*) для обозначения «все» – употр. в обычном для програм-ния смысле, т.е. «все случаи, удовлетворяющие определению»; (,) – исп. для разделения элементов списков; ([]) – означают, что конструкции, заключ. в скобки, явл. необяз. ; прямая черта (|) – нал. выбора из двух или более возможностей.и др
36-37. Особ—сти языка SQL. Базовые структуры предложений языка в запросах(а/в)
SQL — Структурированный Язык Запросов. Инф-е пр-во — более унифиц-м. Это привело к необх-сти создания стандартного языка, который мог
SELECT в языке SQL (для одной таблицы): SELECT (выбрать) специфицированные поля
FROM (из) специфицированной таблицы
WHERE (где) некоторое специфицированное условие является истинны
SELECT [DISTINCT] список_выбираемых_элементов (полей)
FROM список_таблиц (или представлений)
[GROUP BY поле (или поля) [HAVING предикат]]
[UNION другое_выражение_Select]
[ORDER BY поле (или поля) или номер (номера)];
Использование квалификатора AS
Данный квалификатор заменяет в результирующей таблице существующее название столбца на заданное.
К агрегирующим функциям относятся функции вычисления суммы (SUM), макс-го (SUM) и мин-го (MIN) знач-й столбцов, арифм-го среднего (AVG), а также количества строк, удовлетворяющих заданному условию (COUNT).
SELECT count(*), sum (budget), avg (budget),
вычислить: количество отделов, являющихся подразделениями отдела 100 (Маркетинг и продажи), их суммарный, средний, мин-й и максимальный бюджеты COUNT SUM AVG MIN MAX
5 3800000.00 760000.00 500000.00 1500000.00
Предложение FROM команды SELECT
В предложении FROM перечисляются все объекты (один или несколько), из которых производится выборка данных. Каждая таблица или представление, о которых упоминается в запросе, д.быть перечислены в предложении FROM.
Типы предикатов, используемых в предложении WHERE:
сравнение с использованием реляционных операторов
= равно <> не равно != не равно > больше < меньше
BETWEEN IN LIKE CONTAINING IS NULL
Операции сравнения Если в базе данных определены домены, то сравниваемые элементы должны относиться к одному домену.
SELECT first_name, last_name, dept_no,
Предикат BETWEEN задает диапазон значений, для которого выражение принимает значение true. Разрешено также испть конструкцию NOT BETWEEN.
SELECT first_name, last_name, salary
WHERE salary BETWEEN 20000 AND 30000
получить список сотрудников, годовая зарплата которых больше 20000 и меньше 30000 FIRST_NAME LAST_NAME SALARY
Значения, определяющие нижний и верхний диапазоны, могут не являться реальными величинами из базы данных. И это очень удобно — ведь мы не всегда можем указать точные значения диапазонов!
SELECT first_name, last_name, salary
WHERE last_name BETWEEN «Nel» AND «Osb»
получить список сотрудников, фамилии которых находятся между «Nel» и «Osb» FIRST_NAME LAST_NAME SALARY
SELECT first_name, last_name, hire_date
WHERE hire_date NOT BETWEEN «1-JAN-1989» AND «31-DEC-1993»
IN Предикат IN проверяет, входит ли заданное значение, предшествующее ключевому слову «IN» (например, значение столбца или функция от него) в указанный в скобках список. Если заданное проверяемое значение равно какому-либо элементу в списке, то предикат принимает значение true. Разрешено также использовать конструкцию NOT IN.
SELECT first_name, last_name, job_code
WHERE job_code IN («VP», «Admin», «Finan»)
LIKE Предикат LIKE используется только с символьными данными. Он проверяет, соответствует ли данное символьное значение строке с указанной маской. В качестве маски используются все разрешенные символы (с учетом верхнего и нижнего регистров), а также специальные символы:
% — замещает любое количество символов (в том числе и 0),
_ — замещает только один символ.
Разрешено также использовать конструкцию NOT LIKE.
SELECT first_name, last_name
получить список сотрудников, фамилии которых начинаются с буквы «F» FIRST_NAME LAST_NAME
Логические операторы К логическим операторам относятся известные операторы AND, OR, NOT, позволяющие выполнять различные логические действия: логическое умножение (AND, «пересечение условий»), логическое сложение (OR, «объединение условий»), логическое отрицание (NOT, «отрицание условий»). В наших примерах мы уже применяли оператор AND. Использование этих операторов позволяет гибко «настроить» условия отбора записей.
Соединение (JOIN) Операция соединения используется в языке SQL для вывода связанной информации, хранящейся в нескольких таблицах, в одном запросе. Связывание производится, как правило, по первичному ключу одной таблицы и внешнему ключу другой таблицы — для каждой пары таблиц. При этом очень важно учитывать все поля внешнего ключа, иначе результат будет искажен. Соединяемые поля могут (но не обязаны!) присутствовать в списке выбираемых элементов. Предложение WHERE может содержать множественные условия соединений. Условие соединения может также комбинироваться с другими предикатами в предложении WHERE.