Вконтакте Facebook Twitter Лента RSS

Язык sql определение. Язык SQL. Типы привилегий, которые существуют в этом сервере

Программы клиенты

Протокол TFTP

TFTP - тоже протокол FTP, но поверх протокола UDP (т.е. протокол без гарантированной доставки). Может использоваться в локальной сети, где скорость передачи важнее. На практике используется редко.

FTP - программа запускается с командной строки.

Windows Comander - может работать как FTP-клиент. Позволяет работать с удаленными каталогами также как с локальными.

NetVampire - Специализированный FTP-клиент, который позволяет качать большие файлы и качать по плохим каналам.

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

Запросы выполняются системой управления базой данных (СУБД). Если вы не являетесь специалистом по разработке и администрированию баз данных, то вполне можете быть их пользователем, который просматривает или/и изменяет данные в уже имеющихся таблицах. Во многих случаях эти и другие операции с базой данных выполняются с помощью специальных приложений, предоставляющих пользователю удобный интерфейс. Обычно приложения пишутся на специальных языках программирования (С, Pascal, Visual Basic и т. п.) и чаще всего создаются с помощью интегрированных сред разработки, например, Delphi, C++ Builder и др. Однако доступ к базе данных можно получить и без них - с помощью только SQL. Следует заметить также, что и специализированные приложения обычно используют SQL-фрагменты кода при обращениях к базе данных.

Таким образом, SQL - широко распространенный стандартный язык работы с реляционными базами данных. Синтаксис этого языка достаточно прост, чтобы его могли использовать рядовые пользователи, а не только программисты. В настоящее время обычный пользователь компьютера должен владеть, по крайней мере, текстовым редактором (например, Microsoft Word) и электронными таблицами (например, Microsoft Excel). Неплохо, если он также умеет пользоваться базами данных. Различных СУБД существует много, а универсальное средство работы с базами данных одно - SQL. Знание SQL, хотя бы его основ, и умение его применять для поиска и анализа данных является фундаментальной частью компьютерной грамотности даже рядовых пользователей.

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

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

В 1986 году Американский национальный институт стандартов (American National Standards Institute, ANSI) выпустил официальный стандарт SQL-86, который в 1989 году был обновлен и получил новое название SQL-89. В 1992 году этот стандарт был назван SQL-92 (ISO/IEC 9075:1992). Последней версией стандарта SQL является SQL:2003 (ISO/IEC 9075X:2003).

Любая реализация SQL в конкретной СУБД несколько отличается от стандарта, соответствие которому объявлено производителем. Так, многие СУБД (например, Microsoft Access 2003, PostgreSQL 7.3) поддерживают SQL-92 не в полной мере, а лишь с некоторым уровнем соответствия. Кроме того, они поддерживают и элементы, которые не входят в стандарт. Однако разработчики СУБД стремятся к тому, чтобы новые версии их продуктов как можно в большей степени соответствовали стандарту SQL.

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

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

На практике с базой данных обычно работают посредством приложений, написанных программистами на процедурных языках, например, на С, Visual Basic, Pascal, Java и др. Часто приложения создаются в специальных средах визуальной разработки, таких как Delphi, Microsoft Access, Visual dBase и т. п. При этом разработчику приложения практически не приходится писать коды программ, поскольку за него это делает система разработки. Во всяком случае, работа с программным кодом оказывается минимальной. Эти приложения имеют удобный графический интерфейс, не вынуждающий пользователя непосредственно вводить запросы на языке SQL. Вместо него это делает приложение. Впрочем, приложение может как использовать, так и не использовать SQL для обращения к базе данных. SQL не единственное, хотя и очень эффективное средство получения, добавления и изменения данных, и если есть возможность использовать его в приложении, то это следует делать.

Реляционные базы данных могут существовать и действительно существуют вне зависимости от приложений, обеспечивающих пользовательский интерфейс. Если по каким-либо причинам такого интерфейса нет, то доступ к базе данных можно осуществить с помощью SQL, используя консоль или какое-нибудь приложение, с помощью которого можно соединиться с базой данных, ввести и отправить SQL-запрос (например, Borland SQL Explorer).

Язык SQL считают декларативным (описательным) языком, в отличие от языков, на которых пишутся программы. Это означает, что выражения на языке SQL описывают, что требуется сделать, а не каким образом.

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

SELECT Фамилия, Должность FROM Сотрудники WHERE Отдел=102;

По-русски данное выражение звучит так:

ВЫБРАТЬ Фамилия, Должность ИЗ Сотрудники ПРИ УСЛОВИИ, ЧТО Отдел = 102;

Чтобы изменить значение "Иванов " на "Петров " столбца Фамилия , достаточно выполнить следующий запрос:

