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

Любая концептуальная информация о реляционных базах данных и таблицах приносит пользу лишь в том случае, если вы знаете, как организовать взаимодействие с данными. Язык SQL состоит из структурированных команд, предназначенных для добавления, модификации и удаления данных из базы. Эти команды образуют основу для взаимодействия с сервером PostgreSQL.

Этот раздел посвящен "анатомии" команд SQL. В нем рассматриваются структурные компоненты команд, описываются функции каждого компонента и их взаимные связи. Стандартный клиент командной строки PostgreSQL, psql, выводит результаты выполнения команд в приведенных примерах.

Большинство примеров команд SQL относится к базе данных booktown . Весь вывод psql снабжается префиксом вида booktown=# .

В некоторых примерах используется тестовая база данных testdb . По умолчанию в приглашении psql выводится только имя базы данных и символы =# , означающие, что система готова к вводу новой команды (хотя вы увидите, что символ = динамически изменяется по мере отслеживания состояния входных данных SQL). В книге это приглашение приводится вместе с входными и выходными данными SQL, чтобы вам было проще освоиться с выводом клиента psql.

Клиент psql подробно описан в главе 4. Здесь он упоминается лишь для пояснения стиля примеров команд SQL.

Примечание
Схема базы данных booktown (вместе с примерами записей) находится в файле booktown.sql на компакт-диске. Чтобы установить эту базу данных, введите в приглашении командной строки команду psql - U postgres template! - f /mnt/cdrom/booktown.sql, где /mnt/cdrom - путь к смонтированному компакт-диску, a postgres - имя суперпользователя PostgreSQL
.

Анатомия команд SQL

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

Таблица 3.2 . Основные действия PostgreSQL.

Действие Описание
CREATE DATABASE Создание новой базы данных
CREATE INDEX Создание нового индекса для столбца таблицы
CREATE SEQUENCE Создание новой последовательности в существующей базе данных
CREATE TABLE Создание новой таблицы в существующей базе данных
CREATE TRIGGER Создание нового определения триггера
CREATE VIEW Создание нового представления для существующей таблицы
SELECT Выборка записей из таблицы
INSERT Вставка одной или нескольких новых записей в таблицу
UPDATE Модификация данных в существующих записях
DELETE Удаление существующих записей из таблицы
DROP DATABASE Уничтожение существующей базы данных
DROP INDEX Удаление индекса столбца из существующей таблицы
DROP SEQUENCE Уничтожение существующего генератора последовательности
DROP TABLE Уничтожение существующей таблицы
DROP TRIGGER Уничтожение существующего определения триггера
DROP VIEW Уничтожение существующего представления
CREATE USER Создание в системе новой учетной записи пользователя PostgreSQL
ALTER USER Модификация существующей учетной записи пользователя PostgreSQL
DROP USER Удаление существующей учетной записи пользователя PostgreSQL
GRANT Предоставление прав доступа к объекту базы данных
REVOKE Лишение прав доступа к объекту базы данных
CREATE FUNCTION Создание новой функции SQL в базе данных
CREATE LANGUAGE Создание нового определения языка в базе данных
CREATE OPERATOR Создание нового оператора SQL в базе данных
CREATE TYPE Создание нового типа данных SQL в базе данных

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

Язык SQL: классификация команд

Стандартные команды SQL можно рассматривать, отталкиваясь от их назначения. За основу классификации можно взять следующие наборы:

— команды для построения запросов;

— команды встроенных функций и процедур;

— команды системных таблиц и триггеров;

— наборы комбинаций, предназначенных для работы со строковыми переменными и датой;

— команды для работы с таблицами и данными.

Эту классификацию можно продолжать бесконечно долго, однако основные наборы команд языка SQL будут строиться именно исходя из представленных типов. Рассматривая классификацию языка, нельзя не сказать о том, что он универсален. Об этом лишний раз свидетельствует сфера его применения. Данный язык программирования и его разновидности используются не только в стандартной среде, но и в других программах, которые вы использовали, так или иначе. Можно рассматривать сферу использования SQL с точки зрения офисного программного обеспечения. Речь идет о MicrosoftAccess. Данный язык, а если говорить точнее, его разновидность MySQL, дает возможность администрировать базы данных в Интернете. Среда разработки Oracle использует команды SQL на основе своих запросов.

Применение SQL в Microsoft Access

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

SQL-команды в Microsoft Access довольно примитивны, если рассматривать их на профессиональном уровне. Выполнение данных команд осуществляется очень просто. Создаются они в специальном редакторе кода. Давайте рассмотрим конкретный пример:

SELECTPe_SurName

