ВЫБОРКА ДАННЫХ (ОПЕРАТОР SELECT)




ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ

Основные понятия реляционных баз данных

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


1.1. Основные понятия реляционных баз данных 11

 

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

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

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

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


\
Заголовок отношения

-


Ключ

v


Наименование атрибута

v


чения состоят в том, что корректным образом можно сравнивать

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


 

\
  Иванов Физический  
 
  Сидоров Физический  
  Орлов Химический  
  Смирнов Физический  

 

Кортеж


Код_студ Имя_студ Факультет Курс


Отношения реляционной базы данных обладают следующими свой- ствами:


- 2004 Петров Химический 2


в отношениях не должно быть кортежей-дубликатов; кортежи отношений неупорядочены;

атрибуты отношений также неупорядочены.

Из этих свойств отношения вытекают следующие важные след-


//´

/

/



Попов Исторический 4

Кузнецов Физический 1

z
ˆ
\

\

 


ствия.

Из уникальности кортежей следует, что в отношении всегда

имеется атрибут или набор атрибутов, позволяющий идентифи-


Отношение


\ Атрибут


цировать кортеж; другими словами, в отношении всегда есть


Значение атрибута

 

Рис. 1

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


первичный ключ.

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

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


 

Относительно свойства реляционного отношения, касающегося отсут- ствия кортежей-дубликатов, следует сделать важное замечание. В этом пункте SQL не полностью соответствует реляционной модели. А имен- но, в отношениях, являющихся результатами запросов, SQL допускает наличие одинаковых строк. Для их устранения в запросе используется ключевое слово DISTINCT (см. ниже).

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

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

 

1.2. Отличие SQL от процедурных языков программирования

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

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

 

1.3. Интерактивный и встроенный SQL

Существуют и используются две формы языка SQL: интерактив- ный SQL и встроенный SQL.

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


 

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

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

 

1.4. Составные части SQL

И интерактивный, и встроенный SQL подразделяются на следую- щие составные части.

Язык Определения Данных — DDL (Data Definition Language): дает возможность создания, изменения и удаления различных объектов базы данных (таблиц, индексов, пользователей, привилегий и т. п.).

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

Язык Обработки Данных — DML (Data Manipulation Language): предоставляет возможность выборки информации из базы данных и ее преобразования.

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

 

1.5. Типы данных

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

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

1.5.1. Тип данных “строка символов”. Тип данных CHARACTER или CHAR представляет символьные строки фиксированной длины. Его синтаксис имеет вид:

CHARACTER [(<длина>)] или

CHAR [(<длина>)].

Текстовые значения поля таблицы, для которого определен тип

CHAR, имеют фиксированную длину, которая определяется параметром


 

<длина>. Этот параметр может принимать значения от 1 до 255, т. е. строка может содержать до 255 символов. Если во вводимой в поле текстовой константе фактическое число символов меньше числа, определенного параметром <длина>, то эта константа автоматически дополняется справа пробелами до заданного числа символов. Квадрат- ные скобки указывают на то, что значение параметра <длина> может не указываться явно. В этом случае длина строки полагается равной одному символу.

Тип данных для строк переменной длины может обозначать- ся ключевыми словами VARCHAR, CHARACTER VARYING или CHAR VARYING. Он описывает текстовую строку, которая может иметь про- извольную длину до определенного конкретной реализацией SQL мак- симума (в Oracle до 2000 символов). В отличие от типа CHAR, в этом случае при вводе текстовой константы, фактическая длина которой меньше заданной, ее дополнение пробелами до заданного максималь- ного значения не производится.

Константы, имеющие тип CHARACTER или VARCHAR, в выражениях SQL заключаются в одиночные кавычки, например, ‘ <текст> ’.

Следующие предложения эквивалентны:

VARCHAR [(<длина>)], CHAR VARYING [(<длина>)], CHARACTER VARYING [(<длина>)].

Если длина строки не указана явно, она полагается равной одному символу во всех случаях.

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

1.5.2. Числовые типы данных. Стандартными числовыми типа- ми данных SQL являются:

INTEGER — используется для представления целых чисел в диа- пазоне от 231 до +231;

SMALLINT — используется для представления целых чисел в диапазоне меньшем, чем для INTEGER, а именно от 215 до +215; DECIMAL (<точность> [, <масштаб> ]) — десятичное число с фиксированной точкой; точность указывает, сколько значащих цифр имеет число. Масштаб указывает максимальное число цифр справа от точки;

