Скачать презентацию Язык SQL Операторы языка Язык SQL Сейчас Скачать презентацию Язык SQL Операторы языка Язык SQL Сейчас

Л2_язык_SQL_Операторы.ppt

  • Количество слайдов: 26

Язык SQL. Операторы языка Язык SQL. Операторы языка

Язык SQL Сейчас SQL — это стандарт интерфейса с реляционными СУБД. SQL - Structured Язык SQL Сейчас SQL — это стандарт интерфейса с реляционными СУБД. SQL - Structured Query Language — «структурированный язык запросов» . Первый международный стандарт языка SQL был принят в 1986 г. После этого был принят ряд стандартов SQL, последний – в 2008 г. Операторы SQL делятся на: Ø операторы определения данных (Data Definition Language, DDL) – CREATE создает объект БД (саму базу, таблицу, представление пользователя и т. д. ) – ALTER изменяет объект – DROP удаляет объект

Операторы SQL Ø операторы манипуляции данными (Data Manipulation Language, DML) – SELECT считывает данные, Операторы SQL Ø операторы манипуляции данными (Data Manipulation Language, DML) – SELECT считывает данные, удовлетворяющие заданным условиям – INSERT добавляет новые данные – UPDATE изменяет существующие данные – DELETE удаляет данные Ø операторы определения доступа к данным (Data Control Language, DCL) – GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом – REVOKE отзывает ранее выданные разрешения – DENY задает запрет, имеющий приоритет над разрешением

Операторы SQL Ø операторы управления транзакциями (Transaction Control Language, TCL) – COMMIT применяет транзакцию. Операторы SQL Ø операторы управления транзакциями (Transaction Control Language, TCL) – COMMIT применяет транзакцию. – ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции. – SAVEPOINT делит транзакцию на более мелкие участки. Язык SQL является декларативным, т. е. с помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать, а не то, как это сделать.

Формы языка SQL: Ø Интерактивный SQL - позволяет конечному пользователю в интерактивном режиме выполнять Формы языка SQL: Ø Интерактивный SQL - позволяет конечному пользователю в интерактивном режиме выполнять SQL-операторы. Ø Статический SQL - может реализовываться как встроенный SQL или модульный SQL. Операторы статического SQL определены уже в момент компиляции программы. Ø Динамический SQL - позволяет формировать операторы SQL во время выполнения программы. Ø Встроенный SQL - позволяет включать операторы SQL в код программы на другом языке программирования (например, С++).

primary key – однозначно (уникально) идентифицирует каждую запись в таблице. foreing key ссылочное ограничение primary key – однозначно (уникально) идентифицирует каждую запись в таблице. foreing key ссылочное ограничение для организации связи между двумя таблицами.

Схема БД ORDERS Onum - PK … Cnum - FK Snum - FK CUCTOMERS Схема БД ORDERS Onum - PK … Cnum - FK Snum - FK CUCTOMERS Cnum - PK Cname City Rating Snum - FK SALESPEOPLE Snum - PK Sname City Comm

 Таблица “Persons”: P_Id Last. Name First. Name Address City 1 2 3 Hansen Таблица “Persons”: P_Id Last. Name First. Name Address City 1 2 3 Hansen Svendson Pettersen Ola Tove Kari Sandnes Stavanger Timoteivn 10 Borgvn 23 Storgt 20 P_Id – первичный ключ Таблицы “Persons”. Таблица “Orders”: O_Id 1 2 3 4 Order. No 77895 44678 224562 P_Id 3 3 2 1 O_Id – первичный ключ Таблицы “Orders”, P_Id – внешний ключ Таблицы “Orders”.

Описание взаимосвязи между таблицами “Persons” и “Orders”: CREATE TABLE Orders ( O_Id int NOT Описание взаимосвязи между таблицами “Persons” и “Orders”: CREATE TABLE Orders ( O_Id int NOT NULL, -- PRIMARY KEY Order. No int NOT NULL, P_Id int, -- FOREIGN KEY PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) )

