Иллюстрированный самоучитель по SQL для начинающих. Основы sql языка


Иллюстрированный самоучитель по SQL для начинающих › Основы SQL [страница - 11] | Самоучители по программированию

Основы SQL

В этой главе…

  • Что такое 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.

samoychiteli.ru

Основные операции языка SQL

История языка SQL

Для управления данными в реляционных СУБД используется язык высокого уровня SQL (Structured Query Language - структурированный язык запросов). SQL был разработан в конце 70-х компанией IBM. В 1989 году международная организация по стандартизации ISO официально приняла международной стандарт языка. В 1992 году ISO обновила этот стандарт. И на сегодняшний день все реляционные СУБД, существующие в мире, поддерживают стандарт SQL 92 года. Нужно заметить, что в разных СУБД имеются некоторые отличия в синтаксисе языка, поэтому можно говорить о «диалектах» SQL для разных СУБД. Но общие принципы и базовые операторы во всех диалектах совпадают.

Основные структуры языка SQL

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

Таблица должна обладать следующими свойствами:

  1. Иметь уникальное для рассматриваемой базы данных имя. Таблица с таким же именем может существовать при условии, что она относится к другой базе данных, которая находится под управлением этой же СУБД.
  2. Иметь конечное и постоянное число полей. Иногда бывают ситуации, когда нужно добавить новые поля или удалить имеющиеся. Но в этом случае речь идет уже об изменении структуры таблицы по причине изменений в предметной области. Это происходит не часто.
  3. Иметь конечное число записей. Возможно, что это число равно нулю.
  4. Поля таблицы имеют уникальные в рамках данной таблицы имена. В другой таблице могут присутствовать поля с такими же именами.
  5. Все значения, которые находятся в одном поле, должны иметь одинаковый тип данных. Например, для поля с именем «ДатаРождения» логично выбрать тип данных «Date». Данный столбец должен содержать исключительно даты и ничего другого.
  6. Записи не имеют какой-либо специальной упорядоченности и идентифицируются только своим содержимым.
  7. Значение поля таблицы может быть пустым. В этом случае считается, что оно содержит специальное значение NULL.

На данные, хранящиеся в таблицах допустимо накладывать следующие ограничения:

  • Требование уникальности значений определенного поля или группы полей для каждой записи.

    Пример 1

    Например, если в таблице есть поле, содержащее идентификационный номер налогоплательщика (ИНН), то его следует объявлять уникальным. В этом случае СУБД сама будет сообщать об ошибке при попытке ввести два одинаковых ИНН. Если же в таблице есть два поля «СерияПаспорта» и «НомерПаспорта», то следует объявить уникальными их сочетание. Потому что существует много одинаковых серий и одинаковых номеров паспортов, но сочетание серии и номер всегда уникально.

  • Требование запретить для какого-либо поля иметь значение NULL.

Операции над таблицами

В реляционной модели принято четыре основных операции над таблицами:

  • Проекция;
  • Ограничение;
  • Объединение;
  • Подмножество декартова произведения.

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

Определение 1

Проекция таблицы – построение из данной таблицы новой таблицы путем выбора лишь некоторых полей.

Пример 2

Исходная таблица:

Проекция исходной таблицы:

Определение 2

Ограничение – построение из данной таблицы новой таблицы путем выбора записей удовлетворяющих определенному условию.

Пример 3

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

Определение 3

Объединение – построение из двух таблиц с одинаковой структурой одной таблицы, включающей все записи обеих исходных.

Пример 4

Пусть имеется две таблицы с одинаковой структурой

В результате объединения получится таблица 3:

Определение 4

Подмножество декартова произведения – построение новой таблицы из двух исходных таблиц путем слияния определенных строк исходных таблиц

Пример 5

Пусть имеется две таблицы:

Тогда подмножеством декартова произведения будет таблица, в которой к строкам таблицы 1 добавлен оклад из таблицы 2 в соответствии с должностью:

spravochnick.ru

Основные составляющие языка SQL.

1.1. Команды определения данных:

– CREATE SCHEME – создать базу данных (определён в стандарте SQL. Для аналогичных целей в некоторых СУБД имеется оператор CREATE DATABASE).

– CREATE TABLE – создание таблицы базы данных. Таблица определяется путем задания содержащихся в ней столбцов. Все значения в столбце имеют один и тот же тип данных. При описа­нии таблиц могут задаваться ограничения целостности данных.

– CREATE DOMAIN – создание домена (объявление пользовательского типа данных, включает определение типа данных, ограничение и значение по умолчанию). Домен имеет смысл создавать, когда определенный с его помо­щью тип данных используется в создаваемой базе данных многократ­но. При описании таблицы для соответствующих полей вместо типа данных будет указываться имя домена.

– CREATE VIEW – создание виртуальной таблицы (представления, обзора). Представление - это виртуальная таблица, данные для которой получаются из базовых таблиц или других представлений. Представ­ление может быть получено из одной таблицы или нескольких, может включать в себя вычисляемые поля. Представление можно рассматривать как хранимый запрос (оно и выражается с помощью запроса). Представление может использо­ваться в запросах наряду с реальными таблицами. Упрощает со­здание сложных запросов, используется для обеспечения защиты и ускорения работы с БД. В результате, в БД хранится не сама табличная информация, а лишь способ ее оперативного получения. Использование представлений позволяет скрыть от пользователя излишние для него детали организации БД, реализовать дополнительные возможности контроля доступа к данным, минимизировать объем передаваемой и обрабатываемой информации.

– CREATE CURSOR – создание навигационной таблицы (курсора).

К этой группе также относятся операторы изменения и уничтожения описаний, операторы работы с описаниями вспомогательных объектов БД.

1.2. Команды удаления (DROP) и изменения (ALTER) объектов.

Например, таблицы могут быть удалены с помощью оператора DROP TABLE, а структуру существующей таблицы можно изменять с помощью оператора ALTER TABLE.

 

2. Методы и средства контроля целостности в основном реализованы в CREATE TABLE:

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

– NOT NULL – обязательность.

– UNIQUE – уникальность.

– DEFAULT – значение по умолчанию.

– CHECK – условие ограничения.

– PRIMARY KEY, FOREIGN KEY – поддержка связей.

– ON UPDATE, ON DELETE – триггеры по умолчанию.

Связь осуществляется за счет указания соответствия первичных и внешних ключей FK=PK, отсутствие связи – указанием FK=NULL, при нарушении ссылочной целостности FK=прочее. Возможные реакции триггера задают, что делать с внешним ключом, если произошло нарушение ссылки:

1) CASCADE – если при выполнении действия (удаления, изменения) – выполняем то же действие и с подчиненной.

2) SET NULL – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа очищаем.

3) SET DEFAULT – если при выполнении указанной операции произошел разрыв связи, то мы значение внешнего ключа меняем на значение по умолчанию.

4) NO ACTION – ничего не делать, во многих системах заменено на RESTRICT.

 