NUMERIC (<точность> [, <масштаб> ]) — десятичное число с фиксированной точкой, такое же, как и DECIMAL; FLOAT [(<точность>)] — число с плавающей точкой и указанной минимальной точностью;

REAL — такое же число, как и FLOAT, за исключением того, что точность устанавливается по умолчанию в зависимости от конкретной реализации SQL.


DOUBLE PRECISION — такое же число, как и REAL, но точность в два раза превышает точность для REAL.

СУБД Oracle использует дополнительно тип данных NUMBER для представления всех числовых данных: целых, с фиксированной или плавающей точкой. Его синтаксис:

NUMBER [(<точность> [, <масштаб> ])].

Если значение параметра <точность> не указано явно, оно по- лагается равным 38. Значение параметра <масштаб> по умолчанию предполагается равным 0. Значение параметра <точность> может изменяться от 1 до 38; значение параметра <масштаб> может изме- няться от 84 до 128. Использование отрицательных значений мас- штаба означает сдвиг десятичной точки в сторону старших разрядов. Например, определение NUMBER (7, –3) означает округление до тысяч.

Типы DECIMAL и NUMERIC полностью эквивалентны типу NUMBER. Синтаксис:

DECIMAL [(<точность> [, <масштаб> ])], DEC [(<точность> [, <масштаб> ])], NUMERIC [(<точность> [, <масштаб> ])].

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

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

Константы типа DATE записываются в зависимости от форма- та, принятого в конкретной системе. Например, ‘03.05.1999’ или ‘12/06/1989’, или ‘03-nov-1999’, или ‘03-apr-99’.

1.5.4. Неопределенные или отсутствующие данные (NULL). Для обозначения отсутствующих, пропущенных или неизвестных зна- чений атрибута в SQL используется ключевое слово NULL. Довольно часто можно встретить словосочетание “ атрибут имеет значение NULL ”. Строго говоря, NULL не является значением в обычном пони- мании, а используется именно для обозначения того факта, что дей- ствительное значение атрибута на самом деле по каким-либо причинам отсутствует. Это приводит к ряду особенностей, что следует учитывать при использовании значений атрибутов, которые могут находиться в состоянии NULL.

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


 

толкования результатов отсутствующие или NULL -значения атри- бутов игнорируются.

Условные операторы расширяются от булевой двузначной логи- 1 Иванов Иван     Орел 3/12/1988  
вестно. 3 Петров Петр     Курск 11/12/1986  
Все операторы возвращают пустое значение (NULL), если значе- 6 Сидоров Вадим     Москва 7/06/1985  
ние любого из операндов отсутствует (имеет “значение NULL”). Для проверки на пустое значение следует использовать операто- 10 Кузнецов Борис     Брянск 8/12/1987  
ры IS NULLи IS NOT NULL(использование для этого опера- 12 Зайцева Ольга     Липецк 21/05/1987  
тора сравнения “=” является ошибкой). 265 Функции преобразования типов, имеющие NULLв качестве аргу- Павлов Андрей     Воронеж 5/11/1985  
мента, возвращают пустое значение (NULL).   Котов Павел     Белгород NULL  
    Лукин Артем     Воронеж 11/12/1987  

 

ки истина/ложь до трехзначной логики истина/ложь/неиз-


Т а б л и ц а 1.1. STUDENT (Студент)

STUDENT_ID SURNAME NAME STIPEND KURS CITY BIRTHDAY UNIV_ID


 

 


1.6. Используемые термины и обозначения

Ключевые слова — это используемые в выражениях SQL слова, имеющие специальное назначение (например, они могут обозначать конкретные команды SQL). Ключевые слова нельзя использовать для других целей, к примеру, в качестве имен объектов базы данных. В книге они выделяются шрифтом: КЛЮЧЕВОЕСЛОВО.

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

Объекты базы данных, имеющие имена (таблицы, атрибуты и др.), в книге также выделяются особым образом: ТАБЛИЦА1, АТРИБУТ_2.

|
В описании синтаксиса команд SQL оператор определения “ ::= ” разделяет определяемый элемент (слева от оператора) и собственно его определение (справа от оператора); квадратные скобки “[ ]” указыва- ют необязательный элемент синтаксической конструкции; многоточие “ ... ” указывает, что выражение, предшествующее ему, может повто- ряться любое число раз; фигурные скобки “{ }” объединяют последова- тельность элементов в логическую группу, один из элементов которой должно быть обязательно использован; вертикальная черта “ ” указы- вает, что часть определения, следующая за этим символом, является одним из возможных вариантов; в угловые скобки “ < > ” заключаются элементы, которые объясняются по мере того, как вводятся.

 

