Основы языка sql. Основы языка SQL и построение SQL-запросов. Сортировка, поиск, фильтрация данных. Краткие сведения из теории

2. ОСНОВЫ ЯЗЫКА SQL

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

SQL (Structured Query Language), или Структурированный Язык Запросов,

– это язык, который дает возможность работать с данными в реляционных базах данных. Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов), а также ISO (Международной организацией по стандартизации). Однако большинство коммерческих программ баз данных расширяют SQL, добавляя разные особенности в этот язык, которые, как они считают, будут полезны. Эти дополнения являются не стандартизированными и часто приводят к сложностям при переходе от одного сервера данных к другому.

Для обращения к базе данных используются запросы, написанные на языке SQL. Запросом называется команда, которая передается серверу базы данных, и которая сообщает ему, что нужно вывести определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, хотя в большинстве случаев ее можно также передать на принтер, сохранить в файле (как объект в памяти компьютера) или представить как вводную информацию для другой команды или процесса.

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

Для выполнения SQL-запросов будем использовать SQL Management Studio. При запуске среды Management Studio появляется следующее окно

Рис. 25. Задание параметров подключения

Задействуем подключение к серверу, находящемуся на локальном компьютере. Параметр «Проверка подлинности» задает аутентификацию при подключении к серверу – при выбранном значении «Проверка подлинности Windows» (Windows authentification) в качестве имени пользователя и пароля будут использованы системные параметры.

Если все сделано правильно, то появляется главное окно программы. Для перехода в режим запросов необходимо нажать кнопку «Создать запрос»

Рис. 26. Переход в режим создания запросов

Отметим, что будут создаваться запросы, работающие с выделенной базой данных. После нажатия кнопки «Создать запрос» среда SQL Management Studio принимает вид, как показано на рисунке (рис. 27). Обратите внимание на кнопку «Выполнить», которая выполняет запросы, введенные в правом текстовом поле, и выводит результат их выполнения.

2.1. Базовая конструкция SQL-запроса

Where <условие>

Эта операция представляет собой композицию реляционных операторов проекции, соединения и выбора. Проекция берется для указанного списка атрибутов, соединение выполняется для указанного списка отношений, выбор определяется условием отбора записей where .

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

Итак, напишем первый запрос и нажмем клавишу F5 (пункт меню Запрос

– Выполнить): select * from Туристы;

В результате возвращаются все записи из таблицы «Туристы» базы дан-

ных BDTur_firmSQL.

Главное окно программы принимает вид (рис. 27).

Рис. 27. Извлечение строк из таблицы «Туристы»

Данный запрос извлекал все столбцы таблицы. Если необходимо выбрать только столбец «Фамилия», запрос необходимо модифицировать следующим образом:

select Фамилия from Туристы;

Результат выполнения данного запроса представлен на рисунке 28.

Для вывода определенного количества записей используем следующий запрос (рис. 29):

select top 3 Фамилия from Туристы;

Извлекаются первые три записи поля «Фамилия», расположенные в самой таблице «Туристы». Обратим внимание на то, что фамилии расположены не в алфавитном порядке, а в порядке, в котором они были сохранены в базе данных.

Добиться алфавитного порядка можно с помощью предложения order by , содержащего список атрибутов, после каждого из которых стоит либо ключевое словоasc (сортировка по возрастанию), либо ключевое словоdec (сортировка по убыванию). Теперь предыдущий запрос может выглядеть так:

select top 3 Фамилия from Туристы order by Фамилия asc;

Вводя оператор percent , можем получить указанный процент записей от общего числа:select top 25 percent Фамилия from Туристы;

Для отбора записей, отвечающих заданному условию, используем опера-

тор where :

select * from Туры where Цена > 27000;

Этот запрос возвращает все записи из таблицы «Туры», в которых поле «Цена» имеет значение, большее 27000 (рис. 31).

Рис. 31. Отбор записей со всеми полями по заданному значению

Оператор where поддерживает работу со знаками сравнения <, >, >=, <=.