3. Операторы модификации данных:

– INSERT – добавление данных,

– UPDATE – обновление данных,

– DELETE – удаления данных.

 

4. Выборка:

– SELECT. Оператор состоит из предложений SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY, которые должны быть записаны в команде именно в той последовательности, в которой они перечисле­ны в синтаксической формуле.

 

5. Управление доступом:

– GRANT – назначение прав доступа.

Предположим, пользователь является владельцем таб­лицы «Sotrudnik» и хочет позволить пользователю Ivanov выполнять запросы к ней. В этом случае пользователь должен ввести команду

GRANT SELECT ON Sotrudnik TO Ivanov;

– REVOKE – удаление прав доступа.

Команда имеет синтаксис, схожий с синтаксисом оператора GRANT. Например, отмена привилегии на просмотр таблицы «Sotrudnik» для пользователя Ivanov будет выглядеть следующим образом:

REVOKE SELECT ON Sotrudnik TO Ivanov;

 

6. Управление транзакциями:

Транзакция представляет собой законченную совокупность дей­ствий над БД, которая переводит ее из одного целостного в логичес­ком смысле состояния в другое.

– SET TRANSACTION – задает параметры транзакции, объявляет её начало.

– COMMIT – нормальное завершение, завершение транзакции с фиксацией всех результатов.

– ROLLBACK – завершение транзакций с отменой всех выполненных изменений.

Конкретные СУБД используют различные механизмы управления транзакциями. Некоторые СУБД для задания транзакции используют операторы BEGIN TRANSACTION-END TRANSACTION, и все ко­манды, заключенные между ними, составляют транзакцию. В неко­торых системах считается, что, инициируя сеанс работы с SQL, пользо­ватель начинает транзакцию, которая будет продолжаться, пока не будет введен оператор COMMIT WORK, который сделает все изме­нения, проведенные в ходе транзакции, постоянными, или оператор ROLLBACK WORK, который отменяет все сделанные в транзакции изменения. После каждого оператора COMMIT или ROLLBACK на­чинается новая транзакция.

Во многих СУБД присутствует специальный параметр AUTO-COMMIT, который, находясь во включенном состоянии, приводит к автоматической фиксации изменений каждой нормально завершен­ной операции.

Транзакция может быть помечена как «только чтение» (READ ONLY). При выполнении такой транзакции попытка провести изме­нение данных будет вызывать сообщение об ошибке. Задание при­знака READ ONLY позволяет увеличить производительность как этой, так и параллельно исполняемых транзакций.

Транзакции должны соответствовать требованиям ACID (Atomicity, Consistency, Isolation, Durability – Атомарность, Согласованность, Изолированность, Долговечность):

Атомарность: транзакция представляет собой некото­рый набор законченных действий. Система обеспечивает их выполне­ние по принципу «все или ничего» - либо выполняются все действия, тогда транзакция «фиксируется»; либо, если возможность выполнить все действия отсутствует, например в случае сбоев, транзакция «отка­тывается» назад, а БД остается в исходном состоянии.

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

Изолированность: при выполнении транзакции дан­ные могут временно находиться в несогласованном состоянии. Такие данные не должны быть видны другим транзакциям, пока изменения не будут завершены (т.е. пока все модификации не будут формально зафиксированы). Система обеспечивает каждой транзакции иллюзию того, что та выполняется изолированно, как если бы прочие транзак­ции либо завершились до ее начала, либо начнут выполняться после ее завершения.

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

Существуют многочисленные модели транзакций, обеспечиваю­щие соблюдение требований ACID. Некоторые из этих моделей:

- плоские транзакции;

- контрольные точки;

- многозвенные транзакции;

- вложенные транзакции.

 

Использование языка SQL:

В целом, язык SQL не является самодостаточным для создания приложений БД и их полномасштабного обслуживания. Поэтому разработчикам приложений предоставляется различные формы соединения языка SQL с другими (внешними) языками.

В персональных системах язык используется как часть основного языка.

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

1) как вспомогательный язык приложения для обращения к СУБД.

2) как средство интерактивных запросов.

3) как средство написания программного кода для серверной части.

Для объединения SQL с базовым языком приложения используются следующие методы:

1. Локальный SQL.

Операторы SQL включаются во внешний язык наравне с прочими операторами и обрабатываются расширенным транслятором внешнего языка как его «родные» операторы. Таким образом, имеет место расширение исходного языка на группу операторов SQL с соответствующим расширением транслятора. Этот вариант характерен для персональных СУБД.

2. Встроенный SQL.

В текст программы на внешнем языке операторы SQL включаются с явным их выделением. Например, встраивание операторов SQL в текст С-программы выполняется в виде:

EXEC SQL

<SQL-оператор>

END SQL

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

3. Модульный SQL.

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

4. Динамический SQL – поддерживает ввод, трансляцию и исполнение SQL команд в ходе выполнения программы. Операторы SQL определяются не на момент создания пакета программы, а на момент ее исполнения. Таким образом, трансляция SQL-операторов откладывается на время выполнения программы, что позволяет реализовывать заранее непредвиденные запросы. Для подготовки исполнения используется команда PREPARE, для исполнения EXECUTE.

 

11. Создание БД в SQL

Для первичного создания БД требуемая последовательность операторов SQL обычно оформляется в виде скрипта. Исполнение скрипта приводит к получению пустой БД требуемой структуры.

В стандарте SQL-92 определяются следующие виды объектов, которые могут быть созданы в БД:

· Table - таблица;

· View - представление;

· Schema ~ схема;

· Domain - домен;

· Assertion - утверждение;

· Character set - набор символов;

· Collation - последовательность сортировки;

· Translation - преобразование одного набора символов в другой.

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

 

Похожие статьи:

poznayka.org

Иллюстрированный самоучитель по SQL для начинающих › Основы SQL [страница - 12] | Самоучители по программированию

Основы SQL

(Очень) Короткая история

Язык SQL, как и теория реляционных баз данных, берет свое начало в одной из исследовательских лабораторий компании IBM. В начале 1970-х годов исследователи из IBM выполняли первые разработки реляционных систем СУБД (или РСУБД), и тогда они создали подъязык данных, предназначенный для работы в этих системах. Пробная версия этого подъязыка была названа SEQUEL (Structured English QUEry Language – структурированный английский язык запросов). Однако, когда пришло время официально выпускать их язык запросов в качестве продукта, разработчики захотели сделать так, чтобы люди понимали, что выпущенный продукт отличается от пробной системы СУБД и превосходит ее. Поэтому они решили дать выпускаемому продукту имя, хотя и отличающееся от SEQUEL, но явно принадлежащее к тому же семейству. Так что они назвали его SQL.