1.7. Учебная база данных

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


276 Петров Антон 200 4 NULL 5/08/1987 22

55 Белкин Вадим 250 5 Воронеж 20/01/1986 10

........................

STUDENT_ID — числовой код, идентифицирующий студента (идентификатор студента),

SURNAME — фамилия студента,

NAME — имя студента,

STIPEND — стипендия, которую получает студент,

KURS — курс, на котором учится студент, CITY — город, в котором живет студент, BIRTHDAY — дата рождения студента,

UNIV_ID — идентификатор университета, в котором учится студент.

Т а б л и ц а 1.2. LECTURER (Преподаватель)

 

LECTURER_ID SURNAME NAME CITY UNIV_ID
  Колесников Борис Воронеж  
  Никонов Иван Воронеж  
  Лагутин Павел Москва  
  Струков Николай Москва  
  Николаев Виктор Воронеж  
  Сорокин Андрей Орел  
... ... ... ... ...

LECTURER_ID — идентификатор преподавателя,

SURNAME — фамилия преподавателя,

NAME — имя преподавателя,

CITY — город, в котором живет преподаватель,

UNIV_ID — идентификатор университета, в котором работает преподаватель.


 

Т а б л и ц а 1.3. SUBJECT (Предмет обучения)

 

SUBJ_ID SUBJ_NAME HOUR SEMESTER
  Информатика    
  Физика    
  Математика    
  История    
  Английский    
  Физкультура    
... ... ... ...

 

SUBJ_ID — идентификатор предмета обучения,

SUBJ_NAME — наименование предмета обучения,

HOUR — количество часов, отводимых на изучение предмета,

 

SEMESTER — семестр, в котором изучается данный предмет.

 

 

G AAgAAAAhANr+kzB6BQAANSgAAA4AAAAAAAAAAAAAAAAAOgIAAGRycy9lMm9Eb2MueG1sUEsBAi0A FAAGAAgAAAAhAKomDr68AAAAIQEAABkAAAAAAAAAAAAAAAAA4AcAAGRycy9fcmVscy9lMm9Eb2Mu eG1sLnJlbHNQSwECLQAUAAYACAAAACEA4SWSfuEAAAAKAQAADwAAAAAAAAAAAAAAAADTCAAAZHJz L2Rvd25yZXYueG1sUEsBAi0ACgAAAAAAAAAhAHrHU0tWBgAAVgYAABQAAAAAAAAAAAAAAAAA4QkA AGRycy9tZWRpYS9pbWFnZTEucG5nUEsFBgAAAAAGAAYAfAEAAGkQAAAAAA== ">

UNIV_ID
UNIV_NAME
RATING
CITY
...
ВГМА ...
...
Воронеж ...
Т а б л и ц а 1.4. UNIVERSITY (Университет)


Т а б л и ц а 1.5. EXAM_MARKS (Экзаменационные оценки)

 

EXAM_ID STUDENT_ID SUBJ_ID MARK EXAM_DATE
        12/01/2006
        23/01/2006
        05/01/2006
        17/06/2005
      NULL 22/06/2005
        18/01/2006
... ... ... ... ...

EXAM_ID — идентификатор экзамена, STUDENT_ID — идентификатор студента, SUBJ_ID — идентификатор предмета обучения, MARK — экзаменационная оценка,

EXAM_DATE — дата экзамена.

Т а б л и ц а 1.6. SUBJ_LECT

LECTURER_ID
SUBJ_ID
(Учебные дисциплины преподавателей)


 

 

     
  МГУ   Москва    
  ВГУ   Воронеж    
  НГУ   Новосибирск ... ...
  РГУ   Ростов LECTURER_ID — идентификатор преподавателя,  
  БГУ   Белгород SUBJ_ID — идентификатор предмета обучения.
  ТГУ   Томск ВОПРОСЫ

 


 

UNIV_ID — идентификатор университета, UNIV_NAME — название университета, RATING — рейтинг университета,

CITY — город, в котором расположен университет.


1. Какие поля приведенных таблиц являются первичными ключами?

2. Какие данные хранятся в столбце 2 в таблице “Предмет обуче- ния”?

3. Как по-другому называется строка? столбец?

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


 

 

Г л а в а 2

ВЫБОРКА ДАННЫХ (ОПЕРАТОР SELECT)



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2021-10-08 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: