Слайд 2Виды SQL
Интерактивный SQL используется для обращения непосредственно к базе данных.
В этой форме языка SQL запрос выполняется немедленно.
Вложенный SQL
используется внутри программ, которые написаны на другом языке.
Слайд 3Структура команд SQL
DDL ( Язык Определения Данных ) состоит из
команд, которые создают объекты ( таблицы, индексы, отчеты и т.
п. ) в базе данных;
DML (Язык Манипулирования Данными) – это набор команд, необходимых для определения значений, представленных в таблицах в данный момент;
DCL (Язык Управления Данными) состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет.
Слайд 4Команды DML (1)
SELECT определяет в общем случае поля, которые будут
входить в результат выполнения запроса.
При выполнении запроса из таблиц,
заданных параметром FROM, извлекаются записи, удовлетворяющие условию WHERE.
Слайд 5Команды DML (2)
FROM
FROM следует за SELECT;
В списке таблиц сначала используются
меньшие;
Слайд 6Команды DML (3)
ALL. Присутствует по умолчанию.
DISTINCT. Если предложение SELECT выбирает
несколько столбцов, аргумент DISTINCT опускает строки в тех случаях, когда
во всех указанных столбцах значения идентичны.
DISTINCTROW. Этот предикат применяют тогда, когда надо исключить дублирование не только из выбранных, но из всех остальных полей записи.
Слайд 7Команды DML (4)
WHERE – предложение команды SELECT, которое позволяет устанавливать
предикаты для некоторой строки таблицы. Команда извлекает только те строки
из таблицы, для которой предикат истинен.
Слайд 8Команды DML (5)
INNER JOIN - Используется для создания специального объединения
таблиц по условиям равенства; является необязательной частью параметра SELECT. Если
же она применяется, то ее следует оформлять как часть параметра FROM.
Таблица 1 INNER JOIN Таблица 2 ON Таблица 1. Поле А = Таблица 2. Поле Б
Слайд 9Команды DML (6)
ORDER BY сортирует в заданной последовательности: ASC –
по возрастанию, DESC – по убыванию.
Слайд 10Команды DML (7)
TOP n [PERCENT]
Возвращает определенное число записей, находящихся в
начале или в конце диапазона, описанного с помощью предложения ORDER
BY.
SELECT TOP 25 Имя, Фамилия FROM Студенты WHERE ГодВыпуска = 1996 ORDER BY СреднийБалл DESC
Слайд 11Команды DML (8)
GROUP BY позволяет группировать строки с одним и
тем же значением в указанном столбце.
Объединяет записи с одинаковыми
значениями в указанном списке полей в одну запись.
К выделенному подмножеству строк можно применять агрегатную функцию.
Слайд 12Команды DML (9)
HAVING задает критерий для формирования группы вывода, аналогично
тому как предложение WHERE делает это для отдельных строк.
Слайд 13Команды DML (10)
SELECT ТИП_КОМПЬЮТЕРА, MIN (ЦЕНА)
FROM КОМПЬЮТЕР
GROUP BY
ТИП_КОМПЬЮТЕРА; HAVING MIN (ЦЕНА) < 500.00
Слайд 14Команды DML (11)
IN. Используется при работе с базами данных другого
формата (DBASE, PARADOX) или неактивными ACCESS базами.
Пользователь может обращаться только
к одной внешней базе;
При задании типа базы данных к ее обозначению следует добавить точку с запятой и заключить в кавычки или апострофы.
Слайд 15Команды DML (12)
SELECT Клиенты.Фирма FROM Клиенты, [Потенциальные покупатели]
IN “C:\DBASE\INFO\CLIENTS” “DBASE;”
WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма
Слайд 16Команды DML (13). Подзапросы
Внутренний (вложенный) запрос генерирует значение, которое проверяется
в предикате внешнего запроса.
Имеются два вида подзапросов: простой и
соотнесенный. Соотнесенный подзапрос использует во внутреннем запросе таблицу, указанную в предложении внешнего запроса FROM , а простой подзапрос – нет.
Слайд 17Команды DML (14). Подзапросы
SELECT * FROM СТУДЕНТ
WHERE ФИО_СТ =( SELECT
РЕБЕНОК.ФИО_СТ FROM РЕБЕНОК WHERE ФИО_Р = фио2)
Слайд 18Команды DML (15). Подзапросы
SELECT * FROM СТУДЕНТ
WHERE 1995 IN (
SELECT Год_рождения FROM РЕБЕНОК WHERE СТУДЕНТ.ФИО_СТ = РЕБЕНОК .ФИО_СТ )
Слайд 19Команды DML (16). Подзапросы
ПРЕДЛОЖЕНИЕ UNION объединяет вывод двух или более
SQL-запросов в единый набор строк и столбцов. Когда запросы подвергаются
объединению, их столбцы вывода должны быть совместимы для объединения по типам данных.
SELECT * FROM СТУДЕНТ
UNION
SELECT * FROM СТУДЕНТКА
Слайд 20Команды DML (17)
Команда INSERT (ВСТАВИТЬ). Строки вводятся в базу данных
посредством команды INSERT. Простая команда INSERT имеет следующий синтаксис:
INSERT INTO
<таблица> VALUES ( <значение>, <значение> . . .);
INSERT INTO СТУДЕНТ
VALUES ('Иванов Иван Иванович', 'Ивановская, дом 1, кв.1');
Слайд 21Команды DML (18)
Команда DELETE удаляет строки из таблицы. Чтобы указать,
какие именно строки должны быть удалены, используется предикат предложения WHERE:
DELETE
FROM <таблица>WHERE<предикат>;
Чтобы удалить все содержание таблицы, подается команда следующего вида:
DELETE FROM <таблица>;
Слайд 22Команды DML (19)
Команда UPDATE используется для того, чтобы изменять значения
в существующей строке. Команда UPDATE содержит предложение UPDATE с именем
используемой таблицы, предложение SET с изменением, которое нужно сделать для определенного столбца, и предложение WHERE с предикатом, позволяющим выделить определенные строки:
UPDATE <таблица>
SET <столбец> = <значение>,<столбец> = <значение>...
WHERE<предикат>;
Слайд 23Команды DDL (1).
Команда CREATE TABLE создает пустую таблицу. Синтаксис
команды CREATE TABLE:
CREATE TABLE ( [()], …
<тип данных>[(<размер>)] ... );
Слайд 24Команды DDL (2)
Команда ALTER TABLE используется для того, чтобы изменить
определение существующей таблицы.
Типичный синтаксис команды ALTER TABLE для добавления
столбцов:
ALTER TABLE <таблица>
ADD <столбец> <тип данных>[(<размер>)] … [ ,<столбец> <тип данных> [(<размер>)]];
Слайд 25Команды DDL (3)
Команда DROP TABLE применяется для удаления таблицы. Эта
команда также не является частью стандарта ANSI. К моменту удаления
таблица должна быть пустой. Синтаксис команды для удаления таблицы:
DROP TABLE < таблица >;
Слайд 26Команды DDL (4)
Ограничения – это часть определений таблицы, используемая для
ограничения значений, которые можно вводить в столбцы.
Различают два основных
типа ограничений – ограничение столбца и ограничение таблицы. Различие между ними в том, что ограничение столбца применяется только к отдельным столбцам, в то время как ограничение таблицы применяется к группам из двух и более столбцов.
Слайд 27Команды DDL (5)
CREATE TABLE ( [()] < ограничение
столбца >, … [()] < ограничение столбца >...
ограничение таблицы >(<столбец>,<столбец>... ) );
Слайд 28Команды DDL (6)
Ограничение столбца NOT NULL используется для того, чтобы
предохранить поле от ввода в него пустых (NULL) значений.
Ограничение
столбца UNIQUE помещается в поле при создании таблицы для того, чтобы СУБД отклонила любую попытку ввода в это поле значения, которое уже представлено в другой строке.
Язык SQL поддерживает первичные ключи непосредственно ограничением PRIMARE KEY (Первичный Ключ), которое может ограничивать таблицы или их столбцы.
Слайд 29Команды DDL (7)
CREATE TABLE СТУДЕНТ(ФИО char(60) NOT NULL PRIMARY KEY,
Зачет_книжка integer NOT NULL UNIQUE, Адрес char(40))
CREATE TABLE СТУДЕНТ
(Фамилия char(20) NOT NULL, Имя char(20) NOT NULL, Отчество char(20) NOT NULL, PRIMARY KEY (Фамилия, Имя, Отчество ));
Слайд 30Команды DDL (8)
Ограничение CHECK позволяет установить условие, которому должно удовлетворять
значение, вводимое в таблицу.
CREATE TABLE СТУДЕНТ (ФИО char(60) NOT
NULL PRIMARY KEY, Возраст decimal CHECK (Возраст < 35))
Слайд 31Команды DDL (9)
Ограничение значения по умолчанию DEFAULT
CREATE TABLE СТУДЕНТ
(ФИО char(60) NOT NULL PRIMARY KEY, Город char(20) DEFAULT =
'Санкт-Петербург');
Слайд 32Команды DDL (10)
Язык SQL поддерживает ссылочную целостность базы данных посредством
ограничений FOREIGN KEY и REFERENCES. Действие этих ограничений – это
отбрасывание значений, которые еще не представлены в родительском ключе.
FOREIGN KEY является ограничением таблицы, а REFERENCES – ограничением столбца. Синтаксис ограничения таблицы FOREIGN KEY:
FOREIGN KEY (<перечень столбцов>) REFERENCES <родитель_таблица> ( <перечень столбцов>)
Слайд 33Команды DDL (11)
Ограничение CASCADES во внешнем ключе приводит к тому,
что при изменении значения в родительском ключе такое же изменение
автоматически выполняется во внешнем ключе.
Ограничение NULLS похоже по действию на ограничение CASCADES и отличается тем, что во внешнем ключе устанавливается значение NULL.
Ограничение RESTRICTED накладывается в случае, если изменения в родительском ключе допустимы только после изменения во внешнем ключе.
Слайд 34Команды DDL (12)
CREATE TABLE РЕБЕНОК (ФИО char(40) NOT NULL PRIMARY
KEY, Адрес char(60), мать char(40), отец char(40) REFERENCES СТУДЕНТ(ФИО), UPDATE
OF СТУДЕНТ CASCADES, DELETE OF СТУДЕНТ RESTRICTED);
Слайд 35Команды DСL (1)
Каждый пользователь в среде SQL имеет идентификационное имя
или идентификационный номер, называемый согласно ANSI ID (Идентификатором Доступа). Команда
сопровождается ID пользователя, который вводится при выполнении процедуры входа в СУБД.
Слайд 36Команды DСL (2)
SELECT – пользователь может выполнять запросы в таблице.
INSERT,
UPDATE, DELETE – пользователь может выполнять соответствующую команду.
REFERENCES – пользователь
имеет право определить внешний ключ, который ссылается на столбцы таблицы как на родительский ключ.
INDEX – привилегия дает право создавать индекс.
SYNONYM – привилегия дает право создавать синоним.
ALTER – пользователь имеет право выполнять команду ALTER TABLE.
Слайд 37Команды DСL (3)
Привилегия предоставляется командой GRANT (ДОПУСК) согласно следующему синтаксису:
GRANT
ON < таблица > TO < ID_пользователя >;
Слайд 38Транзакции в SQL
В языке SQL транзакция завершается вводом команды COMMIT
WORK или ROLLBACK WORK. Команда COMMIT WORK закрепляет все изменения,
а команда ROLLBACK WORK отменяет их.
Синтаксис команд:
COMMIT WORK;
ROLLBACK WORK;
Слайд 39Вложенный SQL
while not eof (input) do
begin
readln (id, pers);
EXEC SOL INSERT
INTO Salespeople VALUES (:id, :pers);
end;