WHEREPe_Name = ‘Мери’;

Рассматривая синтаксис данной программы, можно сказать, что она вернет пользователю фамилию человека. В данном случае речь идет о женщине по имени Мери, имя которой хранится в базе данных Contacts. Хотя использование SQL в Access ограничено, такие простые запросы иногда сильно упрощают выполнение поставленного задания.

Использование команд SQL в Oracle

Oracle является наверное единственным серьезным конкурентом Microsoft SQL Server. Эта среда разработки и управления БД постоянно приводит к усовершенствованию функций программного продукта от компании Microsoft, поскольку конкуренция является двигателем прогресса. Команды SQL Oracle, несмотря на постоянное соперничество, повторяют SQL. Необходимо отметить, что хотя Oracle практически считается копией SQL, логика данной системы и в целом языка считается проще. При использовании определенного набора команд система Oracle не имеет такой сложной структуры. Если рассматривать возможности этих сред разработки баз данных, то у Oracle нет сложной структуры вложенных запросов. Подобная разница дает возможность во много раз ускорить работу с данными. Однако в противовес это в некоторых случаях может привести к нерациональному использованию памяти в отдельных случаях. В основном структура Oracle построена на временных таблицах и их применении. К примеру, SQL команды в данной системе строятся по аналогии со стандартами языка SQL, хотя и отличаются от него.

SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname),

CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))),

CONCAT(‘принят на работу ‘, acceptdate))

FROM employees WHERE acceptdate>to_date(‘01.01.80′,’dd.mm.yyyy’);

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

Применение SQL в сети Internet

После появления всемирной паутины, или иначе говоря, интернета, сфера применения языка SQL была существенно расширена. В сети, как известно, хранится большой объем информации. При этом она расположена не хаотично, а размещена на серверах и сайтах по определенным критериям. За хранение информации в Интернете и других местах отвечают непосредственно базы данных. Сайты представляют собой системы управления. Сайты и их программный код, как правило, организованы на разных языках программирования. В основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, который ориентирован на веб-интерфейсы MySQL. Основной набор команд и синтаксис данного языка полностью копируют SQL. Однако имеются некоторые дополнения, которые и придают ему отличие от Microsoft SQL Server. Команды SQL похожи не только по синтаксису, но и по набору служебных слов. Разница заключается только в структурировании и вызове запроса. Можно рассмотреть для примера запрос для создания новой таблицы. Именно этому прежде всего и учат детей на уроках информатики.

$link = mysqli_connect(‘localhost’, «root», », ‘tester’);

if (!$link) die(«Error»);

$query = ‘create table users(

login VARCHAR(20),

password VARCHAR(20))’;

if (mysqli_query($link, $query)) echo «Таблицасоздана.»;

elseecho «Таблица не создана: «.mysqli_error();

mysqli_close($link);

Результатом выполнения такого запроса будет создание новой таблицы Users с двумя полями: логин и пароль. В данном случае синтаксис изменен под Веб. В основе лежат команды MicrosoftSQLServer.

Microsoft SQL Server: построение запросов

Одной из основных задач SQL является выборка из таблиц определенного набора данных. Для выполнения таких операций в SQL предусмотрена команда select. О ней и будет идти речь ниже. Правила построения команд довольно просты. Сама команда select в SQL строится следующим образом. Предположим, у вас имеется таблица, в которой присутствуют данные о сотруднике. Таблица имеет имя Person. Вам нужно выбрать данные о сотрудниках, дата рождения которых лежит в промежутке с первого января по первое сентября текущего года. Чтобы осуществить такую выборку необходимо выполнить команду SQL, в которой будет использоваться не только стандартная конструкция, но и примерно такое условие выбора: Select * fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=09/01/2016’. Выполнение данной команды возвращает информацию о сотрудниках, дата рождения которых находится в заданном вами периоде. В некоторых случаях перед пользователем стоит задача вывести только ФИО сотрудника. Для этого можно построить запрос следующим образом: SelectP_Name – имя P_SurName – фамилия P_Patronimic – отчество fromPersonWhereP_BirthDay>=’01/01/2016’ andP_BirthDay<=’09/01/2016’. В данном случае речь идет только о выборе чего-либо. По сути своей он ни на что не влияет, а только предоставляет информацию в запрашиваемом виде. Если вы решили всерьез заняться изучением языка SQL, то вам придется научиться вносить изменения в базы данных, поскольку их построение без этого просто невозможно. Чуть ниже будет рассмотрено, как это делается.

Основные команды SQL для изменения информации

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

— Insert (вставить);

— Update (обновить);

— Delete (удалить).

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

