Основные команды sql. Механизм доступа к данным. Язык структурированных запросов SQL. История и стандарты SQL. Обработка команд SQL сервером Oracle Наличие каких команд обязательно в 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 похожи не только по синтаксису, но и по набору служебных слов. Разница заключается только в структурировании и вызове запроса. Можно рассмотреть для примера запрос для создания новой таблицы. Именно этому прежде всего и учат детей на уроках информатики.
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=’01/01/2016’ andP_BirthDay= @DB and P_BerthDay
SET
{
|
}
.,.
.<
COLUMN
name>
=
<
VALUE
expresslon>
[
WHERE
<
predlcate>
|
WHERE
CURRENT
OF
<
cursor name>
(*
только для вложения*
)
]
;
UPDATE
peers SET
zone=
"voip"
; # обновить все строки в столбце zone таблицы peers
UPDATE
stat SET
whp=
"13x13x13"
WHERE
id =
1
;
UPDATE
countries SET
nm_ukr=
(
SELECT
del_countries.
ukrainian FROM
del_countries WHERE
countries.
nm_en=
del_countries.
english
)
;
WordPress использование, настройка : в таблице wp_posts удалить все вхождения строки
[ WHERE
| WHERE CURRENT OF (*только для вложения*) ];
DELETE FROM Peers; // удалит все содержимое таблицы Peers.
DELETE FROM FinR where day Like "20120415%"; //
DELETE FROM prices WHERE ratesheet_id NOT IN (SELECT id FROM ratesheets);
ALTER
Изменение значения по умолчанию для колонки
. Чтобы установить новое значение по умолчанию для колонки, используйте команду вида: ALTER
TABLE
products ALTER
COLUMN
price SET
DEFAULT
7.77
;
OR
ALTER
TABLE
nases ALTER
COLUMN
zone SET
DEFAULT
"voip"
;
Заметим, что выполнение данной команды не влияет на уже существующие строки в таблице, команда изменят значение по умолчанию только для будущих команд INSERT. Чтобы удалить любое значение по умолчанию, используйте
ALTER
TABLE
products ALTER
COLUMN
price DROP
DEFAULT
;
Команда выполняет тоже самое, что и установка значения по умолчанию в null. Поскольку при удалении значения по умолчанию, оно неявно устанавливается в null, в случае удаления существующего значения по умолчанию, сообщений об ошибках, не будет.
Функция как значение по умолчанию для колонки
. В этом случае столбец timetracking имеет тип данных timestamp и значит для нее значением по умолчанию можно задать встроенную функцию now() т.е. при добавлении новой строки в столбец будет записана текущая дата и время ALTER TABLE timetracking ALTER COLUMN date_wd SET DEFAULT now();
Добавление ограничения
. Чтобы добавить какое-либо ограничение, используется табличный синтаксис определения этого ограничения. Например: ALTER TABLE products ADD CHECK (name "");
ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;
Чтобы добавить ограничение не-null, которое нельзя записать как ограничение на таблицу, используйте синтаксис:
ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;
Указанное ограничение будет задействовано немедленно, так что данные в таблице перед добавлением ограничения должны ему удовлетворять.
Функции агрегирования
В стандартном SQL существует 5 агрегатных функций:
COUNT - функция возвращает количество строк, которые соответствует определенным критериям.,
SUM - возвращает сумму (общую) значений в определённом столбце. Строки столбцов со значениями NULL игнорируются функцией SUM.
AVG - среднее значение в столбце,
Функции агрегирования используются как имена полей в предложении запроса SELECT, но с одним исключением: имена полей применяются как аргументы. Функции SUM и AVG могут работать только с цифровыми полями. Функции COUNT, MAX, MIN работают как с цифровыми так и с символьными полями. При применении к символьным полям функции MAX и MIN могут работают с ASCII эквивалентами символов.
SELECT Count(Books.ID) AS [Количество Книг] FROM Books;
Использование CROUP BY позволяет применять агрегатные функции к группам записей.
SELECT Count(Books.ID) AS [Количество Книг] FROM Books GROUP BY [Писатель];
Представления (VIEW)
Представление (VIEW) - объект данных который не содержит никаких данных его владельца. Это - тип таблицы, чье содержание выбирается из других таблиц с помощью выполнения запроса.
Базовые таблицы - это таблицы, которые содержат данные. Однако имеется другой вид таблиц: - представления (VIEW). Представления - это таблицы чье содержание выбирается или получается из других таблиц. Они работают в запросах и операторах DML точно также как и основные таблицы, но не содержат никаких собственных данных. Представления - подобны окнам, через которые вы просматриваете информацию, которая фактически хранится в базовой таблице.
Команда CREATE VIEW
. Представление создается командой CREATE VIEW. Она состоит из слов CREATE VIEW (СОЗДАТЬ ПРЕДСТАВЛЕНИЕ), имени представления которое нужно создать, слова AS (КАК), и далее запроса. Создадим представление Londonstaff: CREATE VIEW Londonstaff
AS SELECT *
FROM Salespeople
WHERE city = "London";
Это представление используется точно так же как и любая другая таблица. Она может быть запрошена, модифицирована, вставлена в, удалена из, и соединена с, другими таблицами и представлениями. Запрос представления.
Выделяют следующие группы команд SQL
:
Команды языка определения данных
Команды языка определения данных
DDL
(Data Definition Language
, язык определения данных) — это подмножество SQL
, используемое для определения и модификации различных структур данных.
К данной группе относятся команды предназначенные для создания, изменения и удаления различных объектов базы данных. Команды CREATE
(создание), ALTER
(модификация) и DROP
(удаление) имеют большинство типов объектов баз данных (таблиц, представлений, процедур, триггеров, табличных областей, пользователей и др.). Т.е. существует множество команд DDL
, например, CREATE TABLE
, CREATE VIEW
, CREATE PROCEDURE
, CREATE TRIGGER
, CREATE USER
, CREATE ROLE
и т.д.
Некоторым кажется, что применение DDL
является прерогативой администраторов базы данных, а операторы DML
должны писать разработчики, но эти два языка не так-то просто разделить. Сложно организовать аффективный доступ к данным и их обработку, не понимая, какие структуры доступны и как они связаны. Также сложно проектировать соответствующие структуры, не зная, как они будут обрабатываться.
Команды языка управления данными
С помощью команд языка управления данными (DCL (Data Control Language)) можно управлять доступом пользователей к базе данных. Операторы управления данными включают в себя применяемые для предоставления и отмены полномочий команды GRANT
и REVOKE
, а также команду SET ROLE
, которая разрешает или запрещает роли для текущего сеанса.
Команды языка управления транзакциями
Команды языка управления транзакциями
(TCL (Тгаnsасtiоn Соntrol Language)) команды позволяют определить исход транзакции.
Команды управления транзакциями управляют изменениями в базе данных, которые осуществляются командами манипулирования данными. Транзакция
(или логическая единица работы) – неделимая с точки зрения воздействия на базу данных последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации) такая, что либо результаты всех операторов, входящих в транзакцию, отображаются в БД
, либо воздействие всех этих операторов полностью отсутствует. COMMIT
— заканчивает («подтверждает») текущую транзакцию и делает постоянными (сохраняет в базе данных) изменения, осуществленные этой транзакцией. Также стирает точки сохранения этой транзакции и освобождает ее блокировки. Можно также использовать эту команду для того, чтобы вручную подтвердить сомнительную распределенную транзакцию. ROLLBACK
— выполняет откат транзакции, т.е. отменяет все изменения, сделанные в текущей транзакции. Можно также использовать эту команду для того, чтобы вручную отменить работу, проделанную сомнительной распределенной транзакцией.
Понятие транзакции имеет непосредственную связь с понятием целостности базы данных. Очень часто база данных может обладать такими ограничениями целостности, которые просто невозможно не нарушить, выполняя только один оператор изменения БД
. Например, невозможно принять сотрудника в отдел, название и код которого отсутствует в базе данных.
В системах с развитыми средствами ограничения и контроля целостности каждая транзакция начинается при целостном состоянии базы данных и должна оставить это состояние целостными после своего завершения. Несоблюдение этого условия приводит к тому, что вместо фиксации результатов транзакции происходит ее откат (т.е. вместо оператора COMMIT
выполняется оператор ROLLBACK
), и база данных остается в таком состоянии, в котором находилась к моменту начала транзакции, т.е. в целостном состоянии.
В связи со свойством сохранения целостности БД
транзакции являются подходящими единицами изолированности пользователей, т.е., если с каждым сеансом работы с базой данных ассоциируется транзакция, то каждый пользователь начинает работу с согласованным состоянием базы данных, т.е. с таким состоянием, в котором база данных могла бы находиться, даже если бы пользователь работал с ней в одиночку.
Команды языка манипулирования данными DML (Data Manipulation Language) позволяют пользователю перемещать данные в базу данных и из нее:
INSERT
- осуществляет вставку строк в таблицу.
DELETE
- осуществляет удаление строк из таблицы.
UPDATE
- осуществляет модификацию данных в таблице.
SELECT
- осуществляет выборку данных из таблиц по запросу.
Каждый, кто работает с SQL
в среде Oracle
, должен вооружиться книгами: справочником по языку SQL, таким как «Oracle SQL: The Essential Reference? (O’Reilly), руководством по оптимизации производительности, например «Oracle SQL Tuning Pocket Reference» (O’Reilly).
В этом приложении содержатся сокращённые описания различных команд SQL. Цель
состоит в том, чтобы дать вам быструю и точную справку и определение SQL.
Первый раздел этого приложения определяет элементы, используемые для создания команд
SQL; второй - подробности синтаксиса и предложения с кратким описанием самих команд.
Вот стандартные условные обозначения (они называются BNF-условиями):
Ключевые слова набираются в верхнем регистре.
SQL и другие специальные условия заключаются в угловые скобки и набираются
курсивом.()
Необязательные части команд находятся в квадратных скобках ([ и ]).
Многоточие (....) указывает на то, что предшествующая часть команды может повторяться любое число раз.
Вертикальная полоса (|) означает: то, что ей предшествует, может быть заменено на то, что следует за ней.
Фигурные Скобки ({ и }) указывают: всё, что внутри них, должно быть расценено как целое, для оценки других символов (например, вертикальных полос или эллипсов).
Двойное двоеточие и знак равенства (:: =) означают: то, что следует за ними,
является определением того, что им предшествует.
Кроме того, мы будем использовать следующую последовательность (.,..) чтобы указывать, что предшествующее этому может повторяться любое число раз, с
индивидуальными событиями, отделяемыми запятыми. Атрибуты, которые не являются частью официального стандарта, будут отмечены в описании как (*нестандартные*).
ОБРАТИТЕ ВНИМАНИЕ: Терминология которую мы используем здесь - не является официальной
терминологией ANSI. Официальная терминология может вас сильно запутать, поэтому мы несколько ее упростили.
По этой причине мы иногда используем условия, отличающиеся от ANSI, или используем те же самые условия, но несколько по-иному. Например, наше
определение Отличается от используемой в ANSI комбинации стандартного определения С .
ЭЛЕМЕНТЫ SQL
Этот раздел определяет элементы команд SQL.
Они разделены на две категории:
Основные элементы языка
и Функциональные элементы языка
.
Основные элементы
- это создаваемые блоки языка; когда SQL исследует команду, то он сначала оценивает каждый символ в тексте команды в терминах
этих элементов. Разделитель отделяет одну часть команды от другой; всё, что находится между разделителями , обрабатывается как модуль.
Основываясь на этом разделении, SQL интерпретирует команду.
Функциональные элементы
- это разнообразные элементы, отличающиеся от ключевых слов, которые могут интерпретироваться как модули. Это части команды,
отделяемые с помощью разделителей , имеющие специальное значение в SQL. Некоторые из них являются специальными для определенных команд и
будут описаны вместе с этими командами позже в этом приложении.
Перечисленные здесь являются общими элементами для всех описываемых команд.
Функциональные элементы могут определяться в терминах друг друга или даже в собственных терминах. Например, предикат Наш последний и наиболее сложный
случай, содержит предикат Внутри собственного определения. Это потому, что предикат Использующий AND или OR, может содержать любое число предикатов Которые могут работать автономно. Мы представляли вам предикат В отдельной секции в этом приложении из-за разнообразия и сложности
этого функционального элемента языка. Он будет постоянно присутствовать при обсуждении других функциональных частей команд.
БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА
ЭЛЕМЕНТ ОПРЕДЕЛЕНИЕ
| |
--
пробел
определяемый реализацией конец символьной строки
[{ | = B AND
to_date(‘01.01.80′,’dd.mm.yyyy’);
Данный запрос вернет данные о сотрудниках, которые приняты на работу в определенный промежуток времени. Хоть структура запроса отличается, от выполнение команд SQL в этих системах похоже, за исключением мелких деталей.
Использование SQL в сети Internet
С появлением всемирной паутины, то есть интернета, сфера использования языка SQL расширяется. Как известно, в сети хранится масса информации, но она не хаотично расположена, а размещена на сайтах и серверах по определенным критериям.
За хранение информации в Интернете, как и в других местах, отвечают непосредственно базы данных, а сайты являются системами управления. Как правило, сайты и их программный код организованы на разных языках программирования, но в основе баз данных лежит одна из разновидностей SQL, а именно язык создания баз данных, ориентированный под веб-интерфейсы MySQL.
Синтаксис и основной набор команд этого языка полностью копируют привычный всем SQL, но с некоторыми своими дополнениями, которые и дают ему отличие от Microsoft tSQL Server.
Команды SQL полностью похожи не только по синтаксису, но и по стандартному набору служебных слов. Разница состоит только в вызове и структурировании запроса. Для примера можно рассмотреть запрос для создания новой таблицы, именно она является первым, чему учат детей в школах на информатике:
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= ‘01/01/2016’ and P_BerthDay= @DB and P_BerthDay