UPDATE Сотрудники SET Фамилия = "Петров" WHERE Фамилия = "Иванов";

По-русски данное выражение выглядит так:

ОБНОВИТЬ Сотрудники УСТАНОВИВ Фамилия РАВНЫМ "Петров " ГДЕ Фамилия = "Иванов" ;

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

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

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

· DML (Data Manipulation Language - язык манипулирования данными ) предназначен для поддержки базы данных: выбора (SELECT ), добавления (INSERT ), изменения (UPDATE ) и удаления (DELETE ) данных из таблиц. Эти операторы (команды) могут содержать выражения, в том числе и вычисляемые, а также подзапросы - запросы, содержащиеся внутри другого запроса. В общем случае выражение запроса может быть настолько сложным, что сразу и не скажешь, что он делает. Однако сложный запрос можно мысленно разбить на части, которые легче анализировать. Аналогично, сложные запросы создаются из относительно простых для понимания выражений (подзапросов).

· DDL (Data Definition Language - язык определения данных ) предназначен для создания, модификации и удаления таблиц и всей базы данных. Примерами операторов, входящих в DDL, являются CREATE TABLE (создать Таблицу)," CREATE VIEW (создать представление), CREATE SHEMA (создать схему), ALTER TABLE (изменить таблицу), DROP (удалить) и др.

· DCL (Data Control Language - язык управления данными ) предназначен для обеспечения защиты базы данных от различного рода повреждений. СУБД предусматривает некоторую защиту данных автоматически. Однако в ряде случаев следует предусмотреть дополнительные меры, предоставляемые DCL.

SQL явл. инструментом, предназнач. для обработки и чтения данных, содержа­щихся в комп. БД. SQL явл., прежде всего, инф-нно‑логич. языком, предназнач. для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL – это сокращенное название структурированного языка запросов (Structured Query Language ) . SQL применяется для орг-ции взаимодействия пользователя с базой данных. На самом деле SQL работает только с БД реляционного типа. Компьютерная программа, которая управляет базой данных, называется системой управления базой данных , или СУБД . Если пользователю необх. прочитать данные из БД, он запрашивает их у СУБД с пом. SQL. СУБД обрабатывает запрос, находит требуемые данные и посылает их пользователю. Процесс запрашивания данных и получения результата называется запросом к БД: отсюда и название – структурированный язык запросов . Несмотря на то, что чтение данных по-прежнему остается одной из наиб. важн. Ф-ций SQL, сейчас этот язык исп-ся для реализации всех функциональных возможностей , кот. СУБД предоставляет пользователю, а именно:

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

Чтение данных . SQL дает пользователю или приложению возможность читать из БД содержащиеся в ней данные и пользоваться ими.

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

Управление доступом . С пом. SQL можно ограничить возможности пользователя по чтению и изменению данных и защитить их от несанкционированного доступа.

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

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

Т. образом, SQL явл. достаточно мощным языком для взаимодействия с СУБД.

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

SQL - это легкий для понимания язык и в то же время универсальное программное средство управления данными.

Успех языку SQL принесли следующие его особенности:

Независимость от конкретных СУБД;

Переносимость с одной вычислительной системы на другую;

Наличие стандартов;

Реляционная основа;

Высокоуровневая структура;

Возможность выполнения специальных интерактивных запросов:

Обеспечение программного доступа к базам данных;

Возможность различного представления данных;

Полноценность как языка, предназначенного для работы с БД;

Возможность динамического определения данных;

Поддержка архитектуры клиент/сервер.

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

37 Базовые структуры предложений языка в запросах

Каждое предложение SQL - это запрос или обращение к БД, которое приводит к изменению в БД. В соответствии с тем, какие изменения происходят в БД, различают следующие типы запросов:

Запросы на создание или изменение в БД новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);

Запросы на получение данных;

Запросы на добавление новых данных (записей)

Запросы на удаление данных;

Обращения к СУБД.

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

В большинстве СУБД предложение заканчивается «;» и СУБД не обрабатывает информацию до тех пор пока не встречает «;». Предложение состоят из фраз и оно начинаются с зарегистрированного слова. Каждая фраза имеет название.

Назначения некоторых основных операторов языка SQL :

SELECT (выбрать) – (выбрать) данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями; FROM – указывает таблицу, из которой были выбраны поля; WHERE – создает условие на выборку данных в записях; ORDER BY – сортирует записи в заданном порядке; GROUP BY – группирует совпадающие записи при выполнении итоговых запросов; DISTINCTROW – исключает из результирующего набора повторяющиеся записи; TRANSFORM – вычисляет выражения в перекрестных запросах; PIVOT – определяет заголовки столбцов в таблице перекрестного запроса.

О предлож. SELECT. Все запросы на получение практически любого кол-ва данных из одной или неск. таблиц выполняются с помощью единственного предложения SELECT. В общем случае рез-том реализации предложения SELECT является другая таблица. К этой новой (рабочей) таблице может быть снова применена операция SELECT и т.д., т.е. такие операции могут быть вложены друг в друга. Представляет исторический интерес тот факт, что именно возможность включ. одного предложения SELECT внутрь другого послужила мотивировкой использ. прилагательного "структуризированный" в названии языка SQL. В конструкциях исп. обозначения: звездочка (*) для обозначения "все" – употр. в обычном для програм-ния смысле, т.е. "все случаи, удовлетворяющие определению"; (,) – исп. для разделения элементов списков; () – означают, что конструкции, заключ. в скобки, явл. необяз. ; прямая черта (|) – нал. выбора из двух или более возможностей.и др

36-37. Особ - сти языка SQL . Базовые структуры предложений языка в запросах (а/в)

SQL - Структурированный Язык Запросов. Инф-е пр-во - более унифиц-м. Это привело к необх-сти создания стандартного языка, который мог

SELECT в языке SQL (для одной таблицы): SELECT (выбрать) специфицированные поля

FROM (из) специфицированной таблицы

WHERE (где) некоторое специфицированное условие является истинны

SELECT список_выбираемых_элементов (полей)

FROM список_таблиц (или представлений)

]

Использование квалификатора AS

Данный квалификатор заменяет в результирующей таблице существующее название столбца на заданное.

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

К агрегирующим функциям относятся функции вычисления суммы (SUM), макс-го (SUM) и мин-го (MIN) знач-й столбцов, арифм-го среднего (AVG), а также количества строк, удовлетворяющих заданному условию (COUNT).

SELECT count(*), sum (budget), avg (budget),

min (budget), max (budget)

WHERE head_dept = 100

вычислить: количество отделов, являющихся подразделениями отдела 100 (Маркетинг и продажи), их суммарный, средний, мин-й и максимальный бюджеты COUNT SUM AVG MIN MAX

5 3800000.00 760000.00 500000.00 1500000.00

Предложение FROM команды SELECT

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

Типы предикатов, используемых в предложении WHERE :

сравнение с использованием реляционных операторов

Равно <> не равно!= не равно > больше < меньше

>= больше или равно <= меньше или равно

BETWEEN IN LIKE CONTAINING IS NULL

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

SELECT first_name, last_name, dept_no,

WHERE job_country <> "USA"

BETWEEN

Предикат BETWEEN задает диапазон значений, для которого выражение принимает значение true. Разрешено также испть конструкцию NOT BETWEEN.

WHERE salary BETWEEN 20000 AND 30000

получить список сотрудников, годовая зарплата которых больше 20000 и меньше 30000 FIRST_NAME LAST_NAME SALARY

Ann Bennet 22935.00

Kelly Brown 27000.00

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

SELECT first_name, last_name, salary

WHERE last_name BETWEEN "Nel" AND "Osb"

получить список сотрудников, фамилии которых находятся между "Nel" и "Osb" FIRST_NAME LAST_NAME SALARY

Robert Nelson 105900.00

Carol Nordstrom 42742.50

Sue Anne O"Brien 31275.00

SELECT first_name, last_name, hire_date

IN Предикат IN проверяет, входит ли заданное значение, предшествующее ключевому слову "IN" (например, значение столбца или функция от него) в указанный в скобках список. Если заданное проверяемое значение равно какому-либо элементу в списке, то предикат принимает значение true. Разрешено также использовать конструкцию NOT IN.

SELECT first_name, last_name, job_code

WHERE job_code IN ("VP", "Admin", "Finan")

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

% - замещает любое количество символов (в том числе и 0),

Замещает только один символ.

Разрешено также использовать конструкцию NOT LIKE.

SELECT first_name, last_name

WHERE last_name LIKE "F%"

получить список сотрудников, фамилии которых начинаются с буквы "F" FIRST_NAME LAST_NAME

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

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

Аналитиков CodingDojo, SQL - самый важный и нужный язык запросов среди языков программирования, как бы странно это ни звучало. Рейтинг CodingDojo учитывает статистику востребованности языков программирования на рынке труда.

Ведь СУБД – MySQL, PostgreSQL и Microsoft SQL Server – распространены повсеместно: в крупном и малом бизнесе, в больницах, банках, университетах и так далее. В принципе, SQL не ограничивается только настольными девайсами: СУБД SQLite с успехом заняла свое место на Android-смартфонах и мобильных устройствах Apple. Соответственно, такие приложения, как Skype и Dropbox, постоянно к ней обращаются.