Точную выборку только из заданного множества значений осуществляет оператор in , в следующем примере извлекаются лишь те записи, в которых значение поля «Цена» в точности равно либо 10 000, либо 20 000, либо 30 000 (рис. 32):

select * from Туры where Цена in (10000, 20000, 30000);

Рис. 32. Отбор записей по точному совпадению значений поля Цена

Выборка значений, лежащих в указанном интервале, осуществляется опе-

ратором between <первое_значение> and <второе_значение>(рис. 33):

Select * from Туры where Цена between 10000 and 30000;

Рис. 33. Отбор записей по значениям в указанном интервале поля Цена

2.2. Агрегирующие функции языка SQL

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

Агрегирующие функции производят вычисление одного «собирающего» значения (суммы, среднего, максимального, минимального значения и т. п.) для заданных групп строк таблицы. Группы строк определяются различными значениями заданного поля (полей) таблицы. Разбиение на группы выполняется с помощью предложенияgroup by .

Рассмотрим перечень агрегирующих функций.

Count определяет количество записей данного поля в группе строк.

sum вычисляет арифметическую сумму всех выбранных значений данного поля.

avg рассчитывает арифметическое среднее (усреднение) всех выбранных значений данного поля.

max находит наибольшее из всех выбранных значений данного поля.

min находит наименьшее из всех выбранных значений данного поля.

Для определения общего числа записей в таблице Туристы используем запрос select count (*) from Туристы;

Результат выполнения запроса представлен на рисунке 34.

Отметим, что результатом запроса является одно число, содержащееся в поле с отсутствующим именем.

Рис. 34. Результат запроса с функцией count

select Фамилия, count (Фамилия) from Туристы group by Фамилия;

Синтаксис использования других операторов одинаков – следующие запросы извлекают сумму, арифметическое среднее, наибольшее и наименьшее значения поля «Цена» таблицы «Туры» (здесь заданной группой записей, как и в первом примере с функцией count , являются все записи таблицы).

select sum(Цена) from Туры select avg(Цена) from Туры select max(Цена) from Туры select min(Цена) from Туры

Если значение поля может быть незаполненным, то для обращения к таким полям необходимо использовать оператор null . Отметим, что величинаnull не означает, что в поле стоит число 0 (нуль) или пустая текстовая строка. Существует два способа образования таких значений:

1) Microsoft SQL Server автоматически подставляет значение null , если в значение поля не было введено никаких значений и тип данных для этого поля не препятствует присвоению значенияnull ;

2) или если пользователь явным образом вводит значение null .

2.3. Оператор сравнения записей like

Оператор сравнения like нужен для поиска записей по заданному шаблону. Эта задача является одной из наиболее часто встречаемых задач – например, поиск клиента с известной фамилией в базе данных.

Предположим, что в таблице «Туристы», содержащей поля «Фамилия», «Имя» и «Отчество», требуется найти записи клиентов

с фамилиями, начинающимися на букву «И».

Рис. 35. Запрос с оператором like select Фамилия, Имя, Отчество from Туристы where Фамилия Like "И%"

Результатом этого запроса будет таблица, представленная на рисунке 35.

Оператор like содержит шаблоны, позволяющие получать различные результаты (таблица 7).

Таблица 7 Шаблоны оператора like

2.4. Команды определения данных языка SQL

Пока мы познакомились только с работой некоторых команд языка SQL по извлечению таблиц и данных из таблиц, предполагая, что сами таблицы были созданы кем-то ранее. Это наиболее реальная ситуация, когда небольшая группа людей (проектировщики баз данных) создает таблицы, которые затем используются другими людьми. Эти команды относятся к области SQL, называемой DML (Data Manipulation Language, или Язык Манипулирования Данными). Тем не менее существует специальная область SQL, называемая DDL (Data Definition Language, или Язык Определения Данных), которая специально работает над созданием объектов данных.

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

Пример команды create table :create table ClientInfo (

FirstName varchar(20), LastName varchar(20), Address varchar(20), Phone varchar(15));