О работе, которая велась в IBM над реляционными базами данных и над языком SQL, в информационной отрасли хорошо знали, причем еще до того, как эта компания представила в 1981 году РСУБД SQL / DS. К этому времени компания Relational Software, Inc. (ныне Oracle Corporation) уже выпустила свою первую РСУБД. Эти первоначальные продукты тут же стали стандартом для нового класса систем, предназначенных для управления базами данных. В состав этих продуктов вошел SQL, который фактически стал стандартом для подъязыков данных. Производители других систем управления базами данных выпустили свои собственные версии SQL. В этих реализациях обычно имелись все основные возможности продуктов IBM, но, впрочем, не только они. Там также имелись расширения, введенные с целью дать преимущество сильным сторонам именно "своей" РСУБД. В результате, хотя почти все поставщики и использовали варианты одного языка SQL, платформенная совместимость была слабой.

Помни:Реализация – это конкретная СУБД, работающая на конкретной аппаратной платформе.

Вскоре началось движение за создание общепризнанного стандарта SQL, которого мог бы придерживаться каждый. В 1986 году организация ANSI выпустила официальный стандарт под названием SQL – 86. Этот стандарт был обновлен той же организацией в 1989 году и получил название SQL – 89, а затем, в 1992 году, был назван SQL – 92. Поставщики СУБД, выпуская новые версии своих продуктов, всегда старались приблизить свои реализации к стандарту. Эти усилия и привели к тому, что мечта о настоящей переносимости SQL стала намного ближе к реальности.

Самой последней версией стандарта SQL является SQL:2003 (ISO / IEX 9075 X:2003). В этой книге описан язык SQL, который определяется стандартом SQL:2003. Конечно, любая конкретная реализация SQL в определенной степени отличается от стандарта. Так как полный стандарт SQL:2003 является слишком всеобъемлющим, то от современных реализаций, видимо, не стоит ждать полного ему соответствия. Однако поставщики систем СУБД сейчас работают над тем, чтобы эти системы все же соответствовали основной части стандартного SQL. Полные спецификации стандартов ISO / IEC доступны в Internet по адресу webstore.ansi.org.

Команды SQL

Язык SQL состоит из ограниченного числа команд, специально предназначенных для управления данными. Одни из этих команд служат для определения данных, другие – для их обработки, а остальные – для администрирования данных. О командах определения и обработки данных рассказывается в главах 4-12, а о командах администрирования данных – в главах 13 и 14.

Чтобы соответствовать стандарту SQL: 2003, в состав реализации должны входить все основные возможности. Кроме того, в ее состав могут входить и расширения этого основного набора (которые также описаны спецификацией SQL:2003). Расширения пока оставим, вернемся к основам. Ниже приведена таблица основных команд SQL:2003.

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

Таблица 2.1. Основные команды SQL:2003.

ALTER DOMAIN CREATE CURSOR FREE LOCATOR
ALTER TABLE DECLARE TABLE GET DIAGNOSTICS
CALL DELETE GRANT
CLOSE DISCONNECT HOLD LOCATOR
COMMIT DROP ASSERTION INSERT
CONNECT DROP CHARACTER SET OPEN
CREATE ASSERTION DROP COLLATION RELEASE SAVEPOINT
CREATE CHARACTER SET DROP DOMAIN RETURN
CREATE COLLATION DROP ORDERING REVOKE
CREATE DOMAIN DROP ROLE ROLLBACK
CREATE FUNCTION DROP SCHEME SAVEPOINT
CREATE METHOD DROP SPECIFIC FUNCTION SELECT
CREATE ORDERING DROP SPECIFIC PROCEDURE SET CONNECTION
CREATE PROCEDURE DROP SPECIFIC ROUTINE SET CONSTRAINTS
CREATE ROLE DROP TABLE SET ROLE
CREATE SCHEMA DROP TRANSFORM SET SESSION AUTHORIZATION
CREATE TABLE DROP TRANSLATION SET SESSION CHARACTERISTICS
CREATE TRANSFORM DROP TRIGGER SET TIME ZONE
CREATE TRANSLATION DROP TYPE SET TRANSACTION
CREATE TRIGGER DROP VIEW START TRANSACTION
CREATE TYPE FETCH UPDATE
CREATE VIEW    

samoychiteli.ru

Основы языка SQL

УП 01. Базы данных Язык SQL

УП 01. Базы данных

Язык SQL

План: 1. Введение 2. SQL 3. Функции языка SQL 4. Стандарты SQL 5. SQL в компьютерной сети 6. Элементы языка SQL 7. Ключевые слова. Имена. Константы 8. Типы данных. Выражения. 9. Встроенные функции 10. Чтение данных. 11. Оператор Select. Предложение Select

План:

1. Введение

2. SQL

3. Функции языка SQL

4. Стандарты SQL

5. SQL в компьютерной сети

6. Элементы языка SQL

7. Ключевые слова. Имена. Константы

8. Типы данных. Выражения.

9. Встроенные функции

10. Чтение данных.

11. Оператор Select. Предложение Select

Введение Большинство современных СУБД построено на реляционной модели данных. Для получения информации из отношений (таблиц) базы данных в качестве языка манипулирования данными в теоретическом плане используется язык SQL

Введение

Большинство современных СУБД построено на реляционной модели данных. Для получения информации из отношений (таблиц) базы данных в качестве языка манипулирования данными в теоретическом плане используется язык SQL

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

SQL – структурированный язык запросов, предназначенный для работы с БД реляционного типа.

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

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

SQL – язык распределения базы данных, служит для распределения данных взаимодействующих систем, для распределенной обработки баз данных

Функции языка SQL: Организация данных – создание и изменение структуры баз данных Чтение данных Обработка данных – удаление, добавление и корректировка данных Управление доступа к данным – предоставление привилегий (ограничение возможностей) пользователю для чтения и изменения данных Совместное использование данных- координация общего пользования данных многими пользователями Целостность данных – защита данных от разрушения при сбое системы или других обстоятельствах

Функции языка SQL:

  • Организация данных – создание и изменение структуры баз данных
  • Чтение данных
  • Обработка данных – удаление, добавление и корректировка данных
  • Управление доступа к данным – предоставление привилегий (ограничение возможностей) пользователю для чтения и изменения данных
  • Совместное использование данных- координация общего пользования данных многими пользователями
  • Целостность данных – защита данных от разрушения при сбое системы или других обстоятельствах
Стандарты SQL Разработка SQL началась в 1982 году Американским институтом национальных стандартов ANSI (American National Standards Institute). В 1986 SQL был официально утвержден как стандарт ANSI, ф в 1987 году – в качестве стандарта ISO (International Standards Organization) – международной организации по стандартизации.

Стандарты SQL

Разработка SQL началась в 1982 году Американским институтом национальных стандартов ANSI (American National Standards Institute). В 1986 SQL был официально утвержден как стандарт ANSI, ф в 1987 году – в качестве стандарта ISO (International Standards Organization) – международной организации по стандартизации.

SQL в компьютерной сети Сервер базы данных выполняет SQL – запрос и возвращает пользователю только ту информацию из базы данных, которая соответствует этому SQL - запросу