Однако были времена, когда не было смартфонов, а этот язык уже существовал. История SQL – это не годы, но десятилетия. Поверили в него не сразу.

System R и IBM

Первые упоминания об этом языке датируются 1974 годом. SQL создавался в рамках проекта экспериментальной реляционной СУБД System R. Занималась этим проектом компания IBM.

Первоначально язык назывался SEQUEL (Structured English Query Language), но потом слово «English» пропало из этого словосочетания, а аббревиатура приобрела тот вид, к которому мы давно уже привыкли. С одной стороны, SQL был ориентирован на удобную и понятную пользователям формулировку запросов к реляционным БД. С другой стороны, практически с самого начала он был так называемым «полным языком БД». Это означает, что SQL включал:

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

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

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

Разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Chamberlin) и Рэй Бойс (Ray Boyce).

SEQUEL был не единственным языком подобного назначения. В Калифорнийском Университете Беркли была разработана некоммерческая СУБД Ingres, которая являлась реляционной СУБД, но использовала свой собственный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД по сравнению с языком SQL.
В System R была реализована наиболее сложная и полная версия SQL. Чуть меньше функциональности было в SQL/DS и DB2 от той же IBM. Из SQL System R были удалены только те части, которые были недостаточно проработаны (например, точки сохранения) или реализация которых вызывала слишком большие технические трудности (например, ограничения целостности и триггеры).

Коммерческий успех

Поэтому путь к коммерческой реализации SQL, который прошла IBM, называют движением «сверху вниз».

Oracle, Informix и Sybase пошли по другому пути – «снизу вверх»: в первых версиях этих систем, выпущенных на рынок, использовалось существенно ограниченное подмножество SQL System R. А далее они начали постепенно расширяться. Однако в первой коммерческой реализации SQL в СУБД Oracle в операторах выборки не допускалось использование вложенных подзапросов и отсутствовала возможность формулировки запросов с соединениями нескольких отношений.


Распеределение рыночных долей по состоянию на 2011 год

Растущая заинтересованность рынка в скорейшем переходе к реляционным системам управления базами данных позволила разработчикам перечисленных выше компаний добиться коммерческого успеха. Это произошло, скорее, вопреки тому, что СУБД были тогда очень далеки от совершенства. Ну а теперь Oracle, Informix, Sybase и Microsoft SQL Server поддерживают достаточно мощные диалекты SQL.

Стандартизация

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

Однако деятельность по стандартизации языка SQL началась очень вовремя – практически одновременно с появлением его первых коммерческих реализаций. В 1982 году комитету по базам данных Американского национального института стандартов (ANSI) было поручено разработать спецификацию стандартного языка реляционных баз данных.

После отклонения ряда неудачных версий стандарта в 1986 году эксперты пришли к единому знаменателю. А в 1987 году стандарт SQL/86 был одобрен Международной организацией по стандартизации (ISO).

За основу стандарта нельзя было брать SQL System R. Во-первых, этот вариант языка был недостаточно проработан технически. Во-вторых, его слишком сложно было бы реализовать. Поэтому за основу был взят диалект языка SQL, сложившийся в IBM к началу 1980-х годов. В сущности, этот диалект представлял собой подмножество SQL System R.

Стандарт SQL1

К 1989 году стандарт SQL/86 был несколько расширен, после чего появился следующий стандарт, получивший название ANSI/ISO SQL/89.

SQL/89 стал первым всемирно принятым стандартом языка SQL. У этого языка имеется масса недостатков: многие важные понятия не определены, много отдано на откуп реализациям. В этом стандарте полностью отсутствуют такие важные разделы, как манипулирование схемой БД и динамический SQL.

Но тем не менее он сыграл свою роль в становлении действительно стандартизованных реляционных систем управления базами данных. Более того, с появлением стандарта SQL/89 стало возможно проектировать, разрабатывать и сопровождать информационные системы, не слишком привязанные к конкретному производителю СУБД. В некотором смысле появление SQL/89 явилось продвижением технологии баз данных в сторону открытых систем.

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

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

Средство поддержания целостности включает возможности определения:

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


Возможности операции Join в разных стандартах

Стандарт SQL2 и его дополнения