Тип varchar предназначен для хранения символов не в кодировке Unicode. Число, указываемое в скобках, определяет максимальный размер поля и может принимать значение от 1 до 8000. Если введенное значение поля меньше зарезервированного, при сохранении будет выделяться количество памяти, равное длине значения. После выполнения этого запроса в окне «Сообщения» появляется сообщение:

Команды выполнены успешно.

После перезапуска Management Studio в списке таблиц появилась новая таблица (рис. 36).

Итак, была создана таблица, состоящая из четырех полей типа varchar , причем для трех полей была определена максимальная длина 20 байт, а для одного – 15. Значения полей не заполнены – на это указывает величинаNull .

Можно удалить созданную таблицу непосредственно в интер-

фейсе Management Studio, щелкнув правой кнопкой и выбрав «Уда-

лить». Рис. 36. Созданная таблица в базе данных

2.5. Команды изменения данных языка DML

Значения могут быть помещены и удалены из полей тремя командами языка DML (Язык Манипулирования Данными):

insert (вставить),

update (изменить),

delete (удалить).

Команда insert имеет свои особенности.

1) При указании значений конкретных полей вместо использования какихлибо значений можно применить ключевое слово DEFAULT.

2) Вставка пустой строки приводит к добавлению пробела, а не значения

3) Строки и даты задаются в апострофах.

4) Можно задавать NULL явно, а можно задавать DEFAULT.

Например:

insert into ClientInfo (FirstName, LastName, Address, Phone) values("Petr","Petrov","Chehova 13","1234567");

Однократное выполнение этого запроса (нажатие клавиши F5 один раз) приводит к добавлению одной записи. Добавим еще несколько записей, изменяя значения values :

insert into ClientInfo (FirstName, LastName, Address, Phone) values("Ivan","Ivanov","Naberejnaya 13","1234568");

insert into ClientInfo (FirstName, LastName, Address, Phone) values(null,"Sidorov","Naberejnaya 25","1234569");

Извлечем все записи созданной таблицы (рис. 37): select * from ClientInfo;

Рис. 37. Все записи таблицы ClientInfo

Отметим, что третья строка содержит значение null , а не текстовую строку

Команда update позволяет изменять заданные значения записей:update ClientInfo set FirstName = "Andrey" where FirstName = "Petr";

В этом случае в первой записи поля FirstName значениеPetr изменится на

Andrey (рис. 38).

Рис. 38. Изменение одной записи

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

Команда delete удаляет записи из таблицы.delete from ClientInfo where LastName like "Petrov";

Результатом этого запроса будет удаление первой записи из таблицы

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

Запросы с командами insert ,update иdelete могут содержать в себе все прочие конструкции языка SQL.

2.6. Контрольные вопросы и задания к разделу 2

1. Напишите SQL-запросы для вывода на экран содержания всех таблиц БД (для каждой таблицы свой запрос, см. пример из п. 2.1.select * from Туристы; ).

2. Добавьте к соответствующим запросам задания п. 1 сортировку по фамилиям и именам.

3. Что будет выведено на экран в результате выполнения следующего запроса:

select Фамилия, Имя, Отчество from Туристы order by Имя dec, Отчество asc; ?

4. Напишите SQL-запрос, который позволит отобрать всех туристов, проживающих в заданном городе. Используйте сортировку при выводе.

5. Посчитайте туристов с одинаковыми именами.

7. Как определить среднюю цену по турам в Париж, (например, цена может меняться в зависимости от сезона)?

8. Как будет выглядеть таблица «Туристы» после выполнения следующей

SQL-команды: update Туристы set Имя = "Владимир"?

9. Что произойдет с таблицей «Туристы» после выполнения SQL-команды: delete from Туристы where Отчество like "Иван" ?

10.Что произойдет с таблицей «Туры» после выполнения SQL-команды: delete from Туры ?

11.Выясните с помощью SQL-запроса к БД, кто из туристов еще не оплатил свои путевки? Подсчитайте их количество и общую сумму недоплаты.

