Презентация №6

Download Report

Transcript Презентация №6

Базы
данных
Лекция №06
Основы SQL
1. Связи
между таблицами БД
Разновидности связи между таблицами БД:
• Один–ко–многим – одной записи родительской
таблицы может соответствовать несколько
записей дочерней
• Один–к–одному – одной записи в родительской
таблице соответствует одна запись в дочерней
• Многие–ко–многим – применяется в следующих
случаях:
– Одной записи в родительской таблице соответствует
более одной записи в дочерней
– Одной записи в дочерней таблице соответствует более
одной записи в родительской
2
2. Стандарт и реализация языка SQL
Язык SQL (Structured Query Language) –
стандартный язык реляционных БД
Стандарт на язык SQL был выпущен:
• ANSI
в 1986 г.
• ISO
в 1987 г.
Год
Название
1986 SQL-86
Иное
Изменения
название
Первый вариант стандарта, принятый институтом ANSI и одобренный ISO в
SQL-87
1987 году.
1989 SQL-89 FIPS 127-1 Немного доработанный вариант предыдущего стандарта.
1992 SQL-92
1999 SQL:1999
2003 SQL:2003
2006 SQL:2006
2008 SQL:2008
SQL2, Значительные изменения (ISO 9075); уровень Entry Level стандарта SQL-92
FIPS 127-2 был принят как стандарт FIPS 127-2.
Триггеры, базовые процедурные расширения, нескалярные типы данных и
SQL3
некоторые объектно-ориентированные возможности.
Введены расширения для работы с XML-данными, оконные функции
(применяемые для работы с OLAP-базами данных), генераторы
последовательностей и основанные на них типы данных.
Функциональность работы с XML-данными значительно расширена. Появилась
возможность совместно использовать в запросах SQL и XQuery.
Улучшены возможности оконных функций, устранены некоторые
3
неоднозначности стандарта SQL:2003
3. Типы команд SQL
Язык SQL может использоваться для:
• выполнения запросов к данным
• построения прикладных программ
Основные категории команд языка SQL:
• DDL – язык определения данных (CREATE TABLE, ALTER
TABLE, DROP TABLE, CREATE INDEX, ALTER INDEX, DROP INDEX)
• DML – язык манипулирования данными (INSERT, UPDATE,
DELETE)
• DQL – язык запросов (SELECT)
• DCL – язык управления данными (GRANT, REVOKE)
• Команды администрирования данных
• Команды управления транзакциями (COMMIT, ROLLBACK,
4
SAVEPOINT, SET TRANSACTION)
3. Типы команд SQL
Фазы выполнения SQL-оператора
SELECT A, B, C
parse
validate
access
plan
FROM X, Y
WHERE A<500 AND C='ASF'
Синтаксический разбор оператора
Проверка привилегий пользователя, проверка
действительности имен системных каталогов, таблиц и
названий полей
Генерация плана доступа к ресурсам. План доступа – это
двоичное представление выполнимого кода по отношению к
данным, сохраняемым в БД
Оптимизация плана доступа. Для увеличения скорости поиска
optimize данных могут применяться индексы. Оптимизация
использования взаимосвязанных таблиц
execute
Выполнение оператора
5
4. Типы
данных SQL
Типизированные данные – данные одного из
предопределённых SQL-языком типов
NULL – неопределенное значение в поле
Арифметические операции operation (+, – и т. д.):
• A
operation NULL
= NULL
• NULL
operation A
= NULL
• NULL
operation NULL
= NULL
Операций сравнения comparison (=, ≠, >, < и т. д.):
• A
comparison NULL
= unknown
• NULL
comparison A
= unknown
6
• NULL
comparison NULL
= unknown
4. Типы
данных SQL
Категории типов данных:
• Точные числовые типы:
– INTEGER
1826545
– SMALLINT
876
– NUMERIC(p, s)
125.4
– DECIMAL(p, s)
26.36
• Приближенные числовые типы:
– REAL
123
– DOUBLE PRECISION
23.12
– FLOAT(p)
123.12E1
7
4. Типы
данных SQL
Категории типов данных:
• Типы символьных строк
– CHARACTER(x)
[CHAR]
– CHARACTER VARYING(x)
[VARCHAR]
Операции:
o Конкатенации (||)
o Выделения подстроки (SUBSTRING)
o Регистр строки
(UPPER / LOWER)
o определения длины
(CHARACTER_LENGTH)
o определения позиции (POSITION)
– CHARACTER LARGE OBJECT(z) [CLOB]
8
4. Типы
данных SQL
Категории типов данных:
• Типы даты и времени
– DATE
’yyyy-mm-dd’
Пример: ’1949-04-08’ = 8 апреля 1949 г
– TIME
’hh:mm-ss:f...f’
’16:33-20:333’ = 16 ч 33 мин 20 сек и 0,333 сек
– TIMESTAMP
’yyyy-mm-dd hh:mm-ss:f...f’
’1949-04-08 16:33-20:333’ = 16 ч 33 мин 20 сек и
0,333 сек 8 апреля 1949 г
• Типы временных интервалов (TIME WITH TIME ZONE)
9
4. Типы
данных SQL
Категории типов данных:
• Булевский тип (BOOLEAN)
10
4. Типы
данных SQL
Категории типов данных:
• Тип массив
type ARRAY [m]
Integer ARRAY [10]
•
•
•
•
Типы битовых строк (bit strings)
Типы коллекций (collection types)
Анонимные строчные типы (anonymous row types)
Типы, определяемые пользователем (user-defined
types)
• Ссылочные типы (reference types)
11
4. Типы
данных SQL
Домен – объект схемы БД:
• Именованный
• Долговременно хранимый
Создание домена:
CREATE DOMAIN domain_name [AS] data_type
[ default_definition ]
[ domain_constraint_definition_list ]
CREATE DOMAIN EMP_NO AS INTEGER
CHECK (VALUE BETWEEN 1 AND 10000);
CREATE DOMAIN SALARY AS NUMERIC (10, 2)
DEFAULT 10000.00
CHECK (VALUE BETWEEN 10000.00 AND 20000000.00)
CONSTRAINT SAL_NOT_NULL CHECK (VALUE IS NOT NULL);
12
4. Типы
данных SQL
Изменить характеристики домена:
1.ALTER
2.ALTER
3.ALTER
4.ALTER
DOMAIN
DOMAIN
DOMAIN
DOMAIN
SALARY
SALARY
SALARY
SALARY
SET DEFAULT 11000.00;
DROP DEFAULT;
ADD CHECK (VALUE <> 15000.00);
DROP CONSTRAINT SAL_NOT_NULL;
Отменить ранее созданное определение домена:
DROP DOMAIN domain_name {RESTRICT | CASCADES}
Явные преобразования типов или доменов:
CAST({scalar-expression|NULL} AS {data_type|domain_name})
13
5. Применение
языка SQL
Подключение к СУБД:
CONNECT TO MyDB1 USER User1/Password1
Создание таблицы в БД:
CREATE [ [ { GLOBAL | LOCAL } ] TEMPORARY]
TABLE имя_таблицы
( { column | [table_constraint] } . , ..
[ ON COMMIT { DELETE | PRESERVE} ROWS ]
);
column определяется как:
имя_поля {domain | datatype [size]}
[column_constraint:]
[ DEFAULT default_value ]
[ COLLATE collate_value ]
14
5. Применение языка SQL
Ограничения для столбца:
• NOT NULL
• UNIQUE
• PRIMARY KEY
• CHECK
• REFERENCES table
Ограничения для таблицы:
• CHECK (condition)
• FOREIGN KEY (fields_list)
15
4. Типы
данных SQL
Изменение структуры таблицы:
ALTER TABLE TableName1
ADD | ALTER [COLUMN] FieldName1
FieldType [(nFieldWidth [, nPrecision])]
[NULL | NOT NULL]
[CHECK lExpression1 [ERROR cMessageText1]]
[DEFAULT eExpression1]
[PRIMARY KEY | UNIQUE]
[REFERENCES TableName2 [TAG TagName1]]
Пример:
1. ALTER TABLE table_name
ADD column_name datatype
2. ALTER TABLE table_name
DROP COLUMN column_name
3. ALTER TABLE table_name
ALTER COLUMN column_name datatype
16
4. Типы
данных SQL
Удаление таблицы:
DROP TABLE [IF EXISTS] tbl_name [, tbl_name, ...] [RESTRICT | CASCADE]
Пример:
DROP TABLE ‘Users’
17
5. Применение
языка SQL
SELECT – позволяет формировать запрос к БД:
SELECT [DISTINCT]
{{function_agregate | expr [AS new_field_name]}.,:
| specification.* | * [INTO list_variable]
FROM {{ имя_таблицы [AS] [table_alias] [(field.,:)]}
| {subquery [AS] subquery_alas [(field.,:)]}
| union_table | constructor_of_table_value
| {TABLE имя_таблицы [AS] alias [(field.,:)]}
}.,:
[WHERE condition]
[GROUP BY {{ имя_таблицы | alias }.field}.,: {COLLATE name}]
[HAVING condition]
[{ UNION | INTERSECT | EXCEPT } [ALL]
[CORRESPONDING [BY (field.,:)]]
SELECT_operator | {TABLE имя_таблицы}|constructor_of_table_value
[ORDER BY] {{field_result [ASC|DESC]}.,:}
|{{ integer [ASC|DESC]}.,:} ;
18
4. Типы
данных SQL
19
Спасибо
за внимание
20