Осознавая неполноту стандарта SQL, специалисты различных компаний начали работу над очередным стандартом, который получил название SQL2. Эта работа также длилась несколько лет, было выпущено множество проектов стандарта, пока наконец в марте 1992 года не был принят окончательный проект стандарта (SQL/92). Этот стандарт существенно полнее стандарта SQL/89 и охватывает практически все аспекты, необходимые для реализации приложений: манипулирование схемой БД, управление транзакциями (появились точки сохранения) и сессиями (сессия – это последовательность транзакций, в пределах которой сохраняются временные отношения), подключения к БД, динамический SQL. Наконец, были стандартизованы отношения-каталоги БД, что вообще-то не связано непосредственно с языком, но очень сильно влияет на реализацию.

В 1995 году стандарт был дополнен спецификацией интерфейса уровня вызова (Call-Level Interface – SQL/CLI). SQL/CLI представляет собой набор спецификаций интерфейсов процедур, вызовы которых позволяют выполнять динамически задаваемые операторы SQL. По сути дела, SQL/CLI представляет собой альтернативу динамическому SQL.

Стандарт SQL/CLI послужил основой для создания повсеместно распространенных сегодня интерфейсов ODBC (Open Database Connectivity) и JDBC (Java Database Connectivity).

В 1996 году к стандарту SQL/92 был добавлен еще один компонент – SQL/PSM (Persistent Stored Modules). Основная цель этой спецификации – стандартизировать способы определения и использования хранимых процедур, то есть специальным образом оформленных программ, включающих операторы SQL, которые сохраняются в базе данных, могут вызываться приложениями и выполняются внутри СУБД.

Oracle является одной из наиболее популярных СУБД. Более того, именно там впервые была реализована совместимость со стандартом SQL/92.

А изначально первой СУБД, поддерживающей язык SQL, стала Oracle V2, разработанная для машин VAX. Это было еще в в 1979 году.
Oracle поддерживает ряд различных платформ, включая Windows, Linux, Max OS X и Sun Solaris.

Процедурное расширение SQL, разработанное Oracle, называется PL/SQL (Procedural Language/Structured Query Language) и основано на синтаксисе языков Ada и Pascal. Третьим ключевым языком, использующийся в СУБД Oracle наравне с SQL и PL/SQL, является Java.

PL/SQL поддерживает программные блоки, а также разнообразные типы данных для хранения чисел, строк и дат, операторы управления потоком вычислений (в том числе условные переходы и циклы) и три типа контейнеров (коллекций) - массивы переменной длины, ассоциативные массивы и вложенные таблицы.

Стандарт SQL3

Первоначально планировалось закончить работу над новым стандартом в 1995 году. Реально работу над новым стандартом удалось частично завершить только в 1999 году, и по этой причине стандарт получил название SQL:1999.
Каждый новый вариант стандарта языка SQL был существенно объемнее предыдущих версий. Так, если стандарт SQL/89 занимал около 600 страниц, то объем SQL/92 составлял на 300 с лишним страниц больше.
Самые первые проекты SQL3 занимали около 1500 страниц.

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

В 1999 году были приняты пять частей стандарта SQL:1999.

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

Вторая часть SQL:1999 (SQL/Foundation) образует базис стандарта. Вводится система типов языка, формулируются правила определения функциональных зависимостей и возможных ключей, определяются синтаксис и семантика основных операторов SQL:

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

Третью часть занимает уточненная по сравнению с SQL/92 спецификация SQL/CLI. В четвертой части специфицируется SQL/PSM – синтаксис и семантика языка определения хранимых процедур. Наконец, в пятой части – SQL/Bindings – определяются правила связывания SQL для стандартных версий языков программирования.

В стандарт SQL:1999 должны были войти еще несколько частей. Среди них спецификации следующих средств:

Управление распределенными транзакциями (SQL/Transaction);
поддержка темпоральных свойств данных (SQL/Temporal);
управление внешними данными (SQL/MED);
связывание с объектно-ориентированными языками программирования (SQL/OLB);
поддержка оперативной аналитической обработки (SQL/OLAP).

SQL в XXI веке

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

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

Типы данных;
подпрограммы, вызываемые из SQL;
расширенные возможности оператора CREATE TABLE;
новый объект схемы – генератор последовательностей;
новые виды столбцов – идентифицирующие столбцы (identity column) и генерируемые столбцы (generated column);
новый оператор MERGE;

Претерпела некоторые изменения общая организация стандарта. Стандарт SQL:2003 состоит из следующих частей:

9075-1, SQL/Framework;
9075-2, SQL/Foundation;
9075-3, SQL/CLI;
9075-4, SQL/PSM;
9075-9, SQL/MED;
9075-10, SQL/OLB;
9075-11, SQL/Schemata;
9075-13, SQL/JRT;
9075-14, SQL/XML.

Части 1-4 и 9-10 с необходимыми изменениями остались такими же, как и в SQL:1999. Часть 5 (SQL/Bindings) перестала существовать; соответствующие спецификации включены в часть 2.