Использование команды Insert

Для вставки используется команда Insert. Неправильно вставленную информацию можно всегда удалить и заново внести в базу данных. Команда Insert предназначена для вставки новых данных в таблицу. Она позволяет добавить как полный набор данных, так и выборочный. Для примера можно рассмотреть команду вставки в ранее описанную таблицу Person. Чтобы внести данные в таблицу, нужно исполнить SQL-команду, которая дает возможность вставить всю информацию в таблицу или выборочно заполнить ее.

Insertintoperson

Select ‘Иванов’,’Иван’,’Иванович’,’01/01/1990’

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

Insertintoperson(P_Name, P_SurName ,P_BerthDay)

Values (‘Джон’, ‘Джонсон’,’01/11/1988’)

Данная команда заполнит указанные ячейки. Остальные будут иметь значение null.

Команды для изменения данных

Чтобы изменить данные во всей строке или в некоторых ячейках, необходимо использовать команду UpdateSQL. Выполнить такую команду нужно только с определенным условием. Необходимо точно указать в какую строку по номеру необходимо внести изменения. У команды UpdateSQL несложный синтаксис. Чтобы правильно ее использовать, нужно указать, какую информацию, в какой колонке и какой записи необходимо изменить. После этого необходимо будет составить скрипт и выполнить его. Давайте рассмотрим один пример. Предположим, вам необходимо изменить дату рождения Джона Джонсона, который внесен в таблицу сотрудников под номером 10.

Update Person Set P_BirthDay = ‘10/10/1988’ where P_ID=10

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

Команды для использования встроенных функций и процедур

При помощи языка SQL можно не только построить запросы, но и создать встроенные механизмы для работы с данными. Возникают ситуации, когда необходимо использовать в теле одного запроса написанную ранее выборку. Если посудить логически, необходимо скопировать текст выборки и вставить его в нужное место. Можно обойтись и более простым решением. Давайте рассмотрим пример, когда на рабочем интерфейсе присутствует кнопка для печати отчета, например, в Excel. Данная операция будет осуществляться по мере необходимости. Для этой цели можно использовать встроенные хранимые процедуры. В данном случае команды SQL запросов заключаются в процедуру и вызываются при помощи команды SQL Exec. Предположим, что была создана специальная процедура для вывода даты рождения сотрудников с описанной ранее таблицы Person. В этом случае отсутствует необходимость писать весь запрос. Чтобы получить необходимую информацию, достаточно выполнить команду Exec и передать параметры, необходимые для выборки. В качестве примера можно рассмотреть механизм создания процедуры следующего характера:

CREATEPROCEDUREPrintPerson

@DB smalldatetime

@DE smalldatetime

SELECT * from Person

FROM HumanResources.vEmployeeDepartmentHistory

WHERE P_BerthDay>= @DB and P_BerthDay<= @DE

ANDEndDateISNULL;

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

Целостность информации. Триггеры

Некоторые команды MS SQL позволяют не только организовать манипуляции с данными, но и обеспечивают их целостность. Для этой цели используются специальные системные конструкции, которые создаются самими программистами. Это так называемые триггеры, которые обеспечивают контроль данных. В этом случае для организации проверки условий применяются стандартные команды SQL-запросов. В триггерах имеется возможность создания множества условий и ограничений для работы с информацией, которые могут осуществлять управление не только доступом к информации, но и запрещать удаление, изменение и вставку информации. Типы SQL-команд, которые могут быть использованы в триггере, серьезно ограничены. Давайте рассмотрим их на примере. Если приступить к описанию механизма создания триггера, то типы команд SQL в данном случае используются такие же, как и при создании процедуры. Ниже будет приведен алгоритм. Прежде всего, необходимо описать служебную команду для создания триггеров:

CREATE TRIGGER Person_Insert

Затем необходимо указать, для какой таблицы он применяется

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

declare @ID int. @Datesmalldatetime @nIDint. @nDatesmalldatetime

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

DEclare cursor C1 for select P_ID, P_BerthDay from Inserted

DEclare cursor C2 for select P_ID, P_BerthDay from deleted

if @ID = @nID and @nDate = ’01/09/2016′

sMasseges ‘Выполнить операцию невозможно. Не подходит дата’

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

— SQL SERVER: altertablePERSONdisabletriggerall(для отключения триггеров, которые были созданы для данной таблицы);

— altertablePERSONenabletriggerall (для их включения триггеров)

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

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

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

Классификация команд языка SQL

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

    Команды для построения запросов.

    Команды встроенных процедур и функций.

    Команды триггеров и системных таблиц.

    Наборы комбинаций для работы с датой и строковыми переменными.

    Команды для работы с данными и таблицами.

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

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