CREATE TABLE (синтаксис) CREATE TABLE table_name ( { < column_definition > | < table_constraint CREATE TABLE (синтаксис) CREATE TABLE table_name ( { < column_definition > | < table_constraint > } [ , . . . n ] ) < column_definition > : : = { column_name data_type } [ { DEFAULT constant_expression} ] [ < column_constraint > [. . . n ] ] < column_constraint > : : = [ CONSTRAINT constraint_name ] { [ NULL | NOT NULL ] | [ PRIMARY KEY | UNIQUE ] } } table_name - имя новой таблицы, column_name - имя столбца в таблице. DEFAULT - указывает значение для столбца, если оно не было явным образом задано во время вставки.

CREATE TABLE (продолжение) < table_constraint > : : = [ CONSTRAINT constraint_name ] { CREATE TABLE (продолжение) < table_constraint > : : = [ CONSTRAINT constraint_name ] { [ { PRIMARY KEY | UNIQUE } { ( column [ , . . . n ] ) } ] | FOREIGN KEY ( column [ , . . . n ] ) REFERENCES ref_table [ ( ref_column [ , . . . n ] ) ] } CONSTRAINT - необязательное ключевое слово, указывающее начало определения ограничения PRIMARY KEY, UNIQUE или FOREIGN KEY. Ограничения — это особые свойства, обеспечивающие целостность данных и создающие для таблицы и ее столбцов индексы особых типов.

Ограничения PRIMARY - ограничение, с помощью уникального индекса устанавливающее целостность сущностей в одном или Ограничения PRIMARY - ограничение, с помощью уникального индекса устанавливающее целостность сущностей в одном или нескольких столбцах. В таблице можно создать только одно ограничение PRIMARY KEY. UNIQUE - ограничение, с помощью уникального индекса обеспечивающее целостность сущностей в одном или нескольких столбцах. Столбцы в ограничении UNIQUE могут иметь значение NULL, но каждому столбцу можно задать только одно значение NULL. В таблице возможно наличие нескольких ограничений UNIQUE. FOREIGN KEY. . . REFERENCES - ограничение, обеспечивающее ссылочную целостность данных в столбце. Ограничение FOREIGN KEY требует, чтобы каждое значение в данном столбце существовало и в указанном столбце в ссылочной таблице.

Поддержание ссылочной целостности (referential integrity) Целостность (от англ. integrity – сохранность, неприкосновенность, целостность) – Поддержание ссылочной целостности (referential integrity) Целостность (от англ. integrity – сохранность, неприкосновенность, целостность) – понимается как правильность (корректность, однозначность, непротиворечивость) данных в любой момент времени. Каждая строка внешнего ключа должна однозначно ссылаться на одно и только одно значение (строку) первичного ключа. Если это условие выполняется, то система находится в состоянии ссылочной целостности. Ссылочная целостность поддержтвается с помощью ограничения FOREIGN KEY.

ALTER TABLE Позволят производить различные операции с таблицей после ее создания. ALTER TABLE имя_таблицы ALTER TABLE Позволят производить различные операции с таблицей после ее создания. ALTER TABLE имя_таблицы {ADD [COLUMN] определение столбца } |{ALTER [COLUMN] имя_столбца {SET DEFAULT значение по умолчанию} |{DROP DEFAULT}} |{DROP [COLUMN] имя_столбца } |{ADD определение ограничений на таблицу } |{DROP CONSTRAINT имя_ограничения}; Примеры: ALTER TABLE Salespeople ADD fname char (10); ALTER TABLE Salespeople ALTER COLUMN city SET DEFAULT ‘London’;

DROP TABLE Удаляет таблицу. DROP TABLE имя_таблицы [ RESTRICT | CASCADE]; Последовательность действий при DROP TABLE Удаляет таблицу. DROP TABLE имя_таблицы [ RESTRICT | CASCADE]; Последовательность действий при удалении таблицы: 1. Удаляем все данные из таблицы – DELETE. 2. Аннулируем определение таблицы с помощью DROP TABLE.

INSERT, DELETE, UPDATE ввод, удаление, изменение данных INSERT INTO имя_таблицы [( имя_столбца , …)] INSERT, DELETE, UPDATE ввод, удаление, изменение данных INSERT INTO имя_таблицы [( имя_столбца , …)] { VALUES (значение , … )} | запрос | DEFAULT VALUES}; DELETE FROM имя_таблицы [{ WHERE предикат }]; UPDATE имя_таблицы SET {имя_столбца = { выражение для вычисления значения столбца | NULL | DEFAULT }} , … | { WHERE предикат}

Примеры 1. INSERT INTO Salespeople VALUES (1001, ‘Peel’, ‘London’, . 12); 2. INSERT INTO Примеры 1. INSERT INTO Salespeople VALUES (1001, ‘Peel’, ‘London’, . 12); 2. INSERT INTO Customers (city, cname, cnum) VALUES (‘London’, ‘Hoffman’, 2001); 3. INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE city = ‘London’; 4. DELETE FROM Salespeople WHERE snum = 1003; 5. UPDATE Customers SET rating = 200 WHERE snum = 1001; 6. UPDATE Salespeople SET comm = comm * 2 WHERE city = ‘London’;

Оператор выбора SELECT Базовая структура оператора SELECT имеет следующий вид: SELECT [ALL | DISTINCT] Оператор выбора SELECT Базовая структура оператора SELECT имеет следующий вид: SELECT [ALL | DISTINCT] <список полей> | * FROM <список таблиц> [WHERE <условие фильтрации (отбора) строк>] [GROUP BY <столбцы для группировки>] [HAVING <условие фильтрации (отбора) групп>] [ORDER BY <условие сортировки результата запроса>] Обязательными среди всех указанных параметров оператора SELECT является параметр FROM.

Оператор выбора SELECT Результатом выполнения оператора SELECT является набор данных (временная таблица), который затем Оператор выбора SELECT Результатом выполнения оператора SELECT является набор данных (временная таблица), который затем либо передается пользователю, запросившему данные, либо используется как источник данных для другого оператора SELECT в качестве подзапроса. SELECT может возвращать как сами значения столбцов, так и использовать их в составе агрегатных функций или других выражений.

Оператор выбора SELECT Вертикальная фильтрация с указанием порядка вывода атрибутов: SELECT поле 1[, поле Оператор выбора SELECT Вертикальная фильтрация с указанием порядка вывода атрибутов: SELECT поле 1[, поле 2, …] FROM имя_таблицы; Исключение дубликатов: Дубликаты – записи, значения полей которых полностью совпадают. -- вывод номеров хотя бы раз проданных товаров SELECT DISTINCT Prod_id FROM Outgoing; Выборка вычисляемых значений: Наравне с перечнем полей таблиц можно указывать выражения, вычисляемые на основе полей таблиц. SELECT Name “Имя”, (Procent / 100) “Доля” FROM Dealers;

Предложение WHERE Параметр WHERE служит для реализации операции горизонтальной фильтрации, то есть отбора строк, Предложение WHERE Параметр WHERE служит для реализации операции горизонтальной фильтрации, то есть отбора строк, удовлетворяющих определенному условию. Условие может содержать: Ø операторы сравнения: =, < , > , <= , >= , <>; Ø булевы операторы: AND, OR, NOT; Ø операторы проверки: § вхождения во множество: IN; § вхождение в диапазон: BETWEEN; § существования: EXISTS; § Удовлетворения шаблону: LIKE; Ø операторы сравнения с NULL: IS NULL, IS NOT NULL; Ø агрегатные функции: COUNT, SUM, AVG, MAX, MIN; Ø константы и выражения; Ø подзапросы.

Предложение WHERE (примеры) 1. SELECT * FROM Orders WHERE NOT ((odate = ’ 10/03/2012’ Предложение WHERE (примеры) 1. SELECT * FROM Orders WHERE NOT ((odate = ’ 10/03/2012’ AND snum > 1002) OR amt > 2000. 00); 2. SELECT AVG (comm*100) FROM Salespeople 3. SELECT * FROM Customers WHERE cname LIKE ‘G%’; . . . LIKE ‘P__L’; 4. SELECT * FROM Salespeople WHERE NOT city IN (‘London’, ‘San Jose’) OR city is NULL; 5. SELECT * FROM Salespeople WHERE (comm BETWEEN. 10 AND. 12); 6. SELECT MIN(Out_Date) FROM Outgoing WHERE Man_id=1;

Предложение GROUP BY позволяет указать способ разбиения полученного в результате выполнения запроса набора записей Предложение GROUP BY позволяет указать способ разбиения полученного в результате выполнения запроса набора записей на группы. С помощью GROUP BY из отдельного столбца (или столбцов) можно выделить подмножество значений (группу) и применить к нему агрегатную функцию. Все строки, где значение указанного в параметре GROUP BY столбца одно и тоже, попадут в одну группу. После этого для каждой из групп вычисляется указанная групповая функция. Например: 1. SELECT snum, MAX(amt) FROM Orders GROUP BY snum; 2. SELECT snum, odate, MAX(amt) FROM Orders GROUP BY snum, odate; Поиск max заказов продавцов за день.

Предложение HAVING Если предложение WHERE определяет предикат для фильтрации строк, то предложение HAVING применяется Предложение HAVING Если предложение WHERE определяет предикат для фильтрации строк, то предложение HAVING применяется после группировки для определения аналогичного предиката, фильтрующего группы но значениям агрегатных функции. В HAVING задаются критерии, по которым из результата исключаются отдельные группы точно так же, как в предложении WHERE отбрасываются отдельные строки. Например: SELECT snum, odate, MAX(amt) FROM Orders GROUP BY snum, odate HAVING MAX (amt) > 3000. 00; Выбираются все группы продавцов по дням, max сумма заказов у которых > 3000.

Предложение ORDER BY Таблицы представляют собой неупорядоченные множества и извлекаемые из них данные располагаются Предложение ORDER BY Таблицы представляют собой неупорядоченные множества и извлекаемые из них данные располагаются в произвольном порядке. ORDER BY используется для сортировки выходных данных. Параметр ASC – сортировка по возрастанию, (используется по умолчанию), DESC – по убыванию отдельно для каждого столбца. 1. SELECT * FROM Orders ORDER BY cnum DESC, amt ASC; 2. SELECT snum, COUNT (onum) FROM Orders GROUP BY snum ORDER BY 2 DESC; - Подсчитать количество заказов для каждого из продавцов.