Раздел части 2 SQL:1999, посвященный информационной схеме, выделен в отдельную часть 11. Появились две новые части – 13 и 14.

Часть 13 полностью называется «SQL Routines and Types Using the Java Programming Language» («Использование подпрограмм и типов SQL в языке программирования Java»). Появление такой части стандарта оправдано повышенным вниманием к языку Java со стороны ведущих производителей SQL-ориентированных СУБД.

Наконец, последняя часть SQL:2003 посвящена спецификациям языковых средств, позволяющих работать с XML-документами в среде SQL.

Несмотря на старания разработчиков, процесс стандартизации явно не поспевает за происходящими изменениями.


Основные моменты в истории SQL

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

P.S. SQL нельзя в полной мере отнести к традиционным языкам программирования, он не содержит традиционные операторы, управляющие ходом выполнения программы, операторы описания типов и многое другое, он содержит только набор стандартных операторов доступа к данным, хранящимся в базе данных. Однако эти «недостатки» ему прощают, учитывая его место в истории ИТ.

SQL – это структурированный язык запросов. SQL не существует без баз данных — на нем нельзя писать программы, и в этом смысле он не является языком программирования, таким как РНР, но когда приходится иметь дело с конкретной СУБД, то без знания SQL уже не обойтись. На нем можно писать простенькие запросы, а можно выполнять большие транзакции, состоящие из нескольких сложных запросов. SQL-запрос — это своего рода команда к базе данных. Такая команда может затребовать вернуть информацию, попадающую под конкретные критерии, или дать указание удалить какие-либо записи и т.п. SQL-команда — это простая строка, например:

SELECT * FROM Staff WHERE department

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

ВЫБРАТЬ ВСЕ из Staff ГДЕ clwjiertme"

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

Если вы раньше не работали с СУБД, то у вас может возникнуть резонный во­прос: где и как можно выполнить данный запрос? Существует три способа выпол­нения SQL-запросов.

1. Интерактивная среда взаимодействия с СУБД. Для большинства серверов СУБД существуют программы-клиенты (встроенные или поставляемые третьими лицами), в рабочей среде которых можно писать SQL-запросы, вы­полнять их и получать результат. Обычно такие средства используются ад­министраторами баз данных и к РНР-программированию прямого отноше­ния не имеют. Примером клиентской программы для работы с MySQL может послужить программа MySQL Administrator (http: /www.mysgl.coin/ product-s/administratoT/) или очень популярная РНР-система phpMyAdmin (http: / /www. phpmyadi’ln. r»et/itumm jiage/index. php). Для начала работы будет достаточно уже установленного дистрибутива, который имеет консоль­ный интерфейс. В Linux необходимо из командной строки набрать команду mysql, чтобы открылось окно с приглашением для ввода SQL-запросов, а в Windows для запуска того же интерфейса нужно запустить файл mysql. ехе из каталога bin.

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

3. Динамические SQL-запросы. К данному виду относятся такие запросы, i рые при написании приложения не могут быть определены полностью. i» пример, при написании программы для получения списка сотруднике» mt разным подразделениям предприятия программисту не известно, ci"> о в компании будет подразделений и какие сотрудники будут в них входи i„. Конечно, эти данные можно прописать в программе жестко, но при перво же изменении в структуре компании программу можно будет выбросить ил, потребуется переписать. Динамические запросы позволяют создавать поо-граммы, гибкие к изменениям данных. В РНР такие запросы выполняются практически теми же функциями, что и статические, только в них г’»’щег’^в’> ет возможность передавать некоторые параметры.

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

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

1. Определение структуры базы данных. К этому типу относятся запросы, с помощью которых создаются и модифицируются таблицы и индексы. Обыч­но это команды CRE; "Е ТА’ LE, ALI’R ТА’ LE, ‘ ” ’.ТЕ INDEX И др.

2. Манипуляция данными. К этому типу относятся запросы на вставку (дв1*и> ление), удаление или изменение данных в таблицах. Это три основные ко­манды: INSERT. DELETE И UPDATE.

3. Выборка данных Сюда входит только одна команда SELECT. Она не вносит изменения в сами данные, но позволяет получать их из базы. Несмотря на то что для выборки данных используется только одна команда, она имеет очень большие возможности и используется в приложениях очень часто.

4. Управление сервером СУБД. К этому типу в основном относятся запросы для управления пользователями и их правами доступа (например, команда GRANT).

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

Как и в любой другой сфере IT, в SQL существуют стандарты — это ANSI SQL. Аббревиатура ANSI расшифровывается как Amrican National Standards Institute (Американский национальный институт стандартов). Однако не в последнюю оче­редь из-за различия в функционале самих СУБД реализации SQL для различных