Сферу использования SQL можно рассматривать с точки зрения офисного программного обеспечения, а именно MicrosoftAccess. Этот язык, а точнее, его разновидность — MySQL, позволяет администрировать базы данных в сети Internet. Даже среда разработки Oracle использует в основе своих запросов команды SQL.

Использование SQL в MicrosoftAccess

Одним из самых простых примеров использования языка для программирования баз данных считается пакет программного обеспечения MicrosoftOffice. Изучение этого программного продукта предусмотрено школьным курсом информатики, а в одиннадцатом классе рассматривается система управления базой данных MicrosoftAccess.

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

Рассмотрим конкретный пример:

SELECT Pe_SurName

WHERE Pe_Name = "Мэри";

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

Хоть и использование SQL в Access ограничено, иногда такие простые запросы очень сильно могут упростить выполнение поставленного задания.

Использование команд SQL в Oracle

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

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

Такая разница позволяет во много раз ускорить работу с данными, но, в противовес, ведет к нерациональному использованию памяти, в некоторых отдельных случаях. Структура Oracle в основном построена на временных таблицах и их использовании. Как пример: команды SQL в данной системе строятся по аналогии со стандартами самого языка SQL, хотя незначительно и отличаются от него.

SELECTCONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname), CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))), CONCAT(‘принятнаработу ‘, acceptdate)) FROM employees WHERE acceptdate > to_date(‘01.01.80′,’dd.mm.yyyy’);

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

Использование SQL в сети Internet

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

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

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

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

$link = mysqli_connect("localhost", "root", "", "tester");

if (!$link) die("Error");

$query = "create table users(

login VARCHAR(20),

password VARCHAR(20)

if (mysqli_query($link, $query)) echo "Таблица создана.";

elseecho "Таблица не создана: ".mysqli_error();

mysqli_close($link);

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

Синтаксис изменен под Вэб, но в основу положены команды MicrosoftSQLServer.

Построение запросов MicrosoftSQLServer

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

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

Select * from Person

Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’

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

SelectP_Name - имя

P_SurName - фамилия

P_Patronimic - отчество

Where P_BerthDay >= ‘01/01/2016’ and P_BerthDay<= ‘03/01/2016’

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

Основные команды SQL для изменения данных

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

    Insert (пер. Вставить).

    Update (пер. Обновление).

    Delete (пер. Удалить).

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

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

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

Команда Insert

Для вставки данных в таблицу используется самая безопасная команда — Insert. Неправильно вставленные данные всегда можно удалить и внести в базу данных заново.

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

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

Insert into person

Select ‘Григорьев’,’Виталий’,’Петрович’,’01/01/1988’

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

Insertintoperson(P_Name, P_SurName ,P_BerthDay)

Values (‘Дэвид’, ‘Гук’,’02/11/1986’)

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

Команда для изменения данных

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

Команда Update SQL имеет несложный синтаксис. Для правильного использования необходимо указать, какие данные, в какой колонке и в какой записи стоит изменить. Далее составить скрипт и выполнить его. Рассмотрим пример. Нужно изменить дату рождения Дэвида Гука, который внесен в таблицу сотрудников под номером 5.

Set P_BerthDay = ’02/10/1986’ where P_ID = 5

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

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

Команды для использования встроенных процедур и функций

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

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

Предположим, что была создана процедура для вывода даты рождения сотрудников с ранее описанной таблицы Person. В таком случае нет необходимости писать весь запрос. Для получения необходимой информации достаточно выполнить команду Exec [имя процедуры] и передать необходимые для выборки параметры. Как пример можно рассмотреть механизм создания процедуры такого характера:

CREATEPROCEDUREPrintPerson

@DB smalldatetime

@DE smalldatetime

SELECT * from Person

FROM HumanResources.vEmployeeDepartmentHistory

WHERE P_BerthDay >= @DB and P_BerthDay <= @DE

ANDEndDateISNULL;

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

Организация целостности данных. Триггеры

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

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

Типы команд SQL, которые можно использовать в триггере, не ограничены. Рассмотрим на примере.

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

Первым делом нужно описать служебную команду для создания триггеров:

Указываем, для какой операции с данными (в нашем случае это операция изменения данных).

Следующим шагом будет указание таблиц и переменных:

declare @ID int. @Date smalldatetime @nID int. @nDatesmalldatetime

DEclare cursor C1 for select P_ID, P_BerthDay from Inserted

DEclare cursor C2 for select P_ID, P_BerthDay from deleted

Задаем шаги выбора данных. После, в теле курсоров прописываем условие и реакцию на него:

