русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 23007; Нарушение авторских прав


Основные операторы языка SQL рассмотрим, опираясь на его реализацию в стандартном интерфейсе ODBC (Open DataBase Connectivity – совместимость открытых баз данных) фирмы Microsoft.Операторы языка можно условно разделить на два подъязыка: язык определения данных (Data Definition Language - DDL) и язык манипулирования данными (Data Manipulation Language - DML). Основные операторы языка представлены в табл. 4.3. Рассмотрим формат и основные возможности основных операторов.

3. Оператор создания таблицы имеет формат вида:

CREATE TABLE <имя таблицы>

(<имя столбца><тип данных>[NOT NULL]

[,<имя столбца><тип данных>[ NOT NULL]]…)

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

Таблица 4.3. Основные операторы языка SQL

Вид Название Назначение
  DDL   CREATE TABLE DROP TABLE ALTER TABLE CREATE INDEX DROP INDEX CREATE VIEW DROP VIEW GRAND* REVOKE* Создание таблицы Удаление таблицы Изменение структуры таблицы Создание индекса Удаление индекса Создание представления Удаление представления Назначение привилегий Удаление привилегий
    DML   SELECT UPDATE INSERT DELETE Выборка записей Изменение записей Вставка новых записей Удаление записей

 

При создании таблицы для отдельных полей могут указываться некоторые дополнительные правила контроля вводимых в них значений. Конструкция NOT NULL (не пустое) служит именно таким целям и для столбца таблицы означает, что в этом столбце должно быть определено значение.

В общем случае в разных СУБД могут использоваться различные типы данных. В интерфейсе ODBC поддерживаются свои стандартные типы данных, например, символьные (SQL_CHAR, SQL_VARCHAR, SQL_LONGVARCHAR) и др. При работе с БД некоторой СУБД посредством интерфейса ODBC выполняется автоматическое преобразование стандартных типов данных, поддерживаемых интерфейсом, в типы данных источников и обратно. При необходимости обмен данными между программой и источником данных может вестись без преобразования – во внутреннем формате данных источника.



Пример 1.Создание таблицы.

Пусть требуется создать таблицу товары описания товаров, имеющую поля: тип – вид товара, код_комп – идентификатор компании-производителя, имя – название товара и цена – цена товара. Оператор определения таблицы может иметь следующий вид:

CREATE TABLE товары(тип SQL_CHAR(8) NOT NULL,

код_комп SQL_CHAR(10) NOT NULL, имя SQL_VARCHAR(20),

цена SQL_DECIMAL(8,2)).

2. Оператор изменения структуры таблицы имеет формат вида:

ALTER TABLE <имя таблицы>

({ADD, MODIFY, DROP} <имя столбца> [<тип данных>]

[NOT NULL]

[, {ADD, MODIFY, DROP}<имя столбца> [<тип данных>]

[NOT NULL]]…)

Изменение структуры таблицы может состоять в добавлении (ADD), изменении (MODIFY), или удалении (DROP) одного или нескольких столбцов таблицы. Правила записи оператора ALTER TABLE такие же, как и оператора CREATE TABLE. При удалении столбца указывать <тип данных> не нужно.

Пример 2.Добавления поля таблицы.

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

ALTER TABLE товары (ADD количество SQL_INTEGER).

3. Оператор удаления таблицы имеет формат вида:

DROP TABLE <имя таблицы>

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

DROP TABLE текущая.

4. Оператор создания индекса имеет формат вида:

CREATE [UNIQUE] INDEX <имя индекса>

ON <имя таблицы>

