СПб. ГУТ им. проф. М. А. Бонч-Бруевича БАЗЫ ДАННЫХ К. т. н. , доцент кафедры ИУС Феликс Васильевич Филиппов 9000096@mail. ru
Модели баз данных Иерархическая - Сетевая Уровень – Узел – Связь - Реляционная Любой узел может быть связан с любым
Реляционные базы данных РБД – это связанная информация в виде двумерных таблиц Синонимы: строка = запись столбец = поле таблица = ( файл, отношение)
Реляционные базы данных Файл – совокупность объектов БД: Таблиц (для хранения информации); Форм (для ввода и просмотра информации); Запросов (для отбора сведений); Отчетов (для подготовки данных к печати).
Особенности таблиц w Порядок строк (записей) - произволен w Все столбцы (поля) – поименованы и пронумерованы w Каждая строка, каждой таблицы – уникальна w Столбец, который однозначно идентифицирует каждую строку называется – первичный ключ (primary key). w Primary key – обеспечивает целостность данных.
Пример базы данных Таблица 1. Salespeople (Продавцы) snum sname city comm 1001 Peel London 0. 12 1002 Serres San Jose 0. 13 1004 Motika London 0. 11 1007 Rifkin Barcelona 0. 15 1003 Axelrod New York 0. 10 Таблица 3. Orders (Заказы) onum odate cnum snum 3001 18. 69 10/03/2008 1007 3003 767. 19 10/03/2008 2001 1001 3002 1900. 10 10/03/2008 2007 1004 3005 Таблица 2. Customers (Покупатели) amt 5160. 45 10/03/2008 2003 1002 3006 1098. 16 10/03/2008 1007 cnum cname city rating snum 3009 1713. 23 10/04/2008 2002 1003 2001 Hoffman London 1001 3007 75. 75 10/04/2008 2004 1002 2002 Giovanni Rome 200 1003 3008 4723. 00 10/05/2008 2006 1001 2003 Liu San Jose 200 1002 3010 1309. 95 10/06/2008 2004 1002 2004 Grass Berlin 300 1002 3011 9891. 88 10/06/2008 2006 1001 2006 Clemens London 1001 2008 Cisneros San Jose 300 1007 2007 Pireira Rome 1004
Характеристики и требования к СУБД 1. Производительность - время выполнения запросов - время выполнения операций импортирования БД из других форматов 2. Обеспечение целостности данных на уровне БД - встроенные средства для назначения первичного ключа - средства поддержания ссылочной целостности 3. Обеспечение безопасности - шифрование данных и программ - защита паролем - ограничение уровня доступа
Характеристики и требования к СУБД (продолжение) 4. Работа в многопользовательских средах - блокировка БД, файлов, записей, полей 5. Импорт - экспорт - возможность обработки СУБД информации, подготовленной другими программами и наоборот 6. Доступ к данным с помощью SQL 7. Инструментальные средства разработки прикладного ПО - язык программирования - средства реализации меню, экранных форм, ввода-вывода и генерации отчетов SQL – Structured Query Language (Структурированный язык запросов). Используется при работе с реляционными БД во всех современных СУБД: Fox. Pro, Paradox, My. SQL, MS Access, IBM DB 2 SQL – стандарт ANSI, ISO архитектуры Файл-Сервер и Клиент-Сервер.
Централизованные базы данных Удаленный (сетевой) доступ – 2 классические архитектуры Файл - сервер Файл-сервер Передача файлов БД Рабочие станции Хранение файлов Клиент - сервер Обработка файлов Сервер СУБД Передача данных извлеченных из БД Рабочие станции СУБД – программный комплекс, предназначенный для реализации всей совокупности функций, связанных с созданием и эксплуатацией БД. БД
SQL запросы Запрос наиболее часто используемый аспект SQL. Есть USERs, которые только запросы (из всего языка SQL) и используют. Алгоритм выборки 1. 2. 3. 4. 5. 6. Рассмотрим строку таблицы. Проверим - является ли эта строка одной из строк которая нам нужна. Если да, сохраним ее где-нибудь пока вся таблица не будет проверена. Проверим имеются ли другие строки в таблице. Если имеются, возвратимся к шагу 1. Если строк больше нет, выведем все значения сохраненные на шаге 3.
SQL запросы Все запросы конструируются на базе одной команды SELECT (ВЫБОР): SELECT snum, sname, city, comm FROM Salespeople; ==== SQL Execution Log ===== | SELECT snum, sname, sity, comm | | FROM Salespeople; | | =================| | snum sname city comm | | ---------------- | | 1001 Peel London 0. 12 | | 1002 Serres San Jose 0. 13 | | 1004 Motika London 0. 11 | | 1007 Rifkin Barcelona 0. 15 | | 1003 Axelrod New York 0. 10 | ================= SELECT * FROM Salespeople;
SQL запросы Выбор определенных столбцов = SQL Execution Log == | SELECT sname, сomm | | FROM Salespeople; | | =========| | sname comm | | --------| | Peel 0. 12 | | Serres 0. 13 | | Motika 0. 11 | | Rifkin 0. 15 | | Axelrod 0. 10 | ========== = SQL Execution Log = | SELECT snum, comm | | FROM Salespeople; | | ========= | snum comm | | ------| | 1001 0. 12 | | 1002 0. 13 | | 1004 0. 11 | | 1007 0. 15 | | 1003 0. 10 | =========
SQL запросы Перестановка столбцов ===== SQL Execution Log ==== | SELECT odate, snum, onum, amt | | FROM Orders; | | ------------------------------| | odate snum onum amt | | ---------------- | | 10/03/2008 1007 3001 18. 69 | | 10/03/2008 1001 3003 767. 19 | | 10/03/2008 1004 3002 1900. 10 | | 10/03/2008 1002 3005 5160. 45 | | 10/03/2008 1007 3006 1098. 16 | | 10/04/2008 1003 3009 1713. 23 | | 10/04/2008 1002 3007 75. 75 | | 10/05/2008 1001 3008 4723. 00 | | 10/06/2008 1002 3010 1309. 95 | | 10/06/2008 1001 3011 9891. 88 | =================
SQL запросы Устранение избыточных строк = SQL Execution Log | SELECT snum | | FROM Orders; | | ---------------| | snum | | ------| | 1007 | | 1001 | | 1004 | | 1002 | | 1007 | | 1003 | | 1002 | | 1001 | ========= Ключевое слово DISTINCT ==== SQL Execution Log ==== | SELECT DISTINCT snum | | FROM Orders; | | ---------------------| | snum | | ------| | 1007 | | 1001 | | 1004 | | 1002 | | 1003 | =============
SQL запросы Квалифицированный выбор строк Ключевое слово WHERE city = ‘London’ ======= SQL Execution Log ======= | SELECT sname, city | | FROM Salespeople | | WHERE city = 'London' | | =============== | | sname city | | --------| | Peel London | | Motika London | ================ Условие (предикат)
SQL запросы Квалифицированный выбор строк Ключевое слово WHERE rating = 100 ======== SQL Execution Log ===== | SELECT * | | FROM Customers | | WHERE rating = 100; | | ==================== | | сnum cname city rating snum | | -------------| | 2001 Hoffman London 1001 | | 2006 Clemens London 1001 | | 2007 Pereira Rome 1001 | ===================== Условие
Контрольные вопросы 1. Напишите команду SELECT, которая бы вывела номер заказа, сумму, и дату для всех строк из таблицы Orders. 2. Напишите запрос, который вывел бы все строки из таблицы Customers, с номером продавца = 1001. 3. Напишите запрос, который вывел бы таблицу со столбцами в следующем порядке: city, sname, snum, comm. 4. Напишите команду SELECT, которая вывела бы рейтинг (rating), сопровождаемый именем каждого покупателя в San Jose. 5. Напишите запрос, который вывел бы значения snum всех продавцов в текущем порядке из таблицы Orders без каких бы то ни было повторений.
SQL запросы Операторы отношения и логические операторы Операторы отношения (Реляционные операторы) Логические операторы (Булевы операторы) = - равно AND - логическое И > - больше OR - логическое ИЛИ < - меньше NOT - логическое НЕ >= - больше или равно <= - меньше или равно <> - не равно
SQL запросы Составное условие WHERE city = ‘San Jose’ AND rating > 200 ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE city = 'San Jose' | | AND rating > 200; | ==================== | сnum cname city rating snum | | -------------- | | 2008 Cirneros San Jose 300 1007 | ==================== Составное условие
SQL запросы Составное условие WHERE city = ‘San Jose’ OR rating > 200 ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE city = 'San Jose' | | OR rating > 200; | | =================== | | сnum cname city rating snum | | -------------- | | 2003 Liu San Jose 200 1002 | | 2004 Grass Berlin 300 1002 | | 2008 Cirneros San Jose 300 1007 | ==================== Составное условие
SQL запросы Составное условие WHERE city = NOT ( ‘San Jose’ OR rating > 200 ) ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE NOT ( city = 'San Jose' | | OR rating > 200); | | =================== | | сnum cname city rating snum | | -------------- | | 2001 Hoffman London 1001 | | 2002 Giovanni Rome 200 1003 | | 2006 Clemens London 1001 | | 2007 Pereira Rome 1004 | ==================== Составное условие
Контрольные вопросы 6. Напишите запрос, который выведет все заказы со значениями суммы выше чем 1000. 7. Напишите запрос, который выведет поля sname и city для всех продавцов в Лондоне с комиссионными выше 0. 10. 8. Напишите запрос к таблице Покупатели, который определит всех покупателей с рейтингом =< 100, если они не в Риме. 9. Что может быть выведено в результате следующего запроса ? SELECT * FROM Orders WHERE NOT ((odate = 10/03/2008 OR snum > 1006) AND amt > = 1500 ); 10. Как можно проще переписать такой запрос ? SELECT snum, sname, city, comm FROM Salespeople WHERE ( comm > + 0. 12 OR comm < 0. 14 );
SQL запросы Специальные операторы для использования в условиях IN - в списке (перечне) BETWEEN - между LIKE - подобно (похоже) IS NULL - пусто (не определено)
SQL запросы Специальный оператор IN SELECT * FROM Salespeople WHERE city = 'Barcelona' OR city = 'London'; Проще SELECT * FROM Salespeople WHERE city IN ( 'Barcelona', 'London' );
SQL запросы Специальный оператор IN WHERE snum IN ( 1001, 1007, 1004); ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE snum IN ( 1001, 1007, 1004 ); | | =================== | | snum cname city rating snum | | ------------- | | 2001 Hoffman London 1001 | | 2006 Clemens London 1001 | | 2008 Cisneros San Jose 300 1007 | | 2007 Pereira Rome 1004 | ====================
SQL запросы Специальный оператор BETWEEN WHERE comm BETWEEN 0. 10 AND 0. 12; 0 ==== SQL Execution Log ====== | SELECT * | | FROM Salespeople | | WHERE comm BETWEEN 0. 10 AND 0. 12; | | ==================| | snum sname city comm | | ---------------- | | 1001 Peel London 0. 12 | | 1004 Motika London 0. 11 | | 1003 Axelrod New York 0. 10 | ==================
SQL запросы Специальный оператор BETWEEN WHERE cname BETWEEN ‘A’ AND ‘G’; ‘G’ ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE cname BETWEEN 'A' AND 'G'; | | =================== | | cnum cname city rating snum | | ------------- | | 2006 Clemens London 1001 | | 2008 Cisneros San Jose 300 1007 | ====================
SQL запросы Специальный оператор LIKE Имеются два типа групповых символов используемых с LIKE: символ подчеркивания ( _ ) замещает любой одиночный символ. • Например, 'b_t' будет соответствовать словам 'bat' или 'bit', но не будет соответствовать 'brat'. знак процента (%) замещает последовательность любого числа символов. • Например '%p%t' будет соответствовать словам 'put', 'posit', или 'opt', но не 'spite'.
SQL запросы Специальный оператор LIKE (примеры) WHERE cname LIKE 'G%'; LIKE ‘P__L%'; ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE cname LIKE 'G%'; | | =================== | | cnum cname city rating snum | | ------------- | | 2002 Giovanni Roma 200 1003 | | 2004 Grass Berlin 300 1002 | ==================== = SQL Execution Log = | SELECT cname | | FROM Salespeople | | WHERE cname | | LIKE ‘P__L%'; | | ========== | cname | | -----| | Peel | ==========
SQL запросы Специальный оператор IS NULL (примеры) SELECT * FROM Customers WHERE city IS NULL; ====== SQL Execution Log ====== | SELECT * | | FROM Customers | | WHERE city NOT NULL; | | =================== | cnum 2001 2002 2003 2004 2006 2008 2007 cname Hoffman Giovanni Liu Grass Clemens Cisneros Pireira city London Rome San Jose Berlin London San Jose Rome rating 100 200 300 100 snum 1001 1003 1002 1001 1007 1004
Контрольные вопросы 11. Напишите два запроса, которые могли бы вывести все заказы на 3 и 4 Октября 2008. 12. Напишите запрос, который выберет всех заказчиков, обслуживаемых продавцами Peel или Motika. ( Подсказка: из наших таблицах, поле snum связывает вторую таблицу с первой ). 13. Напишите запрос, который может вывести всех заказчиков, чьи имена начинаются с буквы попадающей в диапазон от A до G. 14. Напишите запрос, который выберет всех покупателей чьи имена начинаются с буквы C. 15. Напишите запрос который выберет все заказы, имеющие нулевые значения или NULL в поле amt (сумма).
SQL запросы Агрегатные функции COUNT - подсчитывает число не нулевых значений поля выбранных в запросе строк SUM - вычисляет арифметическую сумму всех выбранных значений данного (числового) поля AVG - вычисляет среднее значение всех выбранных значений данного (числового) поля MAX - находит максимальное из всех выбранных значений данного поля MIN - находит минимальное из всех выбранных значений данного поля
SQL запросы Агрегатные функции SUM и AVG (примеры) = SQL Execution Log = | SELECT SUM (amt) | | FROM Orders | | ========== | -----| | 26658. 4 | ========== = SQL Execution Log = | SELECT AVG (amt) | | FROM Orders | | ========== | ----| | 2665. 84 | ==========
SQL запросы Агрегатная функция COUNT (примеры) ======= SQL Execution Log ====== | SELECT COUNT (DISTINCT snum) | | FROM Orders | | =============== | | -----| | 5 | ================ = SQL Execution Log = | SELECT COUNT (*) | | FROM Customers | | ========== | -----| | 7 | ==========
SQL запросы Вспомогательные операторы GROUP BY - позволяет определять подмножества значений отдельного поля и применять функции агрегирования к полученному подмножеству HAVING - определяет критерий, по которому определенные группы строк исключаются из числа выходных данных
SQL запросы Вспомогательный оператор GROUP BY (пример) ==== SQL Execution Log ===== | SELECT snum, MAX (amt) | | FROM Orders | | GROUP BY snum; | | ============= | | snum | | --------| | 1001 9891. 88 | | 1002 5160. 45 | | 1003 1713. 23 | | 1004 1900. 10 | | 1007 1098. 16 | ============== Максимальная сумма продажи у каждого продавца ===== SQL Execution Log ======= |SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate; | |============== | | snum odate | | -----------| | 1001 10/03/2008 767. 19 | | 1001 10/05/2008 4723. 00 | | 1001 10/06/2008 9891. 88 | | 1002 10/03/2008 5160. 45 | | 1002 10/04/2008 75. 75 | | 1002 10/06/2008 1309. 95 | | 1003 10/04/2008 1713. 23 | | 1004 10/03/2008 1900. 10 | | 1007 10/03/2008 1098. 16 | ===============
SQL запросы Вспомогательный оператор HAVING (пример) ===== SQL Execution Log ======= |SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate; | |============== | | snum odate | | -----------| | 1001 10/03/2008 767. 19 | | 1001 10/05/2008 4723. 00 | | 1001 10/06/2008 9891. 88 | | 1002 10/03/2008 5160. 45 | | 1002 10/04/2008 75. 75 | | 1002 10/06/2008 1309. 95 | | 1003 10/04/2008 1713. 23 | | 1004 10/03/2008 1900. 10 | | 1007 10/03/2008 1098. 16 | =============== SQL Execution Log ======= |SELECT snum, odate, MAX (amt) | | FROM Orders | | GROUP BY snum, odate | | HAVING MAX(amt) > 3000. 00; | |============== | | snum odate | | -----------| | 1001 10/05/2008 4723. 00 | | 1001 10/06/2008 9891. 88 | | 1002 10/03/2008 5160. 45 | ===============
Контрольные вопросы 16. Напишите запрос который сосчитает число всех заказов, сделанных 3 октября. 17. Напишите запрос который сосчитал бы число различных не-NULL значений поля city в таблице Покупателей. 18. Напишите запрос который выбрал бы наименьшую сумму для каждого покупателя. 19. Напишите запрос который бы выбирал покупателей в алфавитном порядке, чьи имена начинаются с буквы G. 20. Напишите запрос который выбрал бы высший рейтинг в каждом городе.
SQL запросы Форматирование результатов (отчеты) Использование выражений (*, /, +, -) Вставка комментариев (‘…’) Упорядочивание строк (ORDER BY, ASC, DESC, по номеру столбца)
SQL запросы Форматирование результатов (примеры) ===== SQL Execution Log ======== | SELECT snum, sname, city, comm * 100, ‘%’ | | FROM Salespeople; | |===================| | snum sname city | | --------------- ---| | 1001 Peel London 12. 00 % | | 1002 Serres San Jose 13. 00 % | | 1004 Motika London 11. 00 % | | 1007 Rifkin Barcelona 15. 00 % | | 1003 Axelrod New York 10. 00 % | ====================
SQL запросы Форматирование результатов (примеры) ====== SQL Execution Log ===== | SELECT ‘На', odate, ', ' сделано заказов ' , | | COUNT (DISTINCT onum), ' шт ' | | FROM Orders | | GROUP BY odate; | |=================== | | odate | | ------------ ------ | | На 10/03/2008 , сделано заказов 5 шт. | | На 10/04/2008 , сделано заказов 2 шт. | | На 10/05/2008 , сделано заказов 1 шт. | | На 10/06/2008 , сделано заказов 2 шт. | ====================
SQL запросы Форматирование результатов (примеры) ===== SQL Execution Log ====== | SELECT * FROM Orders | | ORDER BY cnum DESC, amt DESC; | |=================== | onum amt odate cnum snum | | ------------------ | | 3006 1098. 16 10/03/2008 1007 | | 3001 18. 69 10/03/2008 1007 | | 3002 1900. 10 10/03/2008 2007 1004 | | 3011 9891. 88 10/06/2008 2006 1001 | | 3008 4723. 00 10/05/2008 2006 1001 | | 3010 1309. 95 10/06/2008 2004 1002 | | 3007 75. 75 10/04/2008 2004 1002 | | 3005 5160. 45 10/03/2008 2003 1002 | | 3009 1713. 23 10/04/2008 2002 1003 | | 3003 767. 19 10/03/2008 2001 1001 | ====================
SQL запросы Форматирование результатов (примеры) snum sname city comm 1001 Peel London 0. 12 1002 Serres San Jose 0. 13 1004 Motika London 0. 11 1007 Rifkin Barcelona 0. 15 1003 Axelrod New York 0. 10 ==== SQL Execution Log ====| | SELECT sname, comm | | FROM Salespeople | | ORDER BY 2 DESC; | | ============| | sname comm | | -------| | Rifkin 0. 15 | | Serres 0. 13 | | Peel 0. 12 | | Motika 0. 11 | | Axelrod 0. 10 | =============
Контрольные вопросы 21. Предположим что каждый продавец имеет 12% комиссионных. Напишите запрос к таблице Заказов, который мог бы вывести номер заказа, номер продавца, и сумму комиссионных продавца для этого заказа. 22. Напишите запрос к таблице Покупателей, который мог бы найти высший рейтинг в каждом городе. Вывод должен быть в такой форме: Для города (city), высший рейтинг: (rating). 23. Напишите запрос, который выводил бы список покупателей в нисходящем порядке. Вывод поля рейтинга ( rating ) должен сопровождаться именем заказчика и его номером. 24. Напишите запрос который бы выводил общие рейтинги на каждый день и помещал результаты в нисходящем порядке.
SQL запросы Объединение таблиц Имена полей (столбцов): Salespeople. snum Salespeople. city Orders. odate Задача. Поставить в соответствие каждому продавцу его покупателей в городе, в котором они живут. ==== SQL Execution Log ===== | SELECT Customers. cname, | | Salespeople. sname, Salespeople. city | | FROM Salespeople, Customers | | WHERE Salespeople. city = Customers. city | | ================== | | cname sname city | | -----------------| | Hoffman Peel London | | Liu Serres San Jose | | Cisneros Serres San Jose | | Hoffman Motika London | | Clemens Motika London | ==================
SQL запросы Объединение более двух таблиц Задача. Найти все заказы покупателей не находящихся в тех городах, где находятся их продавцы. ======== SQL Execution Log ====== === | SELECT onum, cname, Orders. cnum, Orders. snum | | FROM Salespeople, Customers, Orders | | WHERE Customers. city < > Salespeople. city | | AND Orders. cnum = Customers. cnum | | AND Orders. snum = Salespeople. snum; | | ======================= | | onum cname cnum snum | | ----------| | 3001 Cisneros 2008 1007 | | 3002 Pereira 2007 1004 | | 3006 Cisneros 2008 1007 | | 3009 Giovanni 2002 1003 | | 3007 Grass 2004 1002 | | 3010 Grass 2004 1002 | ========================
SQL запросы Псевдонимы SELECT first. cname, second. cname, first. rating FROM Customers first, Customers second WHERE first. rating = second. rating; ===== SQL Execution Log ==== | Giovanni 200 | | Giovanni Liu 200 | | Liu Giovanni 200 | | Liu 200 | | Grass 300 | | Grass Cisneros 300 | | Clemens Hoffman 100 | | Clemens Pereira 100 | | Cisneros Grass 300 | | Cisneros 300 | | Pereira Hoffman 100 | | Pereira Clemens 100 | | Pereira 100 | ============== Устранение избыточности: AND first. cname < second. cname; === SQL Execution Log === | cname rating | | ----------- | | Hoffman Pereira 100 | | Giovanni Liu 200 | | Clemens Hoffman 100 | | Gisneros Grass 300 | ============
SQL запросы Подзапросы Задача. Известно только имя продавца Motika. Надо узнать все выполненные им заказы из таблицы Orders ====== SQL Execution Log ==== | SELECT * | | FROM Orders | | WHERE snum = | | (SELECT snum | | FROM Salespeople | | WHERE sname = 'Motika'); | |===================| | onum amt odate cnum snum | | -------------- | | 3002 1900. 10 10/03/2008 2007 1004 | ===================
SQL запросы Объединение запросов Используется специальный оператор UNOIN === SQL Execution Log === | SELECT snum, sname | | FROM Salespeople | | WHERE city = 'London' | | UNION | | SELECT cnum, cname | | FROM Customers | | WHERE city = 'London'; | ============ | -------| | 1001 Peel | | 1004 Motika | | 2001 Hoffman | | 2006 Climens | =============
Контрольные вопросы 25. Напишите запрос формирующий список номеров заказов сопровождающихся именем покупателя, который делал эти заказы. 26. Напишите запрос, который бы выдавал имена продавца и покупателя для каждого заказа после номера заказа. 27. Напишите запрос, который бы выводил всех покупателей обслуживаемых продавцом с комиссионными выше 12%. Выведите имя покупателя, имя продавца, и ставку комиссионных продавца. 28. Напишите запрос который вычислил бы сумму комиссионных продавца для каждого заказа покупателя с рейтингом выше 100.
SQL команды модификации DML Data Manipulate Language INSERT ВСТАВИТЬ UPDATE МОДИФИЦИРОВАТЬ DELETE УДАЛИТЬ
SQL команды модификации (примеры) Примеры вставки строк INSERT INTO Salespeople VALUES (1001, 'Peel', 'London', 0. 12); INSERT INTO Salespeople VALUES (1005, ‘Bogner', ‘Adelaida', 0. 11); INSERT INTO Customers (city, cnamе, cnum) VALUES ('London', 'Honman', 2001); Примеры удаления строк DELETE FROM Salespeople WHERE snum = 1003; DELETE FROM Salespeople; DROP TABLE; Примеры модификации строк UPDATE Customers SET rating = 200 WHERE snum = 1001; UPDATE Customers SET sum = 1004 WHERE snum = 1002;
SQL команды создания и удаления объектов БД DDL Data Definision Language CREATE TABLE СОЗДАТЬ ТАБЛИЦУ DROP TABLE УДАЛИТЬ ТАБЛИЦУ CREATE INDEX СОЗДАТЬ ИДЕКС DROP INDEX УДАЛИТЬ ИНДЕКС CREATE VIEW СОЗДАТЬ ПРЕДСТАВЛЕНИЕ
SQL команды создания и удаления объектов (примеры) Добавочные ограничения CREATE TABLE Salespeople ( snum integer, NOT NULL PRIMARY KEY sname char (10), NOT NULL UNIQUE city char (10), comm declmal ); CREATE UNIQUE INDEX Custid ON Customers (cnum); DROP INDEX имя индекса; DROP TABLE имя таблицы;
SQL команды создания объектов (примеры) CREATE VIEW Londonstaff AS SELECT * FROM Salespeople WHERE City = ‘London’ Представление Londonstaff snum sname city comm 1001 Peel London 0. 12 1004 Motika London 0. 11
SQL команды предоставления стандартных привилегий GRANT ПРЕДОСТАВИТЬ REVOKE ЛИШИТЬ Что? Чего? SELECT, UPDATE, INSERT, DELETE, ALL
SQL команды предоставления стандартных привилегий (примеры) Предоставление кому-то чего-то: GRANT SELECT ON Customers TO Marie; GRANT UPDATE (city, comm) ON Salespeople TO Dima; GRANT ALL PRIVILEGES ON Customers TO George; Предоставление всем чего-то: GRANT SELECT ON Orders TO PUBLIC; Лишение кого-то чего-то: REVOKE INSERT, DELETE ON Customers FROM George;
SQL команды и транзакции COMMIT WORK; - подтверждение ROLLBACK WORK; - отмена SET AUTOCOMMIT ON; SET AUTOCOMMIT OFF;