SQL в компьютерной сети

Сервер базы данных выполняет SQL – запрос и возвращает пользователю только ту информацию из базы данных, которая соответствует этому SQL - запросу

Элементы языка SQL Ключевые слова Имена Константы Типы данных Встроенные функции выражения

Элементы языка SQL

  • Ключевые слова
  • Имена
  • Константы
  • Типы данных
  • Встроенные функции
  • выражения
Ключевые слова. Имена. Константы Ключевые слова – это фиксированный набор английских слов, которые определяют тип запроса и необходимую информацию для выполнения этого запроса Имена используются для обозначения (присвоения имени) таблиц, столбцов в таблице, а также владельцев таблиц (баз данных) Константы служат для явного указания величин – чисел, строк, дату и время – в командах SQL

Ключевые слова. Имена. Константы

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

Имена используются для обозначения (присвоения имени) таблиц, столбцов в таблице, а также владельцев таблиц (баз данных)

Константы служат для явного указания величин – чисел, строк, дату и время – в командах SQL

Типы данных. Выражения. Типы данных служат для представления информации в базах данных. В SQL определен набор типов данных (char, varchar , integer, smallint…) Выражения в SQL представляют собой имена, константы, встроенные функции, связанные между собой знаками арифметических операций. В сложных выражениях для изменения порядка вычислений применяются круглые скобки.

Типы данных. Выражения.

Типы данных служат для представления информации в базах данных. В SQL определен набор типов данных (char, varchar , integer, smallint…)

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

Встроенные функции в основном предназначены для преобразования типов данных и для обработки строк Некоторые встроенные функции Current_date()- возвращает текущую дату Current_time (точность) - возвращает текущее время Char_length (строка) – возвращает длину строки Extract – возвращает значение части day, hour и т.д. даты Lower (строка) - возвращает строку, преобразованную к нижнему регистру Upper (строка) - возвращает строку, преобразованную к верхнему регистру Month (дата) – возвращает значение месяца из указанной даты в виде целого числа Year (дата) – возвращает значение года из указанной даты в виде целого числа

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

Некоторые встроенные функции

Current_date()- возвращает текущую дату

Current_time (точность) - возвращает текущее время

Char_length (строка) – возвращает длину строки

Extract – возвращает значение части day, hour и т.д. даты

Lower (строка) - возвращает строку, преобразованную к нижнему регистру

Upper (строка) - возвращает строку, преобразованную к верхнему регистру

Month (дата) – возвращает значение месяца из указанной даты в виде целого числа

Year (дата) – возвращает значение года из указанной даты в виде целого числа

 Чтение данных. Оператор Select. Предложение Select Оператор Select читает данные из базы данных и возвращает их в виде таблицы результата запроса Предложение Select , с которого начинается оператор Select, содержит элементы данных, которые будут возвращены в виде результирующей таблицы. Указанные в предложении Select элементы данных будут составлять столбцы возвращаемой таблицы. В качестве возвращаемых столбцов могут быть указаны: Имя столбца некоторой таблицы базы данных; Константа, которая будет содержаться в соответствующем столбце возвращаемой таблицы Выражение, которое будет вычисляться для каждой строки возвращаемой таблицы, и помещаться в соответствующем столбце этой таблицы

Чтение данных. Оператор Select. Предложение Select

Оператор Select читает данные из базы данных и возвращает их в виде таблицы результата запроса

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

  • Имя столбца некоторой таблицы базы данных;
  • Константа, которая будет содержаться в соответствующем столбце возвращаемой таблицы
  • Выражение, которое будет вычисляться для каждой строки возвращаемой таблицы, и помещаться в соответствующем столбце этой таблицы
Предложение FROM Предложение FROM начинается с ключевого слова FROM , за которым следует в простом случае список спецификаций таблиц, разделенных запятыми. В общем случае за ключевым словом FROM указывается операция соединения ( JOIN ) исходных таблиц . Спецификатор таблицы определяет таблицу, из которой запрашиваются исходные данные для формирования возвращаемой таблицы. Спецификатор таблицы представляет собой либо имя исходной таблицы, либо имя исходной таблицы вместе с псевдонимом, указываемым после имени через пробел. Синтаксическая диаграмма спецификатора таблицы следующая (рис 1). Рис 1 Синтаксическая диаграмма спецификатора таблицы. Псевдоним может быть может быть использован в следующих предложениях оператора SELECT вместо имени. Примеры SELECT Sname, City FROM salespeople SELECT Sname, salespeople. City, Customers.* From Salespeople S, Customers

Предложение FROM

Предложение FROM начинается с ключевого слова FROM , за которым следует в простом случае список спецификаций таблиц, разделенных запятыми. В общем случае за ключевым словом FROM указывается операция соединения ( JOIN ) исходных таблиц .

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

Рис 1 Синтаксическая диаграмма спецификатора

таблицы.

Псевдоним может быть может быть использован в следующих предложениях оператора SELECT вместо имени.

Примеры

FROM salespeople

  • SELECT Sname, salespeople. City, Customers.*

From Salespeople S, Customers

Предложение FROM Операция соединения определена в стандарте SQL2 и имеет следующую синтаксическую диаграмму (рис 2). Рис 2 Синтаксическая диаграмма операции соединения Операция CROSS JOIN дает декартово произведение двух таблиц, UNION JOIN дает сложение двух таблиц. Ключевое слово INNER задает внутреннее объединение (по умолчанию), OUTER – внешнее объединение (левое, правое и полное) ; NATURAL – естественное объединение (равенство значений в одноименных столбцах, при этом предложения ON и USING не обязательны).

Предложение FROM

Операция соединения определена в стандарте SQL2 и имеет следующую синтаксическую диаграмму (рис 2).

Рис 2 Синтаксическая диаграмма

операции соединения

Операция CROSS JOIN дает декартово произведение двух таблиц, UNION JOIN дает сложение двух таблиц. Ключевое слово INNER задает внутреннее объединение (по умолчанию), OUTER – внешнее объединение (левое, правое и полное) ; NATURAL – естественное объединение (равенство значений в одноименных столбцах, при этом предложения ON и USING не обязательны).

Предложение WHERE Предложение WHERE осуществляется отбор нужных строк из таблицы, получаемой в предложении FROM. Отбор строк производится в соответствии с условием поиска, которое указывается в предложении за ключевым словом WHERE. Условие поиска представляет собой выражение, которое вычисляется для каждой строки возвращаемой таблицы. При вычислении выражения данные соответствующей строки берутся из столбцов, указанных в выражении. Для каждой проверяемой строки условие поиска может иметь одно из трех значений – TRUE, FALSE и NULL. Отбираются только те строки, для которой условие поиска имеют значение TRUE. Условие поиска имеет следующую синтаксическую диаграмму (рис 3). Рис 3 Синтаксическая диаграмма условии поиска Из диаграммы видно, что условие поиска состоит из простых условий объединенных с помощью логических операций NOT, AND и OR .

