Sql основные операторы: Операторы SQL: типы, группы, структура
Содержание
#49 Язык SQL. Назначение и основные операторы языка SQL
#49 Язык SQL. Назначение и основные операторы языка SQL
Язык SQL, его структура, стандарты, история развития. Подмножество
языка DML: операторы SELECT, INSERT, UPDATE, DELETE.
Доступ к данным осуществляется в виде запросов, которые формулируются
на стандартном языке запросов. Сегодня для большинства СУБД таким
языком является SQL.
Появление и развития этого языка как средства описания доступа к базе
данных связано с созданием теории реляционных баз данных. Прообраз
языка SQL возник в 1970 году в рамках научно-исследовательского проекта
System/R (IBM). Ныне SQL —это стандарт интерфейса с реляционными СУБД.
SQL не является языком программирования в традиционном представлении.
На нем пишутся не программы, а запросы к базе данных. Поэтому SQL
—декларативный или непроцедурный язык. Это означает, что с его помощью
можно сформулировать, что необходимо получить, но нельзя указать, как
это следует сделать.
Первый международный стандарт языка SQL был принят в 1989 г. (SQL/89
или SQL1), в 1992 г. был принят стандарт языка SQL (SQL/92 или SQL2). В
1999 г. появился стандарт SQL3. В SQL3 введены новые типы данных, при
этом предоставляется возможность задания сложных структурированных
типов данных, которые в большей степени соответствуют объектной
ориентации. Появились стандарты на события и триггеры, которые раньше
не затрагивались в стандартах.
Язык SQL делится на подмножества.
) Язык определения данных (DDL — Data Definition Language)
предоставляет пользователям средства указания типа данных и их
структуры, а также средства задания ограничений для информации,
хранимой в базе данных.
Операторы –CREATE, ALTER, DROP.
) Язык манипулирования данными (DML — Data Manipulation Language)
позволяет вставлять, обновлять и извлекать информацию из базы данных.
Операторы –SELECT, INSERT, DELETE, UPDATE.
) Язык управления данными (DCL — Data Control Language) состоит из
управляющих операторов.
Операторы –GRANT, REVOKE.
) Язык управления транзакциями.
Операторы –COMMIT, ROLLBACK, SAVEPOINT.
Запрос на языке SQL состоит из одного или нескольких операторов,
следующих один за другим и разделенных точкой с запятой.
Каждый столбец в любой таблице хранит данные определенных типов.
Различают базовые типы данных —строки символов фиксированной длины —
CHAR(n), целые и вещественные числа — NUMERIC(n,m), DEC(n,m), INTEGER,
SMALLINT, FLOAT(n), REAL, DOUBLE PRECISION , и дополнительные типы
данных —строки символов переменной длины — VARCHAR(n), BIT
VARYING(n), денежные единицы, дату и время –DATE, TIMESTAMP,
INTERVAL, логические данные –BOOLEAN (два значения —»ИСТИНА» и «ЛОЖЬ»).
Подмножество языка DML: операторы SELECT, INSERT, UPDATE, DELETE.
Язык обработки данных DML позволяет добавлять (insert), изменять
(update), удалять (delete) и выбирать (select) информацию в базе
данных, т.е. предназначен для работы с информационным содержанием
базы данных. Операторы языка DML представляют собой SQL-команды,
позволяющие изменять и дополнять хранящуюся в базе данных информацию.
. Подмножество языка DDL: операторы CREATE, ALTER, DROP. Представления,
их значение; обновляемые представления.
Язык определения данных DDL представляет собой подмножество команд
языка SQL, предназначенное для создания и определения объектов базы
данных. Определения объектов, созданные с помощью команд DDL,
сохраняются в словаре базы данных.
Язык определения данных DDL обеспечивает:
— Создание объектов базы данных (CREATE)
— Удаление объектов базы данных (DROP)
— Изменение свойств объектов базы данных (ALTER)
Современные базы данных содержат различные типы объектов:
таблицы, индексы, представления, роли, синонимы, последовательности,
кластеры, триггеры, процедуры, функции, пакеты, пользователи, профили и
т.д.
Все эти объекты создаются, изменяются и удаляются с помощью операторов
DDL.
Представления, их значение
Представление –объект базы данных, позволяющий получить определенную
пользователем выборку данных из одной или нескольких таблиц. В отличие
от таблицы, представление не содержит никаких данных, а лишь запрос на
языке SQL, дающий возможность прочитать из базы данных необходимую
информацию и представить ее в табличной форме.
Пользователь может не знать, работает он с представлением или с
настоящей таблицей. Подобно таблицам, к представлениям можно применять
операторы insert, update, delete и select.
Важно понимать принципы использования представлений. Их применение
может оказаться необходимым в силу следующих причин:
) Представления обеспечивают дополнительный уровень безопасности базы
данных. Например, можно создать общую таблицу со сведениями обо всех
сотрудниках компании, но разрешить менеджерам компании получать
информацию только об их подчиненных.
) Представления позволяют скрыть от пользователей сложность структуры
хранимых данных.
) Представления позволяют использовать разумные названия отдельных
столбцов.
) Представления обеспечивают гибкость при изменении формата одной или
нескольких входящих в них таблиц.
Обновляемые представления
Если к представлению можно применить операторы обновления, то
представление является обновляемым (updateble), иначе оно является
читаемым (read-only).
Приведем критерии того, является ли представление обновляемым в SQL:
— оно базируется на одной таблице;
— оно должно включать первичный ключ таблицы;
— оно не должно включать полей, полученных в результате применения
функций агрегирования;
— оно не может содержать спецификации DISTINCT;
— оно не должно использовать GROUP BY или HAVING;
— оно не должно использовать подзапросы;
— оно может быть определено на другом представлении, но это
представление должно быть обновляемым;
— оно не может содержать константы, строки или выражения в списке
выбираемых выходных полей;
— для INSERT оно должно включать поля из таблицы, которые имеют
ограничения NOT NULL.
. Подмножество языка DCL: операторы GRANT, REVOKE. Системные
привилегии, привилегии на объекты, роли.
Предоставление пользователям необходимых полномочий и лишение
полномочий осуществляется с помощью операторов DCL: GRANT и REVOKE.
Оператор GRANT используется для открытия другой схеме доступа к
привилегии, а оператор REVOKE — для запрещения доступа, разрешенного
оператором GRANT. Оба оператора могут использоваться как для объектных,
так и для системных привилегий.
Для объектных привилегий синтаксис оператора GRANT таков:
GRANT привилегия ON объект TO обладатель_привилегий [WITH GRANT
OPTION];
где привилегия — это нужная привилегия,
объект — это объект, к которому разрешается доступ, а
обладатель_привилегий — пользователь, получающий привилегию.
Для системных привилегий синтаксис оператора GRANT таков:
GRANT привилегия TO обладатель_привилегий [WITH ADMIN OPTION];
где привилегия — это предоставляемая системная привилегия,
обладатель_привилегий — пользователь, получающий привилегию.
Для объектных привилегий синтаксис оператора REVOKE таков:
REVOKE привилегия ON объект FROM обладатель_привилегий [CASCADE
CONSTRAINTS];
где привилегия — это отменяемая привилегия,
объект — это объект, на который предоставлена привилегия,
обладатель_привилегий — пользователь, получающий эту привилегию.
Для системных привилегий синтаксис оператора REVOKE таков:
REVOKE привилегия FROM обладатель_привилегий;
где привилегия — это отменяемая системная привилегия,
обладатель_привилегий — пользователь, который более не будет ее иметь.
Примеры операторов GRANT, REVOKE
) GRANT select ON customers TO Adrian;
) GRANT select, insert ON orders TO Adrian, Diana;
) GRANT ALL ON customers TO Adrian;
) GRANT select ON orders TO PUBLIC;
) REVOKE insert ON orders FROM Adrian;
Роли
Для организаций, в которых работает множество пользователей, управление
привилегиями является достаточно сложной задачей. Для ее упрощения
можно использовать средство, называемое ролями. Роль (role) является
совокупностью привилегии, как объектных, так и системных.
Примеры ролей:
) CREATE ROLE spaceadmin IDENTIFIED BY password
GRANT create session, alter session, restricted session, alter
database,
create rollback segment, alter rollback segment, drop rollback
segment,
create tablespace, alter tablespace, drop
TO spaceadmin;
) CREATE ROLE backupadmin IDENTIFIED BY password
GRANT create session, alter session, restricted session, manage
tablespace, backup any
table TO backupadmin;
Объектные и системные привилегии
До сих пор предполагалось, что каждый пользователь базы данных может
обращаться к объектам всех других пользователей базы данных и к
информации, содержащейся в этих объектах. В действительности дело
обстоит далеко не так. Сервер баз данных предоставляет администратору
полный и систематический контроль над тем, что именно каждый отдельный
пользователь может читать, модифицировать, стирать или изменять. В
сочетании с использованием представлений данных можно полностью
контролировать доступ к информации всех пользователей.
Права доступа используются для того, чтобы позволить одному
пользователю работать с данными другого пользователя. После получения
необходимых
полномочий обладатель прав доступа может работать с объектами,
принадлежащими другому пользователю.
Существуют привилегии двух различных видов: объектные и системные.
Объектная привилегия (object privilege) разрешает выполнение
определенной операции над конкретным объектом (например, над таблицей —
SELECT, DELETE, INSERT, UPDATE, REFERENCES).
Системная привилегия (system privilege) разрешает выполнение операций
над целым классом объектов.
|
Оператор, предназначенный для выборки данных из таблиц – SELECT.
Подробно рассмотрим команду SELECT
Команда SELECT
Инструкция FROM
Инструкция FROM записывается в виде
FROM <имя таблицы>.,..
Список ссылок на таблицы не должен быть пустым. Пусть вычисление указанных табличных ссылок дает таблицы A,B,…,C. Декартово произведение отдельной таблицы T определяется как эквивалентное T.
(т.е. инструкция FROM может содержать ссылку на одну таблицу).
Инструкция WHERE
Инструкция WHERE записывается в виде
WHERE <предикат>
Пусть T – результат вычисления предыдущей инструкции FROM. Тогда результатом инструкции WHERE будет таблица, производная от T исключающая все строки, для которых результат вычисления <предиката> дает значение ЛОЖЬ. Если инструкция WHERE опущена, результатом будет просто T.
Инструкция GROUP BY
Инструкция GROUP BY записывается в виде
GROUP BY { <имя столбца> | <целое> }.,..
Список столбцов не должен быть пустым.
Инструкция HAVING
Инструкция HAVING записывается в виде
HAVING <предикат>.
Пусть G(сгруппированная таблица) – результат вычисления предыдущих инструкций FROM, WHERE(если использовалась) и инструкции GROUP BY(если она есть). Если инструкции GROUP BY нет, то в качестве G, берется результат выполнения предыдущей инструкции FROM или инструкции WHERE и рассматривается как сгруппированная таблица, состоящая не более чем из одной группы (т.е. подразумевается инструкция GROUP BY указывающая, что группируемых столбцов нет совсем).
Инструкция ORDER BY
Таблицы являются неупорядоченными множествами, и полученные из них данные необязательно представлены в какой — либо определенной последовательности. В SQL применяется команда ORDER BY, позволяющая упорядочить выходные данные запроса.
Она их упорядочивает в соответствии со значениями одного или нескольких выбранных столбцов. Множество столбцов упорядочиваются один внутри другого, как в случае применения GROUP BY, и можно задать возрастающую (ASC) или убывающую (DESC) последовательность сортировки для каждого из столбцов. По умолчанию принята возрастающая последовательность сортировки.
select test_lb.uniq_id, fam.f_val as family, nam.nam_val as nam, otc.otc_val as otc,;
street.s_val as street, test_lb.bldn as bld, test_lb.bldn_kor as bld_k,;
test_lb.
from test_lb, fam, nam, street, otc;
where nam.n_num=test_lb.name_ AND;
fam.f_num=test_lb.fam AND;
street.s_num=test_lb.street AND;
otc.otc_n=test_lb.sndname ;
ORDER BY Family;
INTO table test
Внутри уже проведенного упорядочения можно упорядочить таблицу и по другому столбцу
ORDER BY Family, Tel DESC ;
Во всех случаях столбцы, по которым выполняется сортировка, входят в число выбранных. Этому требованию стандарта удовлетворяет большинство систем.
ORDER BY может использоваться с GROUP BY для упорядочения групп. ORDER BY всегда выполняется последней.
select test_lb.uniq_id, fam.f_val as family, nam.nam_val as nam, otc.otc_val as otc,;
street.s_val as street, test_lb.bldn as bld, test_lb.bldn_kor as bld_k,;
test_lb.
from test_lb, fam, nam, street, otc;
where nam.n_num=test_lb.name_ AND;
fam.f_num=test_lb.fam AND;
street.s_num=test_lb.street AND;
otc.otc_n=test_lb.sndname ;
GROUP BY Street;
ORDER BY Street;
INTO table test
GROUP BY Street — группирует данные, но порядок групп в общем случае произвольный.
Добавление ORDER BY Street выстроит группы в алфавитном порядке.
Вместо имен столбцов для указания полей, по которым упорядочиваются выходные данные, можно использовать номера.(Номера столбцов в определении выходных данных, а не в исходных таблицах)
ORDER BY с NULL — значениями
Если в поле, которое используется для упорядочения выходных данных, существуют NULL-значения, то все они следуют в конце или предшествуют всем остальным значениям этого поля.
Инструкция ORDER BY записывается в виде
ORDER BY { <имя столбца> | <целое> }[ASC | DESC].,..
Пусть H(сгруппированная таблица) – результат вычисления предыдущих инструкций FROM, WHERE(если использовалась) и инструкции GROUP BY(если она есть) и инструкции HAVING. Результат инструкции ORDER BY — упорядоченная таблица, полученная из H путем перестановки строк так, чтобы значения в указанном столбце(столбцах) располагались в возрастающем(ASC) или убывающем(DESC) порядке.
Инструкция SELECT
записывается в виде
SELECT [ ALL I DISTINCT ] * | select-item-commalist
Пояснения:
1. Список элементов выборки select-item-commalist не должен быть пустым. Ниже элементы выборки рассматриваются подробно.
2. Если ни ключевое слово ALL, ни DISTINCT не указаны, то подразумевается ALL.
3. В данный момент подразумевается, что вычисления для инструкций FROM, WHERE, GROUP BY и HAVING уже проведены. Не имеет значения, какая из этих инструкций указана, а какая опущена: концептуальный результат их вычисления всегда является таблицей (возможно, «сгруппированной» таблицей – см. ниже), на которую мы будем ссылаться как на таблицу T1 (хотя концептуальный результат в действительности не именован).
4. Пусть Т2 будет таблицей, производной от таблицы TI путем вычисления указанного списка элементов по таблице T1 (см. ниже).
5. Пусть Т3 будет таблицей, производной от таблицы Т2 в результате исключения лишних повторяющихся строк из таблицы Т2, если указано ключевое слово DISTINCT, или таблицей, идентичной Т2, в противном случае.
6. Таблица ТЗ будет конечным результатом.
| |
Базовые операторы SQL — Tutlane
В SQL для выполнения таких операций, как создание, удаление, обновление, удаление, усечение, вставка и т. д., операций с базами данных, таблицами и хранимыми процедурами, нам необходимо следовать некоторым из предопределенных форматов синтаксиса. .
Ниже приведены некоторые основные операторы SQL для выполнения таких операций, как вставка, обновление, удаление, выбор в базах данных, таблицах и т. д., исходя из наших требований.
Выписка | Описание |
---|---|
СОЗДАТЬ БАЗУ ДАННЫХ | Этот оператор полезен для создания новой базы данных в sql. |
ИЗМЕНИТЬ БАЗУ ДАННЫХ | С помощью этого оператора мы можем изменить или модифицировать существующие данные базы данных. |
УДАЛЕНИЕ БАЗЫ ДАННЫХ | Этот оператор полезен для удаления существующей базы данных в sql. |
СОЗДАТЬ ТАБЛИЦУ | Этот оператор полезен для создания новой таблицы в sql. |
ИЗМЕНЕНИЕ ТАБЛИЦЫ | Этот оператор полезен для изменения существующих таблиц в sql.![]() |
УДАЛИТЬ ТАБЛИЦУ | Этот оператор полезен для удаления записей из таблиц в sql. |
ПОДЪЕМНЫЙ СТОЛ | Этот оператор полезен для удаления всей таблицы из базы данных sql. |
СОЗДАТЬ ИНДЕКС | Этот оператор полезен для создания индекса таблицы. |
ИНДЕКС ПАДЕНИЯ | Этот оператор полезен для удаления существующего индекса в таблице. |
ВСТАВИТЬ В | Этот оператор полезен для вставки данных в таблицы. |
ВЫБЕРИТЕ | Этот оператор полезен для получения данных из таблиц. |
ОБНОВЛЕНИЕ | Этот оператор полезен для обновления записей в таблице. |
СОЗДАТЬ ПРОЦЕДУРУ | Этот оператор полезен для создания новой хранимой процедуры в базе данных sql. |
ПРОЦЕДУРА ИЗМЕНЕНИЯ | Этот оператор полезен для изменения существующей хранимой процедуры в базе данных sql.![]() |
ПРОЦЕДУРА СБРОСА | Этот оператор полезен для удаления существующей хранимой процедуры в базе данных sql. |
SQL не учитывает регистр , означает CREATE DATABASE или создать базу данных оба утверждения одинаковы.
Ниже приведен синтаксис приведенных выше операторов sql для выполнения необходимых операций на сервере sql.
Синтаксис SQL CREATE DATABASE
Ниже приведен синтаксис создания новой базы данных на сервере sql.
CREATE DATABASE имя_базы_данных
SQL ALTER DATABASE Syntax
ALTER DATABASE olddbName MODIFY NAME = newdbName
SQL DROP DATABASE Syntax
DROP DATABASE dbname
SQL CREATE TABLE Синтаксис
CREATE TABLE имя таблицы
(
имя_столбца1 тип данных (размер),
имя_столбца2 тип данных (размер),
имя_столбца3 тип данных (размер),
. …..
)
ALTER TABLE имя_таблицы ADD имя_столбца тип данных
Или
ALTER TABLE имя_таблицы DROP COLUMN имя_столбца
Или
0125
УДАЛИТЬ ИЗ имя_таблицы
или
УДАЛИТЬ ИЗ имя_таблицы, где имя_столбца=некоторое_значение
Синтаксис SQL DROP TABLE
имя_столбца)
SQL DROP INDEX Синтаксис
DROP INDEX tablename.columnname
SQL INSERT INTO Syntax
INSERT INTO tablename(column1,column2,column3,..,columnN)
VALUES(value1,value2,value3,..valueN)
Синтаксис SQL SELECT
SELECT столбец 1, столбец 2, столбец 3,…, столбец N из имени таблицы
Или
SELECT * FROM имя_таблицы 0124 SQL CREATE PROCEDURE Syntax
CREATE PROCEDURE имя процедуры
@parameter тип данных
AS
BEGIN
select * from tablename where columnname1=@parameter
END
SQL ALTER PROCEDURE Syntax
ALTER PROCEDURE имя процедуры
тип данных @parameter,
тип данных @parameter2
AS
BEGIN
select * from tablename where columnname=@parameter and columnname2=@parameter2
END
SQL DROP PROCEDURE Syntax
5
PROCEDURE DROP name 0 Практикуйте базовый SQL Команды
Последнее изменение: 05 апреля 2023 г.
Вы прошли основы SQL! Это отличное место, чтобы остановиться и попрактиковаться в том, что вы уже узнали. Здесь мы составили список задач, чтобы дать вам эту практику. Потратьте некоторое время, чтобы просмотреть их, прежде чем перейти к разделу SQL среднего уровня.
Несколько вещей, о которых следует помнить при прохождении
- Если для возврата не вызывается никаких конкретных столбцов или значений, предположим, что он запрашивает все столбцы (знак
*
). - Если он запрашивает конкретную информацию, например «имена», возвращает только этот столбец. Если вы вернете и другие вещи, он не сможет соответствовать правильному ответу.
- Если у вас возникли проблемы с вопросом, используйте кнопку «Подсказка». Если у вас действительно возникли проблемы или вы думаете, что ответ может быть неправильным, отправьте нам сообщение по адресу [email protected].
- Мы проверяем правильность не по написанному вами запросу, а по возвращаемым результатам.
Это лучший способ, так как часто есть несколько разных способов получить один и тот же результат.
Удачи!
В. Получить первые 8 строк таблицы
альбомов .
каталожные номера:
выбирать
ограничение
Q. Получить строки с 12-й по 32-ю (всего 21) из
дорожки стол.
каталожные номера:
выбирать
ограничение
В. Выбрать строки с 9-й по 49-ю (всего 41) таблицы
исполнителей .
каталожные номера:
ограничение
В. Получите
имен всех художников .
каталожные номера:
от
В. Получите
имен всех художников в обратном алфавитном порядке.