- •1. Общее представление о базе данных. Примеры.
- •2. Назначение и основные элементы бд.
- •3. Назначение, основные функции и понятие субд.
- •4. Логическая структура субд.
- •5. Трёхуровневая архитектура бд.
- •6. Жизненный цикл базы данных.
- •7. Архитектура субд, как комплекса программ.
- •8. Краткий обзор dbf–ориентированных локальных субд.
- •9. Краткий обзор серверов баз данных. Informix, Sybase, ms sql, Oracle.
- •10. Модель субд типа «Файл–Сервер». Распределение функций.
- •11. Модель субд типа «Клиент/Сервер». Распределение функций.
- •12. Двухуровневая архитектура «Клиент/Сервер». "Толстый" и "тонкий" клиенты.
- •13. Трехуровневая архитектура «Клиент/Сервер». Api–компонент системы.
- •14. Типы моделей бд. Иерархическая и сетевая модели данных.
- •15. Реляционная модель данных. Структура. Общее представления.
- •16. Понятие домена.
- •17. Отношения, атрибуты и кортежи.
- •18. Формализация отношений в виде таблиц. Сравнение отношений и таблиц.
- •19. Единство трёхуровневой структуры бд.
- •20. Потенциальные ключи. Первичные и альтернативные ключи.
- •21. Null–значения. Целостность сущностей.
- •22. Внешние ключи. Ссылочная целостность. Родительские и дочерние отношения.
- •23. Индексные файлы. Сортировка файлов бд.
- •24. Поиск записей в файле бд. Индексные ключи. Алгоритмы поиска.
- •25. Стратегии ссылочной целостности.
- •26. Основы реляционной алгебры. Операции «Объединение», «Пересечение», «Вычитание», «Де–картово произведение». Примеры.
- •27. Специальные реляционные операции: «Выборка», «Проекция», «Соединение», «Деление». Примеры.
- •28. Понятие о sql и pl/sql. Типы команд sql.
- •29. Типы данных в sql.
- •30. Команды языка определения данных. Create table.
- •31. Команда select. Примеры. Формальное описание.
- •32. Предложение union.
- •33. Предложения where, having, group by
- •34. Команды insert, update, delete.
- •35. Команды управления доступа к данным. Grant, revoke, set role.
- •36. Управление транзакциями с помощью sql.
- •37. Процедурное расширение sql. Структура программы в pl/sql.
- •38. Типы данных определяемые пользователем record и table.
- •39. Предложение into для присваивания переменным значений бд.
- •40. Курсоры.
- •41. Операторы управления if. . . Then. . . , go to.
- •42. Циклы loop, while, for.
- •43. Обработка ошибок в pl/sql. Встроенные исключительные ситуации.
- •44. Процедура Raise_Application_Error.
- •45. Исключительные ситуации, определяемые пользователем.
- •46. Анонимные блоки pl/sql. Процедуры, функции и пакеты.
- •47. Триггеры базы данных. Операторные и строчные триггеры. Примеры.
- •48. Представления.
- •49. Снимки.
- •50. Последовательности.
- •51. Библиотечные функции sql. Числовые функции.
- •52. Библиотечные функции sql. Функции символьного типа.
- •53. Библиотечные функции sql. Функции для работы с датой и временем.
- •54. Библиотечные функции sql. Функции преобразования типов.
- •55. Библиотечные функции sql. Групповые функции.
- •56. Теория проектирования реляционных баз данных. Избыточность. Аномалии обновления, включения и удаления.
- •57. Функциональные зависимости. Примеры.
- •58. Аксиомы Армстронга функциональных зависимостей.
- •59. Замыкания множества зависимостей. Примеры.
- •60. Замыкания множества атрибутов. Примеры
- •61. Неприводимое множество зависимостей.
- •62. Понятие нормальной формы. Иерархия нф.
- •63. Первая нормальная форма. Примеры.
- •64. Декомпозиция без потерь. Теорема Хеза.
- •65. Вторая нормальная форма. Примеры.
- •66. Третья нормальная форма. Примеры.
- •67. Сохранение зависимостей.
- •68. Нормальная форма Бойса–Кодда. Примеры.
- •69. Многозначные зависимости.
- •70. Четвертая нормальная форма. Примеры.
- •71. Зависимости соединения.
- •72. Пятая нормальная форма. Примеры.
- •73. Итоговая схема процедуры нормализации.
- •74. Альтернативные нормальные формы.
- •75. Основные понятия семантического моделирования. Er–диаграммы. Сущность.
- •76. Экземпляр, атрибут, ключ и связи сущностей. Определения и обозначения.
- •77. Пример проектирования простой er–модели.
- •78. Концептуальные и физические er–модели. Примеры.
- •79. Понятие экспертной системы (эс), как специального типа информационной системы.
- •80. Обобщенная модель экспертной системы.
- •81. Основные характеристики эс.
- •82. Базовые функции эс. Приобретение знаний. Представление знаний.
- •83. Управление процессом поиска решений. Разъяснение принятого решения.
- •84. Понятие знания. Основные признаки знания.
- •85. Типы эс.
- •86. Представление знаний в эс. Сетевое представление знаний.
- •87. Представление знаний в эс. Фреймовая модель представление знаний.
- •88. Представление знаний в эс. Продукционная модель знаний. Стратегия управления
- •89. Методология разработки эс.
- •90. Понятие объектно – ориентированной бд.
- •91. Языки программировния ообд.
- •92. Языки запросов ообд.
34. Команды insert, update, delete.
Значения могут быть помещены и удалены из полей тремя командами языка DML (Язык Манипулирования Данными): INSERT (ВСТАВИТЬ), UPDATE (МОДИФИЦИРОВАТЬ), DELETE (УДАЛИТЬ). В самой простой форме INSERT использует следующий синтаксис:
INSERT INTO имя табл VALUES (<value>, . . .); Если вам нужно ввести пустое значение (NULL), вы вводите его точно так же, как и обычное значение. Предположим, что ещё нет поля city для мистера Peel. Вы можете вставить в строку значение=NULL в это поле следующим образом: INSERT INTO Salespeople VALUES (1001, 'Peel', NULL, .12); Так как значение NULL это специальный маркёр, а не просто символьное значение, оно не заключается в одинарные кавычки. Вы можете также указывать столбцы, куда вы хотите вставить значение имени. Это позволяет вам вставлять имена в любом порядке.
Предположим, что вы берёте значения для таблицы Заказчиков из отчёта, выводимого на принтер, который помещает их в таком порядке: city, cname, cnum; и, для упрощения, вы хотите ввести значения в том же порядке: INSERT INTO Customers (city, cnamе, cnum) VALUES ('London', 'Honman', 2001); Обратите внимание, что столбцы rating и snum отсутствуют. Это значит, что в эти строки автоматически установлены значения по умолчанию. По умолчанию может быть введено значение NULL или другое значение, определяемое по умолчанию. Если ограничение запрещает использование значения NULL в данном столбце и в этот столбец не установлено значение по умолчанию, этот столбец должен быть обеспечен значением для любой команды INSERT, которая относится к таблице. INSERT, чтобы получать или выбирать значения из одной таблицы и помещать их в другую для использования их вместе с запросом. Чтобы сделать это, вы просто заменяете предложение VALUES (из предыдущего примера) на соответствующий запрос: INSERT INTO Londonstaff SELECT * FROM Salespeople WHERE city = 'London';
Вы можете удалять строки из таблицы командой модификации DELETE. Она может удалять только строки, а не индивидуальные значения полей, так что параметр поля является необязательным или недоступным. Чтобы удалить всё содержание таблицы Продавцов, вы можете ввести следующее условие: DELETE FROM Salespeople; Теперь, когда таблица пуста, её можно окончательно удалить командой DROP TABLE. Обычно вам нужно удалить только некоторые определённые строки из таблицы. Чтобы определить, какие строки будут удалены, вы используете предикат так же, как вы это делали для запросов. Например, чтобы удалить продавца Axelrod из таблицы, вы можете ввести DELETE FROM Salespeople WHERE snum = 1003; Мы использовали поле snum вместо поля sname, потому что лучшая тактика – использование первичных ключей, когда вы хотите, чтобы действию подвергалась одна, и только одна, строка. Для вас это аналогично действию первичного ключа. Конечно, вы можете также использовать DELETE с предикатом, который выбирал бы группу строк, как показано в этом примере: DELETE FROM Salespeople WHERE city = 'London';
Теперь, когда вы уже можете вводить и удалять строки таблицы, вы должны узнать, как изменять некоторые или все значения в существующей строке. Это выполняется командой UPDATE. Эта команда содержит предложение UPDATE, в котором указано имя используемой таблицы, и предложение SET, которое указывает на изменение, выполняемое для определенного столбца. Например, чтобы изменить оценки всех заказчиков на 200, вы можете ввести UPDATE Customers SET rating = 200; Конечно, вы не всегда захотите указывать все строки таблицы для изменения единственного значения, так что UPDATE, наподобие DELETE, может использовать предикаты. Вот как, например, можно выполнить изменение, одинаковое для всех заказчиков продавца Peel (имеющего snum=1001): UPDATE Customers SET rating = 200 WHERE snum = 1001;
Однако вы не обязаны ограничивать себя модифицированием единственного столбца с помощью команды UPDATE. Предложение SET может назначать любое число столбцов, отделяемых запятыми. Все указанные назначения могут быть сделаны для любой табличной строки, но только для одной в каждый момент времени. Предположим, что продавец Motika ушел на пенсию и мы хотим переназначить его номер новому продавцу: UPDATE Salespeople SET sname = 'Gibson', city = 'Boston', comm = .10 WHERE snum = 1004;
Эта команда передаст новому продавцу Gibson, всех текущих заказчиков бывшего продавца Motika и заказы в том виде, в котором они были скомпонованы для Motika, с помощью поля snum. Вы не можете, однако, модифицировать сразу несколько таблиц в одной команде, отчасти потому, что вы не можете использовать префиксы таблиц со столбцами, изменёнными предложением SET. Другими словами, вы не можете сказать "SET Salespeople.sname = Gibson" в команде UPDATE, вы можете сказать только так: "SET sname = Gibson".
Вы можете использовать скалярные выражения в предложении SET команды UPDATE, включив его в выражение поля, которое будет изменено. В этом их отличие от предложения VALUES команды INSERT, в котором выражения не могут использоваться; это свойство скалярных выражений – весьма полезная особенность. Предположим, что вы решили удвоить комиссионные всем вашим продавцам. Вы можете использовать следующее выражение: UPDATE Salespeople SET comm = comm * 2;
Всякий раз, когда вы обращаетесь к указанному значению столбца в предложении SET, произведённое значение может получится из текущей строки; прежде в ней будут сделаны какие–то изменения с помощью команды UPDATE. Естественно, вы можете скомбинировать эти особенности и сказать "удвоить комиссию всем продавцам в Лондоне" таким предложением: UPDATE Salespeople SET comm = comm * 2 WHERE city = 'London';
Предложение SET это не предикат. Оно может вводить пустые NULL–значения так же, как оно вводило значения, не используя какого–то специального синтаксиса (такого, например, как IS NULL). Так что, если вы хотите установить все оценки заказчиков в Лондоне в NULL, вы можете ввести следующее предложение: UPDATE customers SET rating = NULL WHERE city = 'London'; что обнулит все оценки заказчиков в Лондоне.