12.Распечатайте все предлагаемые турфирмой туры в алфавитном порядке.

13.Составьте с помощью оператора update SQL-команду для переименования города Ульяновска в Симбирск в информации о туристах.

14.Распечатайте все предлагаемые турфирмой туры с сезонами.

15.Выведите полную информацию о туристах, выкупивших путевки на какойнибудь определенный тур и сезон.

16.С учетом внесенных изменений в структуру БД по заданию п.12 раздела 1.5. постройте SQL-запрос, выводящий полную контактную информацию о туристах, имеющих долги по оплате своих путевок.

17.С помощью операторов добавления в БД перенесите соответствующую информацию из отношений «Туристы» и «Информация о туристах» в отноше-

ние ClientInfo.

18.Сформулируйте на естественном языке содержание следующих SQLзапросов к БД:

select *from Туристыwhere Имяin ("Владимир", "Иван");select *from Сезоныorder by [Количество мест]dec ;

update ClientInfoset FirstName = "Andrey"where FirstName = NULL;

В этой главе…

  • Что такое SQL
  • Заблуждения, связанные с SQL
  • Взгляд на разные стандарты SQL
  • Знакомство со стандартными командами и зарезервированными словами SQL
  • Представление чисел, символов, дат, времени и других типов данных
  • Неопределенные значения и ограничения
  • Использование SQL в системе клиент/сервер
  • SQL в сети

SQL - это гибкий язык, который можно использовать самыми разными способами. Он является самым распространенным инструментом, используемым для связи с реляционной базой данных. В этой главе я объясню, чем является SQL и чем он не является, в частности, чем SQL отличается от компьютерных языков других типов. Затем вы познакомитесь с командами и типами данных, которые поддерживает стандартный SQL. Кроме того, я объясню такие основные понятия, как неопределенные значения и ограничения . И, наконец, будет дан обзор того, как SQL вписывается в среду клиент/сервер, а также в Internet и интранет-сети организаций.

Чем является SQL и чем он не является

Первое, что надо уяснить насчет SQL, - этот язык не является процедурным , как FORTRAN, Basic, С, COBOL, Pascal и Java. Чтобы решить задачу с помощью одного из этих процедурных языков, приходится писать процедуру, которая выполняет одну за другой указанные операции, пока выполнение задачи не будет закончено. Процедура может быть линейной последовательностью или содержать ветвление, но в любом случае программист указывает порядок выполнения.

Иными словами, SQL является непроцедурным языком. Чтобы с его помощью решить задачу, сообщите SQL, что именно вам нужно, как если бы вы говорили с джином из лампы Аладдина. И при этом не надо говорить, каким образом получить для вас то, что вы хотите. Система управления базами данных (СУБД) сама решит, как лучше всего выполнить ваш запрос.

Хорошо. Только что я сказал, что SQL не является процедурным языком. В сущности, это правда. Однако миллионы программистов вокруг (и вы, возможно, один из них) привыкли решать задачи процедурным путем, поэтому в последние годы оказывалось немалое давление, чтобы дополнить SQL некоторыми процедурными возможностями. Поэтому теперь в составе новой версии спецификации SQL, SQL:2003, имеются такие средства процедурного языка, как блоки BEGIN, условные операторы IF, функции и процедуры. Благодаря этим новым средствам, можно хранить программы на сервере с тем, чтобы их могли повторно использовать многие пользователи.

Для иллюстрации того, что я имел в виду, когда говорил "сообщите системе, что именно вам нужно", предположим, что у вас имеется таблица EMPLOYEE с данными о служащих и вы хотите выбрать из нее все строки, соответствующие всем "старшим" работникам. Под "старшими" работниками можно подразумевать каждого, кто старше 40 лет или кто получает более 60000 долларов в год. Нужную вам выборку можно сделать с помощью следующего запроса:

SELECT * FROM EMPLOYEE WHERE AGE >40 OR SALARY >60000;

