Файл: Базы данных Учебное пособие.pdf

Добавлен: 28.11.2018

Просмотров: 7746

Скачиваний: 53

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

51 

можно  сказать,  что  каждое  расширение  –  это  надмножество  некоторого  под-
множества стандарта SQL.  

Язык SQL оперирует терминами, несколько отличающимися от терминов 

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

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

рования,  т. к.  он  не  содержит,  например,  операторы,  управляющие  ходом  ис-
полнения  программы,  операторы  описания  типов  и  т. д.  Язык  SQL  содержит 
лишь  набор  стандартных  операторов  доступа  и  управления  к  данным  в  БД. 
Операторы SQL с помощью специальных средств можно встроить в программ-
ное  обеспечение,  использующее  базовый  язык  программирования,  например 
С++ [8]. 

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

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

классов языка [11–12]: 

1.  DDL – Data Definition Language (язык описания или определения дан-

ных). 

2.  DML – Data Manipulation Language (язык манипулирования данными). 
3.  DQL – Data Query Language (язык запросов к данным). 
4.  TCL – Transaction Control Language (язык управления транзакциями). 
5.  AL – Administration Language (язык администрирования). 

 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

Основным и самым используемым оператором языка SQL яв-

ляется  оператор  SELECT  из  класса  DQL,  который  позволяет  из-
влекать данные из одной или нескольких таблиц.  
 · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·   

Несмотря  на  то  что  данный  оператор  позволяет  производить  различные 

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


background image

52 

Класс DML, в отличие от DQL, наоборот, предназначен для произведения 

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

Операторы групп DDL и AL предназначены для управления самими объ-

ектами  баз  данных.  TCL  команды  работают  с  транзакциями,  состоящими  из 
набора команд DQL и DML. Основные операторы языка SQL приведены в таб-
лице 3.1. 

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

Класс 

Оператор 

Применение 

DQL 

SELECT 

Используется для извлечения данных из ба-

зы данных 

DML 

INSERT 

UPDATE 

DELETE 

Команды, предназначенные для ввода но-

вых, изменения существующих и удаления 

ненужных строк из таблиц базы данных 

DDL 

CREATE  

ALTER 

DROP  

RENAME  

TRUNCATE 

Используются для создания, изменения и 

удаления объектов базы данных (таблиц, 

представлений, последовательностей и 

т. п.) 

TCL 

COMMIT  

ROLLBACK 

SAVEPOINT 

SET TRANSAC-

TION 

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

Управляют изменениями, которые произво-

дятся с помощью команд DML 

AL 

GRANT 

REVOKE 

Команды управления доступом к объектам 

Данный набор  команд  не  является  полным,  ведь  существуют  также  спе-

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

3.3 Типы данных 

В языке  SQL,  так  же  как  и  в  различных  языках  программирования,  для 

хранения  данных  поддерживается  набор  типов  данных.  Типы  данных  отлича-


background image

53 

ются друг от друга в организации хранения данных и применяемым к ним опе-
рациям. Очевидно, что операции деления или умножения относятся к числовым 
типам данных и не применимы к символьным (строкам). Таким образом, неко-
торый набор операций может быть применим к различным типам данных, а не-
которые  операции  могут  применяться  только  для  отдельного  типа.  Например, 
операция  сложения  «+»  может  быть  применима  как  к  числовым  данным 
(4 + 7 = 11), так и к текстовым («четыре» + «семь» = «четыре семь»). 

В различных  СУБД  набор  поддерживаемых  типов  данных  для  столбцов 

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

Типы данных SQL: 
1.  Числовой (целочисленный): 

•  INTEGER; 

•  SMALLINT; 

•  BIGINT. 

2.  Числовой (вещественный или дробный): 

•  REAL; 

•  FLOAT; 

•  NUMERIC; 

•  DECIMAL. 

3.  Символьный (строковый): 

•  CHAR; 

•  VARCHAR; 

•  TEXT. 

4.  Дата (время): 

•  DATE; 

•  TIME. 

5.  Логический: 

•  BOOLEAN. 

Представленные типы данных являются наиболее часто употребляемыми 

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


background image

54 

3.4 Оператор SELECT 

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

SELECT.  

Синтаксис команды SELECT выглядит следующим образом: 
SELECT [ DISTINCT ] { *| столбец [ псевдоним ], …} 
FROM таблица 
[WHERE условие] 
[ORDER BY {столбец | выражение [ASC | DESC], … }]; 
Рассмотрим  подробнее  каждый  из  пунктов  данного  синтаксиса.  Ключе-

вых операторов здесь только два: SELECT и FROM. Любой запрос на выборку 
данных из таблиц должен состоять как минимум из 2 данных операторов. 

После оператора  SELECT обязательно необходимо указать имена столб-

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

Например, в результате запуска команды SELECT * FROM Студент на 

экран будут выведены все строки из таблицы «Студент». 

Необязательным,  но  довольно  часто  используемым  является  оператор 

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

Последний  оператор  ORDER  BY  используется  для  сортировки  данных 

выборки  по  одному  или  нескольким  полям  в  порядке  возрастания  или  убыва-
ния. 

Оператор  SELECT используется именно для выборки необходимых дан-

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


background image

55 

на печать, сохранены в файл, переданы на обработку и т. п. За все эти операции 
команда SELECT уже не отвечает. 

Рассмотрим примеры различных запросов к отношению «Студент», при-

ведённому в таблице 3.2. 

Таблица 3.2 – Отношение «Студент» 

Номер 

ФИО 

Дата 

рождения 

Группа 

Стипен-

дия, руб. 

Иванов Сергей Петрович 

14.05.1988 

116 

1500 

Петров Иван Сергеевич 

27.01.1989 

598 

500 

Алексеев Семен Олегович 

05.10.1993 

445 

1500 

Белов Петр Иванович 

01.11.1988 

116 

2500 

Сидорова Анна Игоревна 

05.04.1991 

116 

1000 

Егорова Ирина Петровна 

18.12.1992 

445 

– 

Широков Иван Дмитриевич 

22.07.1991 

445 

2000 

 

 · · · · · · · · · · · · · · · · · · · · · · ·  

 

 

Пример 3.1

 

 · · · · · · · · · · · · · · · · · · · · · · ·   

Вывод списка фамилий, имен, отчеств (ФИО) и номеров групп студентов, 

реализуемый  с  помощью  запроса  SELECT  ФИО,  Группа  FROM  Студент, 
приведен в таблице 3.3. 

Таблица 3.3 – Список фамилий и номеров групп 

ФИО 

Группа 

Иванов Сергей Петрович 

116 

Петров Иван Сергеевич 

598 

Алексеев Семен Олегович 

445 

Белов Петр Иванович 

116 

Сидорова Анна Игоревна 

116 

Егорова Ирина Петровна 

445 

Широков Иван Дмитриевич 

445