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