Этот оператор выбирает из таблицы EMPLOYEE все строки, в которых или значение столбца AGE (возраст) больше 40 или значение в столбце SALARY (зарплата) больше 60000. SQL сам знает, каким образом надо выбирать информацию. Ядро базы данных проверяет базу и принимает для себя решение, каким образом следует выполнять запрос. Все, что от вас требуется, - указать, какие данные вам нужны.

Помни:
Запрос - это вопрос, который вы задаете базе данных. Если какие-либо ее данные удовлетворяют условиям вашего запроса, то SQL передает их вам
.

В современных реализациях SQL отсутствуют многие простые программные конструкции, которые являются фундаментальными для большинства других языков. В приложениях для повседневной жизни, как правило, требуются хотя бы некоторые из этих конструкций, поэтому SQL на самом деле представляет собой подъязык данных. Даже имея дополнения, появившиеся в SQL вместе со стандартом SQL: 1999 и дополнительные расширения, добавленные в SQL:2003, все равно для создания законченного приложения необходимо использовать вместе с SQL один из программных языков, такой, например, как С.

Выбирать информацию из базы данных можно одним из следующих способов.

  • С помощью однократного непрограммируемого запроса с консоли компьютера, вводя команду SQL и читая на экране результаты ее выполнения. Консоль - это традиционный термин, означающий компьютерное оборудование, которое выполняет работу клавиатуры и экрана, применяемых в современных ПК. Запросы с консоли пригодны тогда, когда требуется быстрый ответ на конкретный запрос. Для удовлетворения какой-либо текущей потребности вам могут потребоваться такие данные из базы, которые до этого никогда не требовались. Возможно, они вам никогда больше не понадобятся, но сейчас они нужны. Введите с клавиатуры соответствующий SQL-запрос, и через некоторое время на вашем экране появится результат.
  • С помощью программы, которая извлекает из базы данных информацию, а затем создает на основе этих данных отчет, выводимый или на экран, или на печать . Язык SQL можно использовать и так. Сложный запрос SQL, который, возможно, еще пригодится в будущем, можно поместить прямо в программу. Это позволяет многократно использовать его в дальнейшем. Таким образом, формулировка запроса выполняется один раз. Как вставлять код SQL в программы, написанные на другом языке, рассказывается в главе 15.

SQL - язык структурных запросов, созданный сотрудниками фирмы IBM для реляционных баз данных в начале 1970-х гг., а затем реализованный в рамках реляционных СУБД других фирм-разработчиков. Впоследствии SQL фактически стал стандартом в области языков запросов к реляционным базам данных.

В 1989 г. Американский национальный институт стандартов (American National Standards - ANSI) на основе анализа различных реализаций SQL разработал стандарт SQL-86. В 1992 г. появилась его новая версия - SQL-92, или SQL2. Эта версия реализована практически во всех современных СУБД. В настоящее время разрабатывается версия стандарта SQL3.

SQL представляет собой набор операторов, позволяющих осуществлять выборку (оператор SELECT) данных, их модификацию (оператор UPDATE) и удаление (оператор DELETE), а также ввод новых данных (оператор INSERT). Кроме того, в данный язык входят операторы определения переменных, создания и вызова хранимых процедур, функций и специальных процедур - триггеров. Всего SQL содержит более 100 операторов и позволяет разрабатывать сложные приложения. Одним из основных операторов SQL является SELECT.

Оператор SELECT предназначен для осуществления запросов по выборке данных из БД. Его синтаксис приведен далее:

SELECT Ссписок выбираемых полей>