if @ID = @nID and @nDate = "01/01/2016"

sMasseges "Выполнить операцию невозможно. Дата не подходит"

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

altertablePERSONdisabletriggerall - для отключения всех триггеров, созданных для данной таблицы, и, соответственно, altertablePERSONenabletriggerall - для их включения.

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

Вывод

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

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

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

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

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

Вот стандартные условные обозначения (они называются BNF-условиями):

  • Ключевые слова набираются в верхнем регистре.
  • SQL и другие специальные условия заключаются в угловые скобки и набираются курсивом.(<и >)
  • Необязательные части команд находятся в квадратных скобках ([ и ]).
  • Многоточие (....) указывает на то, что предшествующая часть команды может повторяться любое число раз.
  • Вертикальная полоса (|) означает: то, что ей предшествует, может быть заменено на то, что следует за ней.
  • Фигурные Скобки ({ и }) указывают: всё, что внутри них, должно быть расценено как целое, для оценки других символов (например, вертикальных полос или эллипсов).
  • Двойное двоеточие и знак равенства (:: =) означают: то, что следует за ними, является определением того, что им предшествует.

    Кроме того, мы будем использовать следующую последовательность (.,..) чтобы указывать, что предшествующее этому может повторяться любое число раз, с индивидуальными событиями, отделяемыми запятыми. Атрибуты, которые не являются частью официального стандарта, будут отмечены в описании как (*нестандартные*).

    ОБРАТИТЕ ВНИМАНИЕ: Терминология которую мы используем здесь - не является официальной терминологией ANSI. Официальная терминология может вас сильно запутать, поэтому мы несколько ее упростили.
    По этой причине мы иногда используем условия, отличающиеся от ANSI, или используем те же самые условия, но несколько по-иному. Например, наше определение Отличается от используемой в ANSI комбинации стандартного определения С .

    ЭЛЕМЕНТЫ SQL

    Этот раздел определяет элементы команд SQL.

    Они разделены на две категории: Основные элементы языка и Функциональные элементы языка .

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

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

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

    Функциональные элементы могут определяться в терминах друг друга или даже в собственных терминах. Например, предикат Наш последний и наиболее сложный случай, содержит предикат Внутри собственного определения. Это потому, что предикат Использующий AND или OR, может содержать любое число предикатов Которые могут работать автономно. Мы представляли вам предикат В отдельной секции в этом приложении из-за разнообразия и сложности этого функционального элемента языка. Он будет постоянно присутствовать при обсуждении других функциональных частей команд.

    БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА

    ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ | | -- пробел определяемый реализацией конец символьной строки [{ | не должен быть длиннее 18-ти символов. ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ - % любое из следующих: , () <> . : = + " - | <> >= <= или [любой печатаемый текст в одинарных кавычках] Примечание: В , две последовательных одинарных кавычки (" ") интерпретируются как одна ("). окончание/терминатор, зависящее от главного языка. (*только вложенный SQL*)

    ФУНКЦИОНАЛЬНЫЕ ЭЛЕМЕНТЫ

    Следующая таблица показывает функциональные элементы команд SQL и их определения: ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ Предложение SELECT Заключённое в круглые скобки предложение SELECT внутри другого условия, которое фактически оценивается отдельно для каждой строки-кандидата другого предложения. | | любое из следующих: + - / * | | | | | ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ USER | [
    | .] | | NOT NULL | UNIQUE | CHECK () | PRIMARY KEY | REFERENCES
    [()] UNIQUE () | CHECK () | PRIMARY KEY () | FOREIGN KEY () | REFERENCES
    [()] ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ = Допустимый тип данных (См. в Приложении B описание типов, обеспечиваемых ANSI, или в Приложении C - другие общие типы.) Значение зависит от (См. Приложение B .) (*нестандартный*) .,.. .,..
    {
    [] } .,..

    ПРЕДИКАТЫ

    Здесь определён список различных типов предиката Описанных на следующих страницах:

    ::=

    { | | | | | | } BETWEEN
    AND

    - A BETWEEN B AND C имеет такое же значение, что и - (A>= B AND <= C). , для которого A NOT BETWEEN B AND C, имеет такое же значение, что и NOT (BETWEEN B AND C).
    может быть выведено с помощью нестандартного запроса (*nonstandard*).

    Синтаксис

    IN |

    Список значений будет состоять из одного или более значений в круглых скобках с разделением запятыми, которые имеют сравнимый с тип данных. Если используется подзапрос , он должен содержать только одно выражение в предложении SELECT (возможно и больше, но это уже будет вне стандарта ANSI).
    Подзапрос фактически выполняется отдельно для каждой строки-кандидата основного запроса, и значения, которые он выведет, будут составлять список значений для этой строки. В любом случае предикат будет верен, если выражение представленное в списке значений , если не указан NOT.
    Фраза A NOT IN (B, C) является эквивалентом фразы NOT (A IN (B, C)).

    Синтаксис

    LIKE

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

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

    Если совпадение произошло, верен, если не был указан NOT. Фраза NOT LIKE "текст" - эквивалентна NOT (A LIKE "текст").

    Синтаксис

    IS NULL

    = IS NULL, если NULL значение представлено в этом столбце. Это сделает верным, если не указан NULL. Фраза IS NOT NULL, имеет тот же результат что и NOT ( IS NULL).

    Синтаксис



    :: = ANY | ALL | SOME

    Предложение SELECT подзапроса должно содержать одно, и только одно, выражение значения . Все значения, выведенные подзапросом , составляют набор результатов . сравнивается, используя оператор связи , с каждым членом набора результатов . Это сравнение оценивается следующим образом:

  • Если = ALL и каждый член набора результатов делает это сравнение верным, верен.
  • Если = ANY и имеется по крайней мере один член из набора результатов , который делает верным это сравнение, то является верным.
  • Если набор результатов пуст, то верен, если = ALL , и неверен а ином случае.
  • Если = SOME, эффект - тот же, что и для ANY.
  • Если неверен и не неверен, он неизвестен.

    Синтаксис:

    EXISTS ()

    Если подзапрос выводит одну или более строк вывода, верен; и неверен в ином случае.

    SQL КОМАНДЫ

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

    ИМЕЙТЕ ВВИДУ: команды, которые начинаются словами - EXEC SQL, а также команды или предложения, заканчивающиеся словом, могут использоваться только во вложенном SQL.

    BEGIN DECLARE SECTION (НАЧАТЬ РАЗДЕЛ ОБЪЯВЛЕНИЙ)

    Синтаксис

    EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION

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

    CLOSE CURSOR (ЗАКРЫТЬ КУРСОР)

    Синтаксис

    EXEC SQL CLOSE CURSOR ;

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

    COMMIT (WORK) (ПОДТВЕРДИТЬ (ТРАНЗАКЦИИ))

    Синтаксис

    Эта команда оставляет неизменными все изменения, сделанных в базе данных, до тех пор, пока начавшаяся транзакция не закончится и не начнется новая транзакция.

    CREATE INDEX (СОЗДАТЬ ИНДЕКС)

    (*NONSTANDARD*) (НЕСТАНДАРТНАЯ)

    Синтаксис

    CREATE INDEX
    ON

  • ();

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

    CREATE SYNONYM (*NONSTANDARD*)
    (СОЗДАТЬ СИНОНИМ) (*НЕСТАНДАРТНЫЙ*)

    Синтаксис

    CREATE IPUBLICl SYNONYM FOR
    .

    ;

    Эта команда создает альтернативное (синоним) имя таблицы. Синоним принадлежит его создателю, а сама таблица - обычно другому пользователю. Используя синоним, его владелец может не ссылаться на таблицу её полным (с включением имени владельца) именем. Если PUBLIC указан, синоним принадлежит каталогу SYSTEM и, следовательно, доступен всем пользователям.

    CREATE TABLE (СОЗДАТЬ ТАБЛИЦУ)

    Синтаксис

    CREATE TABLE


    ({ []
    [ . . .]
    []} . , . . . , . .);

    Команда создает таблицу в базе данных. Эта таблица будет принадлежать её создателю. Столбцы будут рассматриваться в поимённом порядке.
    определяет тип данных, которые столбец будет содержать. Стандарт описывается в Приложении B ; все прочие используемые типы данных обсуждались в Приложении C . Значение размера зависит от типа данных .
    и налагают ограничения на значения, которые могут быть введены в столбце.
    определяет значение (по умолчанию), которое будет вставлено автоматически, если никакого другого значения не указано для этой строки. (См. в Главе 17 подробности о самой команде CREATE TABLE и в Главах И - подробности об ограничениях и о ).

    CREATE VIEW (СОЗДАТЬ ПРОСМОТР)

    Синтаксис

    CREATE VIEW


    AS
    ;

    Просмотр обрабатывается как любая таблица в командах SQL. Когда команда ссылается на имя таблицы

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

    DECLARE CURSOR (ОБЪЯВИТЬ КУРСОР)

    Синтаксис

    EXEC SQL DECLARE CURSOR FOR

    Эта команда связывает имя курсора с запросом . Когда курсор открыт (см. OPEN CURSOR), запрос выполняется, и его результат может быть выбран (командой FETCH) для вывода. Если курсор - модифицируемый, таблица, на которую ссылается запрос , может получить изменение содержания с помощью операции модификации в курсоре (См. в Главе 25 о модифицируемых курсорах).

    DELETE (УДАЛИТЬ)

    Синтаксис

    DELETE FROM


    { ; }
    | WHERE CURRENT OF

    Если предложение WHERE отсутствует, ВСЕ строки таблицы удаляются. Если предложение WHERE использует предикат Строки, которые удовлетворяют условию этого предиката Удаляются. Если предложение WHERE имеет аргумент CURRENT OF (ТЕКУЩИЙ) в имени курсора , строка из таблицы

    , на которую в данный момент имеется ссылка с помощью имени курсора , будет удалена. Форма WHERE CURRENT может использоваться только во вложенном SQL и только с модифицируемыми курсорами.

    EXEC SQL (ВЫПОЛНИТЬ SQL)

    Синтаксис

    EXEC SQL

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

    FETCH (ВЫБОРКА/ИЗВЛЕЧЕНИЕ)

    Синтаксис

    EXEC SQL FETCH
    INTO

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

    GRANT (ПЕРЕДАТЬ ПРАВА)

    Синтаксис (стандартный)

    GRANT ALL
    | {SELECT
    | INSERT
    | DELETE
    | UPDATE [()]
    | REFERENCES [()l } . , . .
    ON

    . , . .
    TO PUBLIC | . , . .
    ;

    Аргумент ALL (ВСЕ), с или без PRIVILEGES (ПРИВИЛЕГИИ), включает каждую привилегию в список привилегий. PUBLIC (ОБЩИЙ) включает всех существующих пользователей и всех созданных в будущем. Эта команда даёт возможность передать права для выполнения действий в таблице с указанным именем. REFERENCES позволяет дать права на использование столбцов в списке столбцов как родительский ключ для внешнего ключа. Другие привилегии состоят из права выполнять команды, для которых привилегии указаны их именами в таблице. UPDATE подобен REFERENCES и может накладывать ограничения на определенные столбцы. GRANT OPTION даёт возможность передавать эти привилегии другим пользователям.

    Синтаксис (нестандартный)

    GRANT DBA
    | RESOURCE
    | CONNECT ... .
    TO . , . .
    | . , . . }
    FROM { PUBLIC
    | . , . . };

    Привилегия Может быть любой из указанных в команде GRANT. Пользователь, дающий REVOKE, должен иметь те же привилегии, что и пользователь, который давал GRANT. Предложение ON может быть использовано, если применяется привилегия специального типа для особого объекта.

    ROLLBACK (WORK)
    (ОТКАТ) (ТРАНЗАКЦИИ)

    Синтаксис

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

    SELECT (ВЫБОР)

    Синтаксис

    SELECT { IDISTINCT | ALL] . , . . } / *
    FROM

    . , . .

    . , . . ];

    Это предложение организует запрос и выводит значения из базы данных (см. Главы 3 - 14).

    Применяются следующие правила:

  • Если ни ALL, ни DISTINCT не указаны, принимается ALL.
  • Выражение состоит из , агрегатной функции , нестандартной функции , постоянной или любой их комбинации с операторами в допустимых выражениях.
  • Таблица, на которую ссылаются,
  • , состоит из имени таблицы, включая префикс владельца, если текущий пользователь не владелец, или синоним (нестандартно) таблицы. Таблица может быть или базовой таблицей, или просмотром. В принципе псевдоним может указать, какой синонимом используется для таблицы, только на время текущей команды. Имя таблицы или синоним должны отделяться от псевдонима одним или более разделителями .
  • Если используется GROUP BY, все столбцы , используемые в предложении SELECT, должны будут использоваться как группа столбцов , если они не содержатся в агрегатной функции . Вся группа столбцов должна быть представлена среди выражений , указанных в предложении SELECT. Для каждой отдельной комбинации значений группы столбцов будет иметься одна, и только одна, строка вывода.
  • Если HAVING используется, предикат Применяется к каждой строке, произведённой предложением GROUP BY, и те строки, которые сделают этот предикат верным, будут выведены.
  • Если ORDER BY используется, вывод имеет определенную последовательность. Каждый идентификатор столбца ссылается на указанное в предложении SELECT. Если это является указанным столбцом , может быть таким же, как . Иначе может быть положительным целым числом, указывающим место, где находится в последовательности предложения SELECT. Вывод будет сформирован так, чтобы помещать значения, содержащиеся в , в порядке возрастания, если DESC не указан. Имя идентификатора столбца , стоящее первым в предложении ORDER BY, будет предшествовать позже стоящим именам в определении последовательности вывода.

    Предложение SELECT оценивает каждую строку-кандидат таблицы, в которой строки показаны независимо.

    Строка-кандидат определяется следующим образом:

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

    Каждая строка-кандидат производит значения, которые делают предикат В предложении WHERE верным, неверным, или неизвестным. Если GROUP BY не используется, каждое применяется, в свою очередь, для каждой строки-кандидата, чьё значение делает предикат верным, и результатом этой операции является вывод.
    Если GROUP BY используется, строки-кандидаты комбинируются, используя агрегатные функции. Если никакого предиката Не установлено, каждое выражение применяется к каждой строке-кандидату или к каждой группе. Если указан DISTINCT, дубликаты (двойники) строк будут удалены из вывода.

    UNION (ОБЪЕДИНЕНИЕ)

    Синтаксис

    {UNION } . . . ;

    Вывод двух или более запросов будет объединён. Каждый запрос должен содержать один и тот же номер в предложении SELECT и в таком порядке, что 1.. n каждого совместим по типу данных и размеру с 1.. n всех других.

    UPDATE (МОДИФИКАЦИЯ)

    Синтаксис

    UPDATE


    SET { = } . , . .
    {[ WHERE ]; }
    | {
    ]}

    UPDATE изменяет значения в каждом столбце на соответствующее значение . Если предложение WHERE использует предикат То только строки таблиц, чьи текущие значения делают этот предикат Верным, могут быть изменены. Если WHERE использует предложение CURRENT OF, то значения в строке таблицы

    , находящиеся в курсоре , меняются. WHERE CURRENT OF пригодно для использования только во вложенном SQL, и только с модифицируемыми курсорами. При отсутствии предложения WHERE, все строки меняются.

    WHENEVER (ВСЯКИЙ РАЗ КАК)

    Синтаксис

    EXEC SQL WHENEVER
    :: = SQLERROR | NOT FOUND | SQLWARNING
    (последнее - нестандартное)
    :: = CONTINUE | GOTO | GOTO
    :: = зависит от главного языка

    3.1 Общие положения

    Изложенные выше механизмы РМД легли в основу языков манипулирования данными. Заметим, что крайне редко РА или РИ принимаются в качестве полной основы какого-либо языка РБД. Обычно язык основывается на некоторой смеси алгебраических и логических конструкций.

    Реализация концепции операций, ориентированных на табличное представление данных, позволило создать компактный язык с небольшим набором предложений – SQL. Этот язык может использоваться как интерактивный для выполнения запросов и как встроенный для построения прикладных программ.

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

    1) команды определения данных (Data Definition Commands), которые служат для создания, изменения, удаления таблиц и индексов, а также для определения схемы БД;

    2) команды манипулирования данными (Data Manipulation Commands) для изменения данных (редактирование существующих данных, добавление и удаление записей);

    3) команды выборки данных (Data Query Commands) для выборки существующих данных;

    4) команды управления транзакциями (Transaction Control Commands) для сохранения или отката изменений в БД;

    5) команды управления данными (Data Control Commands) для проверки целостности БД, предоставления и отмены привилегий на доступ к данным.

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

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

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

    – звездочка (*) означает "все" и употребляется в обычном для программирования смысле, т.е. "все случаи, удовлетворяющие определению";

    – квадратные скобки () означают, что конструкции, заключенные в эти скобки, являются необязательными, т.е. могут быть опущены;

    – фигурные скобки ({}) означают, что конструкции, заключенные в эти скобки, должны рассматриваться как целые синтаксические единицы; эти скобки позволяют уточнить порядок разбора синтаксических конструкций, заменяя обычные скобки, используемые в синтаксисе SQL;

    – многоточие (...) указывает на то, что непосредственно предшествующая ему синтаксическая единица факультативно может повторяться один или более раз;

    – прямая черта (|) означает наличие выбора из двух или более возможностей; например, конструкция [термин_1 | термин_2] означает, что можно выбрать один из двух терминов (или термин_1, или термин_2); при этом термин_1 выбирается по умолчанию; отсутствие всей этой конструкции будет восприниматься как выбор термин_1;

    – точка с запятой (;) завершающий элемент предложений SQL; этот знак должен присутсвовать после каждой команды;

    – запятая (,) используется для разделения элементов списков;

    – пробелы () могут вводиться для повышения наглядности между любыми синтаксическими конструкциями предложений SQL;

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

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

    © 2024 | Все для радиолюбителя