Предложение WHERE

Предложение WHERE осуществляется отбор нужных строк из таблицы, получаемой в предложении FROM. Отбор строк производится в соответствии с условием поиска, которое указывается в предложении за ключевым словом WHERE. Условие поиска представляет собой выражение, которое вычисляется для каждой строки возвращаемой таблицы. При вычислении выражения данные соответствующей строки берутся из столбцов, указанных в выражении. Для каждой проверяемой строки условие поиска может иметь одно из трех значений – TRUE, FALSE и NULL. Отбираются только те строки, для которой условие поиска имеют значение TRUE. Условие поиска имеет следующую синтаксическую диаграмму (рис 3).

Рис 3 Синтаксическая диаграмма условии поиска

Из диаграммы видно, что условие поиска состоит из простых условий объединенных с помощью логических операций NOT, AND и OR .

Предложение WHERE В следующей таблице приведены результаты логических операций над значениями TRUE, FALSE и NULL. В SQL существует пять простых условий поиска: Сравнение; Проверка на принадлежность диапазону; Проверка на принадлежность множеству; Проверка на соответствие шаблону; Проверка на равенство значению NULL.

Предложение WHERE

В следующей таблице приведены результаты логических операций над значениями TRUE, FALSE и NULL.

В SQL существует пять простых условий поиска:

  • Сравнение;
  • Проверка на принадлежность диапазону;
  • Проверка на принадлежность множеству;
  • Проверка на соответствие шаблону;
  • Проверка на равенство значению NULL.
Предложение WHERE Сравнение. При сравнении вычисляются и сравниваются значения двух выражений. Существует шесть операций сравнения, которые показаны на следующей синтаксической диаграмме (рис 4) Рис 4 Синтаксическая диаграмма операций сравнения Результатом сравнения будет значения TRUE , если значения выражений сравниваются и FALSE – если не сравниваются. В случае, если значение хотя бы одного выражения будет NULL, то результат сравнения будет NULL.

Предложение WHERE

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

Рис 4 Синтаксическая диаграмма операций сравнения

Результатом сравнения будет значения TRUE , если значения выражений сравниваются и

FALSE – если не сравниваются. В случае, если значение хотя бы одного выражения будет NULL,

то результат сравнения будет NULL.