В данном описании использованы следующие обозначения:

  • ? ссписок таблиц> - синтаксическая конструкция, требующая дальнейшего уточнения;
  • ? - синтаксическая конструкция внутри квадратных скобок (является необязательной и, в зависимости от ситуации, может использоваться или отсутствовать);
  • ? ASC | DESC - наличие символа “|” означает, что может использоваться синтаксическая конструкция, находящаяся слева или справа от этого символа;
  • ? DICTINCT - указывает на необходимость исключения из результата одинаковых кортежей (записей);
  • ? ссписок выбираемых полей> - список атрибутов (полей), которые входят в состав результирующего отношения. Кроме атрибутов здесь могут быть представлены и выражения;
  • ? ссписок таблиц> - список отношений (таблиц), которые используются в запросе;
  • ? = [ [сусловие связи>]...]
  • ? [АЫБсусловие отбора> [А]>Ш|(Ж]...]
  • ? сусловие связи> - используется для связи таблиц, используемых в запросе;
  • ? сусловие отбора> - выражение, определяющее, какие кортежи (записи) будут включены в результат. При составлении этого выражения можно использовать арифметические (+, -, х, /) и логические операции (AND, OR, NOT), а также встроенные функции SQL.

Текст запроса заканчивается знаком «;».

Сформулируем запрос: «Вывести следующую информацию о поставках контрагентом с кодом 1: номер накладной, дата поставки».

SELECT №накладной, ДатаПоставки

FROM Поставка

WHERE КодКонтрагента=1;

В этом запросе ссписок выбираемых полей> представлен атрибутами (полями) Мнакладной, ДатаПоставки, ссписок таблиц> - одним отношением (таблицей) Поставка, а сусловие выборки> включает одно сусловие отбора> - КодКонтрагента=1.

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

Рассмотрим пример с использованием нескольких отношений (таблиц). Переформулируем первый запрос: «Вывести следующую информацию о поставках товаров контрагентами: номер накладной, наименование контрагента, дата поставки». В SQL он представляется следующим образом:

SELECT №накладной, ДатаПоставки, НаимКонтрагента FROM Контрагент INNER JOIN Поставка ON Контрагент. КодКонтрагента = Поставка.КодКонтрагента;

Здесь сусловие связи> представлено выражением (Контрагент.Код- Контрагента = Поставка. Код Контрагента). Оно указывает, при помощи каких атрибутов (полей) осуществляется связывание таблиц.

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

SELECT №накладной, ДатаПоставки, КодТовара, Цена- Поставщика х Количество AS суммаПозиции FROM Поставка INNER JOIN СпецПоставки ON Поставка. №накладной = СпецПоставки.№накладнойПоставки;

При составлении вычисляемых атрибутов могут использоваться встроенные функции:

COUNT(*) - подсчитывает количество кортежей (записей); MAX(Atr) - выдает наибольшее значение атрибута Atr;

MIN(Atr) - выдает наименьшее значение атрибута Atr. Рассмотрим пример.

Необходимо определить общее количество поставленных товаров:

SELECT КодТовара, Sum(Количество) AS Поставлено FROM СпецПоставки GROUP BY КодТовара;

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

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

Где - перечень атрибутов (полей), в соответствии с которыми производится сортировка результата запроса; AS С (DESC) - признак упорядочивания по возрастанию (убыванию).

Упорядочим записи результата запроса по убыванию:

SELECT КодТовара, Sum(Количество) AS Поставлено

FROM СпецПоставки

GROUP BY КодТовара

ORDER BY Sum (Количество) DESC;

Конструкция

Join on , где, - связываемые отношения (таблицы);

Определяет внешнее (левое - left и правое - right) или внутреннее (inner) соединение отношений (таблиц).

Внутреннее соединение включает в результирующее отношение (таблицу) только те кортежи (записи) обоих отношений (таблиц), для которых выполняется.

Рассмотрим внутреннее соединение на примере запроса: «Определить количество поставок каждым контрагентом из справочника». С использованием конструкции

SELECT НаимКонтрагента, Count(№накладной) AS Количество

FROM Контрагент LEFT JOIN Поставка ON Контрагент. КодКонтрагента = Поставка.КодКонтрагента GROUP BY Контрагент.НаимКонтрагента;

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

На этом обзор основных конструкций языка SQL завершается. Сложные SQL-запросы, а также ряд других параметров будут рассматриваться далее при решении конкретных задач в п. 3.4.5 и 3.4.6.