СУБД все же отличаются друг от друга. На данный момент практически каждая СУБД имеет свой диалект, который обычно не сильно отличается от общего стан­дарта, но имеет свои особенности. Например, с Oracle и PostgreSQL совместим язык PL/SQL, а для работы с MS SQL Server используется T-SQL.

Для последующей работы с базами данных мы рекомендуем сразу изучать тот стандарт, с которым вы планируете работать в дальнейшем. Для большинства Web-разработчиков на данный момент с головой хватает функциональных возможно­стей СУБД MySQL (к тому же она может использоваться бесплатно), поэтому в дан­ной книге все примеры с MySQL будут приводиться, соответственно, на диалекте этой СУБД. Документация по языку запросов для MySQL можно найти на сайте www.mysql.com.

Перевод: Alexandr Pyramidin

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

Как работает SQL?

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

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

  • Рассмотреть строку таблицы.
  • Выполнить проверку: является ли эта строка одной из строк, которая вам нужна.
  • Если это так, сохранить её где-нибудь, пока вся таблица не будет проверена.
  • Проверить, имеются ли другие строки в таблице.
  • Если имеются, возвратиться на шаг 1.
  • Если строк больше нет, вывести все значения, сохранённые в шаге 3.

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

Что делает ANSI?

Как мы уже сказали во Введении, стандарт SQL определяется с помощью кода ANSI (Американский Национальный Институт Стандартов). SQL не изобретался ANSI. Это, по существу, изобретение IBM. Но другие компании подхватили SQL сразу же. По крайней мере одна компания (Oracle) отвоевала у IBM право на рыночную продажу SQL-продуктов.

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

Интерактивный и вложенный SQL

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

Вложенный SQL состоит из команд SQL, помещённых внутри программ, которые обычно написаны на другом языке (типа КОБОЛа или ПАСКАЛя). Это делает такие программы более мощными и эффективным.

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

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

Подразделы SQL

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

  • DDL (Язык Определения Данных) - так называемый Язык Описания Схемы в ANSI - состоит из команд, которые создают объекты (таблицы, индексы, просмотры и так далее) в базе данных.
  • DML (Язык Манипулирования Данными) это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени.
  • DCD (Язык Управления Данными) состоит из средств, которые определяют, разрешить ли пользователю выполнять определённые действия, или нет. Они являются составными частями DDL в ANSI.

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

Различные типы данных

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

Так как системы с РБД базируются на связях между фрагментами информации, различные типы данных должны отличаться друга от друга так, чтобы соответствующие процессы и сравнения могли быть в них выполнены. В SQL это делается с помощью назначения каждому полю типа данных, указывающего тип значения, которое это поле может содержать. Все значения в данном поле должны иметь одинаковый тип. В таблице Заказчиков, например, cname и city содержат строки текста для оценки, а snum и cnum это числа. По этой причине вы не можете ввести значение Highest (Наивысший) или значение None (Никакой) в поле rating, которое имеет числовой тип данных. Это ограничение удачно, так как оно налагает некоторую структурность на ваши данные. Вы часто будете сравнивать некоторые или все значения в данном поле, поэтому вы можете выполнять действие только на определенных строках, а не на всех. Вы не могли бы сделать этого, если бы значения полей имели смешанный тип данных.

К сожалению, определение этих типов данных является основной областью, в которой большинство коммерческих программ БД и официальный стандарт SQL не всегда совпадают. ANSI SQL-стандарт распознаёт только text и number, в то время как большинство коммерческих программ используют другие специальные типы. Такие как DATA (ДАТА) и TIME (ВРЕМЯ) - фактически, почти стандартные типы (хотя точный формат их меняется). Некоторые пакеты также поддерживают такие типы как, например, MONEY (ДЕНЬГИ) и BINARY (ДВОИЧНЫЙ). (MONEY это специальная "валютная" система исчисления, используемая компьютерами.)

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

ANSI определяет несколько числовых типов, различия между которыми довольно тонки, и иногда их путают. Разрешённые ANSI-типы данных перечислены в Приложении B. Сложность числовых типов ANSI можно, по крайней мере частично, объяснить усилием сделать вложенный SQL совместимым с рядом других языков. Два типа чисел ANSI - INTEGER (ЦЕЛОЕ ЧИСЛО) и DECIMAL (ДЕСЯТЕРИЧНОЕ ЧИСЛО) (которые можно сокращать как INT и DEC, соответственно), будут адекватны для наших целей, так же как и для целей большинства практических деловых прикладных программ. Естественно, что тип ЦЕЛОЕ можно представить как ДЕСЯТЕРИЧНОЕ ЧИСЛО, которое не содержит никаких цифр справа от десятичной точки.