=B ) AND (A где А – проверяемое выражение, а В и С – соответственно нижнее и верхнее границы диапазона. "

Предложение WHERE

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

Рис 5 Синтаксическая диаграмма проверки

на принадлежность диапазону

Проверка на принадлежность диапазону эквивалента следующему логическому выражению

( A=B ) AND (A где А – проверяемое выражение, а В и С – соответственно нижнее и верхнее границы диапазона.

Предложение WHERE Проверка на принадлежность множеству. Данной проверке соответствует следующая синтаксическая диаграмма (рис 6) Рис 6 Синтаксическая диаграмма проверки на принадлежность множеству Проверка на принадлежность множеству определяет, равняется или нет значение проверяемого выражения одному из констант, указанных за ключевым словом IN . Проверка на принадлежность множеству эквивалентна следующему условию поиска сравнение (А=С1) OR (A=C2)..(A=Cn) , где А – проверяемое выражение, а С i – константы.

Предложение WHERE

Проверка на принадлежность множеству. Данной проверке соответствует следующая синтаксическая диаграмма (рис 6)

Рис 6 Синтаксическая диаграмма проверки

на принадлежность множеству

Проверка на принадлежность множеству определяет, равняется или нет значение проверяемого выражения одному из констант, указанных за ключевым словом IN . Проверка на принадлежность множеству эквивалентна следующему условию поиска сравнение

(А=С1) OR (A=C2)..(A=Cn) , где А – проверяемое выражение, а С i – константы.

Предложение WHERE Проверка на соответствие шаблону. Данная проверка выполняется над текстовыми данными. Данной проверке соответствует следующая синтаксическая диаграмма (рис 7) Рис 7 Синтаксическая диаграмма проверки на соответствие шаблону С помощью этой проверки отбираются те строки, в которых данные, соответствующие заданному столбцу, отвечают некоторому шаблону, следующему в предложении за ключевым словом LIKE.

Предложение WHERE

Проверка на соответствие шаблону. Данная проверка выполняется над текстовыми данными. Данной проверке соответствует следующая синтаксическая диаграмма (рис 7)

Рис 7 Синтаксическая диаграмма проверки

на соответствие шаблону

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

Предложение WHERE Проверка на равенство значению NULL. Для проверки значения элемента столбца на равенство NULL в SQL предусмотрена специальная проверка, называемая проверкой на равенство NULL. Синтаксическая диаграмма этой проверки следующая (рис 8) Рис 8 Синтаксическая диаграмма проверки на равенство значению NULL В соответствии с этой проверкой отбираются те строки, т.е. проверка имеет значение TRUE, у которых данные в указанном столбце равны NULL.

Предложение WHERE

Проверка на равенство значению NULL. Для проверки значения элемента столбца на равенство NULL в SQL предусмотрена специальная проверка, называемая проверкой на равенство NULL. Синтаксическая диаграмма этой проверки следующая (рис 8)

Рис 8 Синтаксическая диаграмма проверки

на равенство значению NULL

В соответствии с этой проверкой отбираются те строки, т.е. проверка имеет значение TRUE,

у которых данные в указанном столбце равны NULL.

Агрегатные функции В SQL предусмотрены специальные функции, которые называются агрегатными (статистическими) функциями. В SQL имеются следующие агрегатные функции: SUM() – вычисляют сумму значений, содержащих в аргументе; AVG() – вычисляет среднее значение; MIN() , MAX() – находит минимальное, максимальное значения; COUNT() – подсчитывает в столбце количество не NULL -значений; COUNT(*) – подсчитывает количество строк в запрашиваемой таблице. Выражение должно содержать имена столбцов и определяет столбец, элементы которого вычисляются с помощью соответствующих элементов этих столбцов. Так как агрегатная функция возвращает одно значение, то она не может быть аргументом другой агрегатной функции. Агрегатные функции используются в предложениях SELECT и HAVING .

Агрегатные функции

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

SUM() – вычисляют сумму значений, содержащих в аргументе;

AVG() – вычисляет среднее значение;

MIN() , MAX() – находит минимальное, максимальное значения;

COUNT() – подсчитывает в столбце количество не NULL -значений;

COUNT(*) – подсчитывает количество строк в запрашиваемой таблице.

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

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

Предложение GROUP BY Предложение GROUP BY позволяет запрашивать данные, которые являются итоговыми для отдельных групп строк таблицы получаемой в предложении FROM. Если в запросе имеется предложение GROUP BY , то строки запрашиваемой таблицы разбиваются на группы. На запросы с применением предложения GROUP BY налагаются следующие ограничения – возвращаемыми столбцами, указанными в предложении SELECT , могут быть: Константа ; Агрегатная функция; Столбце группировки; Выражение, включающее в себе перечисленные выше элементы.

Предложение GROUP BY

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

На запросы с применением предложения GROUP BY налагаются следующие ограничения – возвращаемыми столбцами, указанными в предложении SELECT , могут быть:

  • Константа ;
  • Агрегатная функция;
  • Столбце группировки;
  • Выражение, включающее в себе перечисленные выше элементы.
Предложение HAVING Для того, чтобы из групп строк, получаемых после предложения GROUP BY, выбрать требуемые группы, используется предложение HAVING. В это предложении за ключевым словом HAVING следует условие поиска групп, аналогичное условию поиска в предложении WHERE. Условию поиска применяется к группам строк, получаемых после предложения GROUP BY и поэтому на элементы, входящие в условие поиска, налагаются те же ограничения, какие были перечислены для возвращаемых столбцов при рассмотрении предложения GROUP BY . Таким образом, в условие поиска могут входить константы , агрегатные функции, столбцы группировки и выражение из них. Предложение HAVING в основном используется вместе с предложением GROUP BY . Но язык SQL допускает и отдельное применение предложения HAVING . В этом случае результат запроса рассматривается как одна группа и предложение HAVING выполняет те же функции что и предложение WHERE.

Предложение HAVING

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

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

Предложение HAVING в основном используется вместе с предложением GROUP BY . Но язык SQL допускает и отдельное применение предложения HAVING . В этом случае результат запроса рассматривается как одна группа и предложение HAVING выполняет те же функции что и предложение WHERE.

videouroki.net

Основы языка SQL Structured Query Language История

Основы языка SQL Structured Query Language Основы языка SQL Structured Query Language

История SQL n n n 1970. Е. Ф. Кодд (исследовательская лаборатория IBM) - реляционная История SQL n n n 1970. Е. Ф. Кодд (исследовательская лаборатория IBM) - реляционная модель 1974. Д. Чамберлин (там же) – определение языка «Sructured English Query Language» SEQUEL 1976. SEQUEL/2, позже получил название SQL (прототип СУБД System R) 2

История SQL (продолжение) n n 1978 -79 г. г. СУБД Oracle – первая коммерческая История SQL (продолжение) n n 1978 -79 г. г. СУБД Oracle – первая коммерческая СУБД, ориентированная на SQL 1981 IBM выпускает SQL/DS 1982 Американский национальный институт стандартов (ANSI) - начата разработка стандарта языка RDL (Relation Database Language) 1983 Международный комитет по стандартизации (ISO) 3

Стандарты языка SQL Американский национальный институт стандартов (ANSI) – 1986 n Международная организация стандартов Стандарты языка SQL Американский национальный институт стандартов (ANSI) – 1986 n Международная организация стандартов (ISO) – 1987 n 1989 выпущено дополнение ISO n ISO 1992 – официальный единый стандарт SQL 2 (SQL 92) n 4

Запись SQL-операторов n Зарезервированные слова – являются Слова, определяемые постоянной частьюзадаются пользователем – SQL Запись SQL-операторов n Зарезервированные слова – являются Слова, определяемые постоянной частьюзадаются пользователем – SQL и имеют фиксированное значение, непосредственно пользователем в записываютсясв точности как соответствие установленными установлено стандартом, нельзя синтаксическими правилами, переносить и разбивать на части представляют собой имена таблиц, полей, представлений, индексов и т. д. 5

Правила записи SQL-операторов n n n Каждая фраза в операторе начинается с новой строки Правила записи SQL-операторов n n n Каждая фраза в операторе начинается с новой строки Начало каждой фразы должно быть выравнено с началом остальных фраз в операторе Если фраза состоит из нескольких частей, то каждая часть начинается с новой строки с некоторым отступом относительно начала фразы, указывая на подчиненность 6

Расширенная форма BNF-нотации (Backus-Naur-Form) определения формата SQL-операторов ПРОПИСНЫЕ БУКВЫ использовать для записи зарезервированных слов Расширенная форма BNF-нотации (Backus-Naur-Form) определения формата SQL-операторов ПРОПИСНЫЕ БУКВЫ использовать для записи зарезервированных слов n строчные буквы использовать для записи слов, определяемых пользователем n Вертикальная черта (|) оказывает на выбор одного из приведенных параметров – например, a | b | c n 7

Расширенная форма BNF-нотации (Backus-Naur-Form) определения формата SQL-операторов {} Фигурные скобки определяют обязательный элемент, например Расширенная форма BNF-нотации (Backus-Naur-Form) определения формата SQL-операторов {} Фигурные скобки определяют обязательный элемент, например {a} n [] Квадратные скобки определяют необязательный элемент, например [a] n (…) Многоточие используется для указания необязательной возможности повторения конструкции от нуля до нескольких раз n 8

Пример n {a | b} [, c…] – означает, что после выбора обязательных a Пример n {a | b} [, c…] – означает, что после выбора обязательных a или b может следовать от нуля до нескольких повторений c, разделенных запятыми 9

Операторы манипулирования данными SELECT – выборка данных из базы n INSERT – вставка данных Операторы манипулирования данными SELECT – выборка данных из базы n INSERT – вставка данных в таблицу n UPDATE – обновление (изменение) данных в таблице n DELETE – удаление данных из таблицы n 10

Литералы n Литерал – константа, используемая в SQL-операторах ¨ INSERT INTO holl(id_holl, number, type_holl) Литералы n Литерал – константа, используемая в SQL-операторах ¨ INSERT INTO holl(id_holl, number, type_holl) ¨ VALUES (3, 412, ‘лаборатория ЭВТ’) 11

Оператор SELECT [DISTINCT | ALL] {* | [col_expr [AS new_name]] [, …]} FROM table_name Оператор SELECT [DISTINCT | ALL] {* | [col_expr [AS new_name]] [, …]} FROM table_name [alias] [, …] [WHERE condition] [GROUP BY col_list] [HAVING condition] [ORDER BY col_list] 12

Оператор SELECT (продолжение) col_expr – имя поля или выражение из нескольких имен new_name – Оператор SELECT (продолжение) col_expr – имя поля или выражение из нескольких имен new_name – новое имя поля table_name – имя существующих в базе данных таблицы или представления, к которым необходимо получить доступ alias – необязательный параметр, сокращение, устанавливаемое для table_name condition – логическое выражение, условие col_list – список имен полей 13

Порядок обработки элементов оператора SELECT n n FROM – определяются имена используемой таблицы или Порядок обработки элементов оператора SELECT n n FROM – определяются имена используемой таблицы или нескольких таблиц WHERE – выполняется фильтрация строк объекта в соответствии с заданными условиями GROUP BY – образуются группы строк, имеющих одно и то же значение в указанном поле HAVING – фильтруются группы строк объекта в соответствии с заданными условиями 14

Порядок обработки элементов оператора SELECT (продолжение) HAVING – фильтруются группы строк объекта в соответствии Порядок обработки элементов оператора SELECT (продолжение) HAVING – фильтруются группы строк объекта в соответствии с заданными условиями n SELECT – устанавливается, какие поля должны присутствовать в выходных данных n ORDER BY – определяется упорядоченность результатов выполнения оператора n 15

Выборка всех данных student(key, family, name, spec, age) SELECT key, family, name, spec, age Выборка всех данных student(key, family, name, spec, age) SELECT key, family, name, spec, age FROM student SELECT * FROM student 16

Выборка по некоторым полям student(key, family, name, spec, age) SELECT key, family, spec FROM Выборка по некоторым полям student(key, family, name, spec, age) SELECT key, family, spec FROM student 17

Выборка данных с удалением дублирующих значений student(key, family, name, spec, age) SELECT spec FROM Выборка данных с удалением дублирующих значений student(key, family, name, spec, age) SELECT spec FROM student SELECT DISTINCT spec FROM student 18

Вычисляемые поля manager(key, family, name, rang, salary) SELECT key, family, rang, salary*12 FROM manager Вычисляемые поля manager(key, family, name, rang, salary) SELECT key, family, rang, salary*12 FROM manager SELECT family+name AS manager, rang FROM manager 19

Предложение WHERE n Сравнение n Диапазон n Принадлежность к множеству n Соответствие шаблону n Предложение WHERE n Сравнение n Диапазон n Принадлежность к множеству n Соответствие шаблону n Значение NULL 20

Сравнение условий поиска manager(key, family, name, rang, salary) SELECT family, rang, salary FROM manager Сравнение условий поиска manager(key, family, name, rang, salary) SELECT family, rang, salary FROM manager WHERE salary>5000 =, >, =, != 21

Сравнение условий поиска (продолжение) manager(key, family, name, rang, salary) SELECT family, rang, salary FROM Сравнение условий поиска (продолжение) manager(key, family, name, rang, salary) SELECT family, rang, salary FROM manager WHERE rang=‘специалист’ OR rang=‘ведущий специалист’ AND, OR, NOT 22

Использование диапазонов BETWEEN / NOT BETWEEN SELECT family, rang, salary FROM manager WHERE salary Использование диапазонов BETWEEN / NOT BETWEEN SELECT family, rang, salary FROM manager WHERE salary BETWEEN 5000 AND 10000 SELECT family, rang, salary FROM manager WHERE salary >= 5000 AND salary

Поиск с проверкой вхождения во множество IN / NOT IN SELECT key, family, spec Поиск с проверкой вхождения во множество IN / NOT IN SELECT key, family, spec FROM student WHERE spec IN (‘физика’, ‘математика’) SELECT key, family, spec FROM student WHERE spec = ‘физика’ OR spec = ‘математика’ 24

Поиск с указанием шаблонов LIKE / NOT LIKE % - любая последовательность из нуля Поиск с указанием шаблонов LIKE / NOT LIKE % - любая последовательность из нуля и более символов _ - любой одиночный символ 25

Примеры шаблонов family LIKE ‘И%’ – первый символ значения, соответствующий шаблону, равен «И» , Примеры шаблонов family LIKE ‘И%’ – первый символ значения, соответствующий шаблону, равен «И» , остальные не имеет значения name LIKE ‘И____’ – значение соответствующее шаблону длиной 5 символов, первый символ равен «И» family NOT LIKE ‘%ов’ – любая последовательность символов оканчивающаяся на «ов» 26

Пример запроса student(key, family, adress) SELECT family, adress FROM student WHERE adress LIKE ‘%Бирск%’ Пример запроса student(key, family, adress) SELECT family, adress FROM student WHERE adress LIKE ‘%Бирск%’ 27

Использование значения NULL IS NULL / IS NOT NULL student(key, family, adress, icq) WHERE Использование значения NULL IS NULL / IS NOT NULL student(key, family, adress, icq) WHERE ICQ=‘’ SELECT key, family FROM student WHERE icq IS NULL 28

Сортировка результатов (ORDER BY) ASC – сортировка по возрастанию n DESC – сортировка по Сортировка результатов (ORDER BY) ASC – сортировка по возрастанию n DESC – сортировка по убыванию n n Сортировка выполняется по имени поля в списке SELECT или по его номеру, самый левый столбец имеет номер (1) 29

Сортировка по значениям одного столбца manager(key, family, name, rang, salary) SELECT family, rang, salary Сортировка по значениям одного столбца manager(key, family, name, rang, salary) SELECT family, rang, salary FROM manager ORDER BY salary DESC «» ORDER BY 3 DESC 30

Сортировка по значениям нескольким столбцам Главный ключ – определяет общую упорядоченность строк результирующей таблицы Сортировка по значениям нескольким столбцам Главный ключ – определяет общую упорядоченность строк результирующей таблицы n Младший(ие) ключ(и) – определяет(ют) дополнительную упорядоченность результатов n 31

Пример сортировки по значениям нескольких столбцов manager(key, family, name, rang, salary) SELECT family, rang, Пример сортировки по значениям нескольких столбцов manager(key, family, name, rang, salary) SELECT family, rang, salary FROM manager ORDER BY family, salary DESC *Стандарт ISO требует, чтобы значения NULL воспринимались системой либо больше, либо меньше любого значения. Выбор оставлен на усмотрение разработчиков СУБД. 32

Использование обобщающих функций языка SQL n n n COUNT – возвращает количество значений в Использование обобщающих функций языка SQL n n n COUNT – возвращает количество значений в указанном столбце SUM – возвращает сумму значений в указанном столбце AVG – возвращает среднее значение в указанном столбце MIN – возвращает минимальное значение в указанном столбце MAX – возвращает максимальное значение в указанном столбце 33

Замечания 1. 2. 3. Все обобщающие функции оперируют со значениями в одном столбце и Замечания 1. 2. 3. Все обобщающие функции оперируют со значениями в одном столбце и возвращают единственное значение Функции SUM и AVG могут использоваться только для числовых полей COUNT(*) – особый случай использования функции COUNT, возвращает число всех сток в результирующей таблице, независимо от наличия пустых или дублирующихся значений 34

Замечания n n n 4. Для исключения дублирующихся значений перед именем столбца в определении Замечания n n n 4. Для исключения дублирующихся значений перед именем столбца в определении обобщающей функции следует использовать ключевое слово DISTINCT 5. Ключевое слово DISTINCT не имеет смысла для функций MIN и MAX 6. Ключевое слово DISTINCT в каждом запросе может быть указано не более одного раза 35

Замечания n n 7. Все обобщающие функции могут использоваться только в списке фраз SELECT Замечания n n 7. Все обобщающие функции могут использоваться только в списке фраз SELECT и HAVING 8. Если список фразы SELECT содержит обобщающие функции, а в тексте запроса отсутствует фраза GROUP BY, то ни один элемент списка фразы SELECT не может содержать ссылку на столбец SELECT key, COUNT(salary) FROM manager 36

Использование функции COUNT(*) manager(key, family, name, rang, salary) SELECT COUNT(*) AS count_manager FROM manager Использование функции COUNT(*) manager(key, family, name, rang, salary) SELECT COUNT(*) AS count_manager FROM manager WHERE rang=‘инспектор’ 37

Использование функции COUNT(DISTINCT) manager(key, family, name, rang, salary) SELECT COUNT(DISTINCT rang) AS count_rang FROM Использование функции COUNT(DISTINCT) manager(key, family, name, rang, salary) SELECT COUNT(DISTINCT rang) AS count_rang FROM manager WHERE salary BETWEEN 5400 AND 10200 38

Использование функции COUNT и SUM manager(key, family, name, rang, salary) SELECT COUNT(key) AS count, Использование функции COUNT и SUM manager(key, family, name, rang, salary) SELECT COUNT(key) AS count, SUM(salary) AS SUM FROM manager WHERE rang=‘консультант’ 39

Использование функций MIN, MAX и AVG manager(key, family, name, rang, salary) SELECT MIN(salary) AS Использование функций MIN, MAX и AVG manager(key, family, name, rang, salary) SELECT MIN(salary) AS min_sal, MAX(salary) AS max_sal, AVG(salary) AS avg_sal FROM manager 40

Группирование результатов (GROUP BY) Запрос, в котором присутствует фраза GROUP BY, называется группирующим запросом Группирование результатов (GROUP BY) Запрос, в котором присутствует фраза GROUP BY, называется группирующим запросом n Поля, перечисленные во фразе GROUP BY, называются группируемыми полями n Каждый элемент списка фразы SELECT должен иметь единственное значение для всей группы n 41

Группирование результатов (GROUP BY) (продолжение. . ) Фраза SELECT может содержать только следующие типы Группирование результатов (GROUP BY) (продолжение. . ) Фраза SELECT может содержать только следующие типы элементов ¨ Имена полей; ¨ Обобщающие функции; ¨ Константы; ¨ Выражения, включающие комбинации перечисленных выше элементов 42

Группирование результатов (GROUP BY) (продолжение. . ) Все имена полей, приведенные во фразе SELECT, Группирование результатов (GROUP BY) (продолжение. . ) Все имена полей, приведенные во фразе SELECT, должны присутствовать во фразе GROUP BY, за исключением имен полей в обобщающей функции. Если с фразой GROUP BY используется фраза WHERE, то она обрабатывается первой, группировке подвергаются строки удовлетворяющие условию WHERE 43

Группирование результатов (GROUP BY) (продолжение. . ) В стандарте ISO определено, что все строки Группирование результатов (GROUP BY) (продолжение. . ) В стандарте ISO определено, что все строки таблицы, содержащие значения NULL в группируемых полях, помещаются в одну группу 44

Пример использование фразы GROUP BY manager(key, family, name, rang, salary) Определить количество сотрудников, работающих Пример использование фразы GROUP BY manager(key, family, name, rang, salary) Определить количество сотрудников, работающих на каждой должности и их суммарную зарплату SELECT rang, COUNT(key) AS count, SUM(salary) AS salary_sum FROM manager GROUP BY rang ORDER BY rang 45

При обработке этого запроса выполняются следующие действия: 1. Строки таблицы manager распределяются в группы При обработке этого запроса выполняются следующие действия: 1. Строки таблицы manager распределяются в группы в соответствии со значениями в поле rang 2. Для каждой группы строк вычисляется их количество и сумма в поле salary, после чего генерируется итоговая строка по группе 3. Полученные итоговые строки сортируются в порядке возрастания значений поля rang 46

Ограничения на выполнение группирования (HAVING) manager(key, family, name, dep, salary) Для каждого отдела, имеющего Ограничения на выполнение группирования (HAVING) manager(key, family, name, dep, salary) Для каждого отдела, имеющего в штате больше одного сотрудника, определить количество сотрудников, работающих в каждом отделе, их среднюю зарплату SELECT dep, COUNT(key) AS count, AVG(salary) AS salary_avg FROM manager GROUP BY dep HAVING COUNT(key)>1 ORDER BY rang 47

Замечание Стандарт ISO требует, чтобы имена полей, указанные во фразе HAVING, обязательно присутствовали во Замечание Стандарт ISO требует, чтобы имена полей, указанные во фразе HAVING, обязательно присутствовали во фразе GROUP BY или применялись в обобщающих функциях. Применение обобщающих функций во фразе WHERE недопустимо 48

present5.com

SQL: программирование, основы языка - Новости

курс

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

Полезные ссылки:

 

О структуре SQL

 

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

Давайте рассмотрим несколько типичных SQL запросов. Вы увидите, что он действительно использует английские слова:

SELECT Surname FROM Students

Этот запрос возвращает все фамилии, которые хранятся в таблице под названием Students. Конечно, более сложный запрос, менее походит на предложение, но в целом он все равно остается понятным:

SELECT Name,Surname FROM Students WHERE region="Kievskaya" AND

city="Kiev" ORDER BY Surname

Но это только на первый взгляд запрос кажется непонятным. Если разобраться, то эта строчка возвращает нам имя, фамилию из таблицы Students, из Киевской области, а конкретно города Киева и предоставляет нам данные отсортированные по Фамилии.

Вот собственно и все, считайте, что вы уже можете создавать свои собственные запросы. Более подробно можно прочитать тут - itvdn.com/ru/video/sql-essential, edu.cbsystematics.com/ru/courses/description/sqlprogramming.

Советы по синтксису... Единственное, учитывайте следующее:

  • Регистр. SQL абсолютно не чувствителен к нему. Например, select воспринимается абсолютно также, как и SELECT, то же самое можно сказать и про остальные «команды». С другой стороны, регистр учитывается при создании названия переменных, таблиц, названий колонок, если ваша операционная система на базе Unix или Linux. То есть, для вас lastName будет не тем же, что и lastname. Если же вы пользуетесь Windows, то для вас lastName будет тем же, что и lastname.
  • Пробелы. Слова в SQL должны быть разделены одним или несколькими пробелами. Не важно сколько пробелов вы используете. SQL так же не обрщает внимание на окончание строки. Вы можете начать новую строку в любом месте.
  • Кавычки. Обратите внимание, что "Kievskaya" и "Kiev" взяты в кавычки. Это не спроста. Слова Kievskaya и Kiev являются строковыми типами или, как их еще называют, символьными строками. Вы просите MySQL сравнить текстовые строки в SQL запросе с текстовыми строками, которые уже хранятся в базе данных. Так сравниваются только строки, числа не нужно заключать в кавычки.

Теперь вы готовы создать свой первый запрос. Не откладывайте!

mikrobiki.ru