Доступ к информации, содержащейся в реляционных базах данных, для пользователей, программ и вычислительных систем обеспечивает язык запросов SQL (Structured Query Language)

Достоинства SQL

Независимость от конкретных СУБД – все распространенные СУБД используют SQL.

Приложения, созданные с помощью SQL, допускают использование как для локальных БД, так и для клиент-серверных систем.

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

SQL (Structured Query Language , язык структурированных запросов ) - универсальный информационно-логический язык создания, модификации и управления данными в реляционных базах данных.

SQL основан на реляционной алгебре и делится на три части:

Операторы определения данных (Data Definition Language, DDL)

Операторы манипуляции данными (Data Manipulation Language, DML)

Операторы доступа к данным (Data Control Language, DCL).

SQL стандартизован, но имеет нестандартные варианты (диалекты), преодолевающие ограничения стандартного SQL.

Самые известные диалекты SQL:

PL/SQL , используемый в СУБД Oracle;

Transact-SQL , используемый в Microsoft SQL Server.

Оператор выбора языка SQL

SELECT элементы

FROM таблица(цы)

]

Производит выборку указанных элементов из указанных таблиц в соответствии с указанными условиями. Результатом является новая таблица.

SELECT – выбрать

DISTINC – устранить в результирующей таблице одинаковые строки

FROM – из (таблиц)

WHERE – где

GROUP BY – выборка с точностью до группы строк

HAVING – условие выборки группы

ОRDER BY – упорядочивание результата по указанным полям

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

Создание базы данных и таблицы с полным описанием их структуры

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

Выполнение простых и сложных запросов, осуществляющих преобразование данных

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

Упорядочение выходных полей. Для вывода результатов в запросе в требуемой последовательности применяется команда ORDER BY . Сортировку можно задавать по значению одного или нескольких выбранных полей. Последовательность сортировки для каждого из столбцов задается ASC (по возрастанию) или DESC (по убыванию). Столбец, по значениям которого упорядочиваются возвращаемые строки, можно указывать именем столбца или его относительным порядковым номером.



Выходные столбцы формируются в запросе, а не извлекаются непосредственно из базовой таблицы (их нет в таблице базы данных); они не имеют имен. Для ссылки на выходные столбцы в предложении ORDER BY используется порядковый номер выходного столбца из предложения SELECT . В этом случае в SELECT используются не имена столбцов для указания полей, а номера в выходных данных (это не номера в таблице базы данных).

Оператор EXISTS проверяет только наличие в таблице результатов вложенного запроса хотя бы одной строки. Он используется для образования предиката, который фиксирует, будет ли подзапрос генерировать выходные данные. Оператор EXISTS генерирует значение «истина» или «ложь». Его можно применять в комбинации с операторами AND, OR, NOT . В операторе EXISTS подзапрос используется в качестве аргумента; подзапрос не может принимать значение «неизвестно».

Операторы ANY и ALL . Для многократного сравнения в SQL имеются операторы ANY и ALL. В проверке этих операторов используется один из шести операторов (=, <>, <, <=, >, >=). При сравнении строк в Access регистр не учитывается.

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

SQL (Structured Query Language) , или Структурированный Язык Запросов, - это язык, который дает возможность работать с данными в реляционных базах данных. Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов), а также ISO (Международной организацией по стандартизации).

Для обращения к базе данных используются запросы, написанные на языке SQL. Запросом называется команда, которая передается серверу базы данных, и которая сообщает ему, что нужно вывести определенную информацию из таблиц в память. Эта информация обычно посылается непосредственно на экран компьютера или терминала, хотя в большинстве случаев ее можно также передать на принтер, сохранить в файле (как объект в памяти компьютера) или представить как вводную информацию для другой команды или процесса.



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

На сегодняшний день курсы SQL "для чайников" становятся все более популярными. Это можно очень просто объяснить, ведь в современном мире все чаще можно встретить так называемые "динамичные" веб-сервисы. Они отличаются достаточно гибкой оболочкой и основываются на Все начинающие программисты, которые решили посвятить сайтов, прежде всего записываются на курсы SQL "для чайников".