Тип для текста - CHAR (или СИМВОЛ), относящийся к строке текста. Поле типа CHAR имеет длину, определяемую максимальным числом символов, которые могут быть введены в это поле. Большая часть реализаций также имеют нестандартный тип, называемый VARCHAR (ПЕРЕМЕННОЕ ЧИСЛО СИМВОЛОВ), который является текстовой строкой и может иметь любую длину до определённого реализацией максимума (обычно 254 символа). Значения CHARACTER и VARCHAR включаются в одиночные кавычки как "текст". Различие между CHAR и VARCHAR в том, что CHAR должен резервировать достаточное количество памяти для максимальной длины строки, а VARCHAR распределяет память по мере необходимости.

Символьные типы состоят из всех печатных символов, включая числа. Однако число 1 это не то же, что символ "1". Символ "1" - только печатный фрагмент текста, не определяемый системой как числовое значение 1. Например 1 + 1 = 2, но "1" + "1" не равно "2". Символьные значения сохраняются в компьютере как двоичные значения, но показываются пользователю как печатный текст.

Преобразование выполняется по формату, определяемому системой, которую вы используете. Этот формат преобразования будет одним из двух стандартных типов (возможно, с расширениями), используемых в компьютерных системах: ASCII-код (используемый во всех персональных и малых компьютерах) и EBCDIC-код (Расширенном Двоично-Десятеричном Код Обмена Информации) (используемый в больших компьютерах). Определенные операции, такие как упорядочивание в алфавитном порядке значений поля, будет изменяться вместе с форматом.

Мы должны следить за рынком, а не за ANSI, в использовании типа DATE (ДАТА). (В системе, которая не распознает тип ДАТА, вы, конечно, можете объявить дату как символьное или числовое поле, но это сделает большинство операций более трудоёмкими.)

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

SQL. Несогласованности.

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

ЧТО ТАКОЕ "ПОЛЬЗОВАТЕЛЬ"?

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

Обычно в такой системе каждый пользователь имеет некий вид кода проверки прав, который идентифицирует его или её (терминология изменяется). В начале сеанса с компьютером пользователь входит в систему (регистрируется), сообщая компьютеру, кто этот пользователь, идентифицируясь с помощью определенного ID (Идентификатора). Любое количество людей, использующих ID доступа, являются отдельными пользователями; и, аналогично, один человек может представлять большое количество пользователей (в разное время), используя различные идентификаторы доступа к SQL. Действия в большинстве сред SQL приведены к специальному Идентификатору доступа, который точно соответствует определённому пользователю. Таблица или другой объект принадлежит пользователю, который имеет над ним полную власть. Пользователь может или может не иметь привилегии на выполнение действия над объектом. Для наших целей мы договоримся, что любой пользователь имеет необходимые привилегии для выполнения любого действия, пока мы не возвратимся специально к обсуждению привилегий в Главе 22. Специальное значение USER (ПОЛЬЗОВАТЕЛЬ) может использоваться как аргумент в команде. Оно указывает на доступный Идентификатор пользователя, выдавшего команду.

Условные обозначения и терминология

Ключевые слова это слова, которые имеют специальное значение в SQL. Они могут быть командами, но не текстом и не именами объектов. Мы будем выделять ключевые слова, печатая их ЗАГЛАВНЫМИ БУКВАМИ. Вы должны быть внимательны, чтобы не путать ключевые слова с терминами.

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

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

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

Предложения начинаются ключевым словом и состоят из ключевых слов и аргументов. Например, предложения, с которыми вы можете сталкиваться, это "FROM Salespeope" и "WHERE city = "London"". Аргументы завершают или изменяют значение предложения. В примерах выше, Salespeople - аргумент, а FROM - ключевое слово предложения FROM. Аналогично "city = "London"" - аргумент предложения WHERE.

Объекты это структуры БД, которым даны имена и которые сохраняются в памяти. Сюда относятся базовые таблицы, представления и индексы.

Чтобы показать вам, как формируются команды, мы будем делать это на примерах. Имеется, однако, более формальный метод описания команд, использующий стандартизированные условные обозначения. Мы будем использовать его в последующих главах для удобства, чтобы понимать эти условные обозначения в случае, если вы столкнетесь с ними в других SQL-документах.

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

Резюме

Мы кратко рассмотрели в этой главе основы. Но нашим намерением и было - бегло рассмотреть основы SQL так, чтобы вы смогли охватить весь объём информации.

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

© 2024 Про уют в доме. Счетчики газа. Система отопления. Водоснабжение. Система вентиляции