(<имя столбца> [ASC|DESC]

[, <имя столбца>[ ASC|DESC]…)

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

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

При создании индекса можно задать порядок автоматической сортировки значений в столбцах – в порядке возрастания ASC (по умолчанию), или в порядке убывания DESC. Для разных столбцов можно задать различный порядок сортировки.

Пример 3.Создание индекса.

Пусть для таблицы служащие, имеющей поля имя, зарплата, руководитель и отдел, требуется создать индекс код_служ для сортировки имен в алфавитном порядке и убыванию размеров зарплаты. Оператор создания индекса может иметь вид:

CREATE INDEX код_служ

ON служащие (имя, зарплата DESC).

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

DROP INDEX <имя индекса>

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

DROP INDEX код_служ.

6. Оператор создания представления имеет формат вида:

CREATE VIEW <имя представления>

[(<имя столбца>[,<имя столбца>]…)]

AS <оператор SELECT >

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

Пример 4.Создание представления.

Пусть имеется таблица компании описания производителей товаров с полями: код_комп – идентификатор компании, имя_комп – название организации, адрес_комп – адрес и телефон – телефон, а также таблица товары производимых товаров с полями: тип – вид товара, код_комп – индекс компании, имя – название товараи цена – цена товара. Таблицы связаны между собой по полю код_комп. Требуется создать представление реклама с краткой информацией о товарах и их производителях: вид товара, название производителя, и цена товара. Оператор определения представления может иметь следующий вид:

CREATE VIEW

реклама

AS

SELECT

товары.тип, компании.имя_комп, товары.цена

FROM

товары, компании

WHERE

товары.код_комп = компании.код_комп

7. Оператор удаления представления имеет формат вида:

DROP VIEW <имя представления>

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

DROP VIEW реклама.

8 Оператор выборки записей имеет формат вида:

SELECT [ALL|DISTINCT]

<список данных>

FROM <список таблиц>

[WHERE <условие выборки>]

[GROUP BY <имя столбца> [,<имя столбца>]…]

[HAVING <условие поиска>]

[ORDER BY <спецификация>[,<спецификация>]…]

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

Оператор SELECT позволяет производить выборку и вычисления над данными из одной или нескольких таблиц. Результатом выполнения оператора является ответная таблица, которая может иметь (ALL), или не иметь (DISTING) повторяющиеся строки. По умолчанию в ответную таблицу включаются все строки, в том числе и повторяющиеся. В отборе данных участвуют записи одной или нескольких таблиц, перечисленных в списке операнда FROM.

Список данных может содержать имена столбцов, участвующих в запросе, а также выражения над столбцами. В простейшем случае в выражениях можно записывать имена столбцов, знаки арифметических операций (+, -, *, /), константы и круглые скобки. Если в списке данных записано выражение, то наряду с выборкой данных выполняются вычисления, результаты которого попадают в новый (создаваемый) столбец ответной таблицы.

При использовании в списках данных имен столбцов нескольких таблиц для указания принадлежности столбца некоторой таблице применяют конструкцию вида: <имя таблицы>.<имя столбца>.

Операнд WHERE задает условия, которым должны удовлетворять записи в результирующей таблице. Выражение <условие выборки> является логическим. Его элементами могут быть имена столбцов, операции сравнения, арифметические операции, логические связки (И, ИЛИ, НЕТ), скобки, специальные функции LIKE, NULL, IN и т.д.

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

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

Операнд HAVING действует совместно с операндом GROUP BY и используется для дополнительной селекции записей во время определения групп. Правила записи <условия поиска> аналогичны правилам формирования <условия выборки> операнда WHERE.

Операнд ORDER BY задает порядок сортировки результирующего множества. Обычно каждая <спецификация> аналогична соответствующей конструкции оператора CREAT INDEX и представляет собой пару вида: <имя столбца> [ASC|DESC].

Оператор SELECT может иметь и другие более сложные синтаксические конструкции.

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

Вторым примером более сложной формы оператора SELECT является оператор, в котором отобранные записи в дальнейшем предполагается модифицировать (конструкция FOR UPDATE OF). СУБД после выполнения такого оператора обычно блокирует (защищает) отобранные записи от модификации их другими пользователями.

Еще один случай специфического использования оператора SELECT - выполнение объединений результирующих таблиц при выполнении нескольких операторов SELECT (операнд UNION).

Пример 5.Выбор записей.

Для таблицы сотрудники, имеющей поля: имя (имя), зарплата (зарплата сотрудника), руководитель (руководитель отдела), отдел (отдел), требуется вывести имена сотрудников и размер их зарплаты, увеличенный на 100 единиц. Оператор выбора можно записать следующим образом:

SELECT имя, зарплата+100

FROM сотрудники.

Пример 6.Выбор с условием.

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

SELECT отдел

FROM сотрудники

WHERE руководитель is NULL.

Пример 7.Выбор с группированием.

Пусть требуется найти минимальную и максимальную зарплаты для каждого из отделов (по таблице сотрудники). Оператор SELECT для этого запроса имеет вид:

SELECT отдел, MIN(зарплата), MAX(зарплата)

FROM сотрудники

GROUP BY отдел.

Пример 8.Пусть требуется из таблицы СОТРУДНИКИ выделить запись о сотруднике с максимальной зарплатой.

SELECT Имя, Зарплата, Руководитель, Отдел

FROM СОТРУДНИКИ

WHERE Зарплата = (SELECT MAX(Зарплата)

FROM СОТРУДНИКИ);

Пример 9.Пусть требуется из таблицы СОТРУДНИКИвывести суммарную зарплату по 1, 3 и 7 отделам.

SELECT СОТРУДНИКИ.отдел, Sum(СОТРУДНИКИ.зарплата) AS [Sum-зарплата]

FROM СОТРУДНИКИ

GROUP BY СОТРУДНИКИ.отдел

HAVING (((СОТРУДНИКИ.отдел) In (1,3,7)));

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

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

9. Оператор изменения записей имеет формат вида:

UPDATE <имя таблицы>

SET <имя столбца> = {<выражение>,NULL}

[, SET <имя столбца> = {<выражение>,NULL}…]

[WHERE <условие>]

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

Новые значения полей в записях могут быть пустыми (NULL), либо вычисляться в соответствии с арифметическим выражением. Правила записи арифметических и логических выражений аналогичны соответствующим правилам оператора SELECT.

Пример 10.Изменение записей.

Пусть необходимо увеличить на 500 единиц зарплату тем служащим, которые получают не более 6000 (по таблице сотрудники). Запрос, сформулированный с помощью оператора SELECT, может выглядеть так:

UPDATE сотрудники

SET зарплата = 6500

WHERE зарплата <= 6000.

10. Оператор вставки новых записей имеет форматы двух видов:

INSERT INTO <имя таблицы>

[(<список столбцов>)]

VALUES (<список значений>)

и

INSERT INTO <имя таблицы>

[(<список столбцов>)]

<предложение SELECT>

В первом формате оператор INSERT предназначен для ввода новых записей с заданными значениями в столбцах. Порядок перечисления имен столбцов должен соответствовать порядку значений, перечисленных в списке операнда VALUES. Если <список столбцов> опущен, то в <списке значений> должны быть перечислены все значения в порядке столбцов структуры таблицы.

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

Пример 11.Ввод записей.

Ввести в таблицу сотрудники запись о новом сотруднике. Для этого можно записать оператор вида:

INSERT INTO сотрудники

VALUES («Иванов», 7500, «Сергеев», «Косметика»).

11. Оператор удаления записей имеет формат вида:

DELETE FROM <имя таблицы>

[WHERE <условие>]

Результатом выполнения оператора DELETE является удаление из указанной таблицы строк, которые удовлетворяют условию, определенному операндом WHERE. Если необязательный операнд WHERE опущен, т.е. условие отбора удаляемых записей отсутствует, то удалению подлежат все записи таблицы.

Пример 12.Удаление записей.

В связи с ликвидацией отдела игрушек (Игрушки), требуется удалить из таблицы сотрудники всех сотрудников этого отдела. Оператор DELETE для этой задачи будет выглядеть так:

DELETE FROM сотрудники

WHERE отдел = “игрушки”

В заключение отметим, что, по словам Дейта, язык SQL является гибридом реляционной алгебры и реляционного исчисления. В нем имеются элементы алгебры (оператор объединения UNION) и исчисления (квантор существования EXISTS). Кроме того, язык SQL обладает реляционной полнотой. Операторы языка SQL представлены в табл. 4.4. – 4.8.


Таблица 4.4. Операторы определения данных DDL

Оператор Название Назначение
CREATE TABLE Создать таблицу Создает новую таблицу в БД
DROP TABLE Удалить таблицу Удаляет таблицу из БД
ALTER TABLE Изменить таблицу Изменяет структуру существующей таблицы или ограничения целостности, задаваемые для данной таблицы
CREATE VIEW Создать представление Создает виртуальную таблицу, соответствующую некоторому SQL-запросу
ALTER VIEW Изменить представление Изменяет ранее созданное представление
DROP VIEW Удалить представление Удаляет ранее созданное представление
CREAT INDEX Создать индекс Создает индекс для некоторой таблицы для обеспечения быстрого доступа по атрибутам, входящим в индекс
DROP INDEX Удалить индекс Удаляет ранее созданный индекс

 

Таблица 4.5. Операторы манипулирования данными Data Manipulation Language (DML)

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

 

Таблица 4.6. Язык запросов Data Query Language (DQL)

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

 


 

Таблица 4.7. Средства управления транзакциями

Оператор Название Назначение
COMMIT Завершить транзакцию Завершить комплексную взаимосвязанную обработку информации, объединенную в транзакцию
ROLLBACK Вставить строку Отменить изменения, проведенные в ходе выполнения транзакции
SAVEPOINT Обновить строку Сохранить промежуточное состояние БД, пометить его для того, чтобы можно было в дальнейшем к нему вернуться

 

Таблица 4.8. Средства администрирования данных

Оператор Название Назначение
ALTER DATABASE Изменить БД Изменить набор основных объектов в БД, ограничений, касающихся всей БД
ALTER DBAREA Изменить область хранения БД Изменить ранее созданную область хранения
ALTER PASSWORD Изменить пароль Изменить пароль для всей базы данных
CREATE DATABASE Создать БД Создать новую базу данных, определив основные параметры для нее
CREAT DBAREA Создать область хранения Создать новую область хранения и сделать ее доступной для размещения данных
DROP DATABASE Удалить БД Удалить существующую базу данных (только в том случае, когда вы имеете право выполнить это действие)
DROP DBAREA Удалить область хранения БД Удалить существующую область хранения (если в ней на настоящий момент не располагаются активные данные)
GRANT Предоставить права Предоставить права доступа на ряд действий над некоторым объектом БД
REVOKE Лишить прав Лишить прав доступа к некоторому объекту или некоторым действиям над объектом

 


 

Таблица 4.9. Программный SQL

Оператор Название Назначение
DECLARE Определяет курсор для запроса Задает некоторое имя и определяет связанный с ним запрос к БД, который соответствует виртуальному набору данных
OPEN Открыть курсор Формирует виртуальный набор данных, соответствующий описанию указанного курсора и текущему состоянию БД
FETCH Считать строку из множества строк, определенных курсором Считывает очередную строку, заданную параметром команды из виртуального набора данных, соответствующего открытому курсору
CLOSE Закрыть курсор Прекращает доступ к виртуальному набору данных, соответствующему указанному курсору
PREPARE Подготовить оператор SQL к динамическому выполнению Сгенерировать план выполнения запроса, соответствующего заданному оператору SQL
EXECUTE Выполнить оператор SQL, ранее подготовленный к динамическому выполнению Выполняет ранее подготовленный план запроса

 



<== предыдущая лекция | следующая лекция ==>
Структурированный язык запросов SQL | Дополнительные операторы языка SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.