Зачем изучать данный язык?

Прежде всего SQL учат с целью дальнейшего создания самых разнообразных приложений для одного из самых популярных на сегодняшний день движков блогов - WordPress. После прохождения нескольких простых уроков вы уже сможете создавать запросы любой сложности, что только подтверждает простоту этого языка.

Что такое SQL?

Или язык структурированных запросов, был создан с одной-единственной целью: определять предоставлять к ним доступ и обрабатывать их за достаточно короткие промежутки времени. Если вы знаете SQL-значение, тогда вам будет понятно, что этот сервер относят к так называемым "непроцедурным" языкам. То есть в его возможности входит всего лишь описание каких-либо компонентов или результатов, которые вы хотите увидеть в будущем на сайте. Но при не указывает на то, какие точно результаты собирается получить. Каждый новый запрос в этом языке является как бы дополнительной "надстройкой". Именно в таком порядке, в каком они введены в базе данных, запросы и будут исполняться.

Какие процедуры можно совершать с помощью этого языка?

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

  • создавать самые разнообразные таблицы;
  • получать, хранить и изменять полученные данные;
  • изменять структуры таблиц на свое усмотрение;
  • объединять полученную информацию в единые блоки;
  • вычислять полученные данные;
  • обеспечивать полную защиту информации.

Какие команды являются самыми популярными в данном языке?

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

  1. DDL - является командой, которая определяет данные. Она используется для того, чтобы создавать, изменять и удалять самые разнообразные объекты в базе.
  2. DCL - является командой, которая управляет данными. Ее используют для предоставления доступа разным пользователям к информации в базе, а также чтобы использовать таблицы или представления.
  3. TCL - команда, которая управляет разнообразного рода транзакциями. Ее главной целью является определение хода транзакции.
  4. DML - манипулирует полученными данными. В ее задачу входит позволение пользователю перемещать различную информацию из базы данных или вносить туда ее.

Типы привилегий, которые существуют в этом сервере

Под привилегиями подразумеваются те действия, которые может выполнить тот или иной пользователь в соответствии со своим статусом. Самой минимальной, безусловно, является обычный вход в систему. Конечно же, со временем привилегии могут меняться. Старые будут удаляться, а новые добавляться. На сегодняшний день, все те, кто проходит курсы SQL Server "для чайников", знают, что существует несколько типов разрешенных действий:

  1. Объектный тип - пользователю разрешается выполнять какую-либо команду только по отношению к определенному объекту, который находится в базе данных. При этом для разных объектов привилегии отличаются. Они также привязываются не только к тому или иному пользователю, но и к таблицам. Если кто-либо, пользуясь своими возможностями, создал таблицу, то он считается ее владельцем. Поэтому в его праве назначать новые привилегии для других пользователей, связанные с информацией в ней.
  2. Системный тип - это так называемые авторские права на данные. Пользователи, которые получили такие привилегии, могут создавать различные объекты в базе.

История создания SQL

Этот язык был создан исследовательской лабораторией IBM в 1970 году. В то время название его было несколько иным (SEQUEL), но через несколько лет использования его поменяли, немного сократив. Несмотря на это, даже сегодня многие известные мировые специалисты в области программирования все еще произносят название по старинке. Создана была SQL с одной-единственной целью - изобрести язык, который был бы настолько простым, что его могли бы без особых проблем выучить даже простые пользователи Интернета. Интересен тот факт, что на то время SQL был не единственным подобным языком. В Калифорнии еще одна группа специалистов разработала похожий Ingres, но он так и не стал широко распространенным. До 1980 года существовало несколько вариаций SQL, которые лишь в некоторой мере отличались друг от друга. Чтобы предотвратить замешательства, в 1983-м был создан стандартный его вариант, который популярен и сегодня. Курсы SQL "для чайников" позволяют узнать намного больше о сервисе и полностью изучить его за несколько недель.