Лекции и практики (1). Курс лекций и материалы для практических занятий
Скачать 1.01 Mb.
|
Команды модификации данныхК командам модификации данных (DML) относятся добавление, удаление и изменение (обновление) записи (строки таблицы). При выполнении этих СУБД делает следующее: Проверяет команду на синтаксическую правильность: если есть ошибки, выдаёт пользователю сообщение о первой выявленной ошибке, иначе пе- реходит к следующему пункту. Проверяет права пользователя, который запустил эту команду: если права на выполнение подобной операции есть, то переходит к следующему пункту, иначе – выдаёт сообщение о недостаточности прав. Выполняет операции, предусмотренные командой модификации данных. При выполнении каждой операции (добавлении / изменении / удалении каждой строки) проверяются все установленные для таблицы ограниче- ния целостности. В случае нарушения любого ограничения целостности или возникновения других проблем (переполнения памяти, например) команда DML не выполняется (отменяются все изменения, выполненные в рамках этой команды) и выдаётся сообщение об ошибке. Если же ко- манда выполнилась успешно, выдаётся информация о количестве обрабо- танных строк. INSERT – добавление записи в таблицу. Синтаксис команды: INSERT INTO <имя таблицы> [(<имя поля>.,..)] VALUES (<список выражений>) | <запрос>; Под <запросом> подразумевается команда SELECT (см. ниже), результа- ты работы которой добавляются в указанную таблицу. В предложении VALUES указываются выражения, порождающие значе- ния атрибутов новой записи таблицы. Выражение может включать вызовы функций, определенных в данной СУБД, константы, знак операций конкатена- ции строк (||) или знаки арифметических операций: –, +, *, /. Типы значений выражений должны соответствовать типам полей таблицы. Строки и даты должны заключаться в одинарные кавычки. Формат даты должен соответство- вать тому, который установлен в СУБД по умолчанию. Если значения устанавливаются не для всех полей или порядок значений не соответствует тому порядку полей, который был установлен при создании таблицы, то после имени таблицы в скобках приводится список полей в соот- ветствии со списком значений. В тех случаях, когда при добавлении записи значение какого-либо поля неизвестно, его можно не устанавливать, пропустив это поле в списке полей или указав для него значение NULL (но только для тех полей, на которые не наложено ограничение целостности NOT NULL). Если в списке полей отсутствует какое-либо поле таблицы, то ему будет присвоено значение NULL или значение по умолчанию (DEFAULT), если оно определено в командах CREATE TABLE или ALTER TABLE. Пример: Добавить в таблицу "Сотрудники" новую запись: INSERT INTO emp (depno, tabno, name, post, salary, born, phone) VALUES(3, '00112', 'Попов В.Г.', 'экономист', 45400, '1979-12-23', '115-34-11'); 1 строка создана. В данном случае дата рождения вводится как строка '1979-12-23' в соответствии с форматом даты по умолчанию. А в качестве даты поступления сотрудника на работу будет установлена текущая дата, т.к. для поля edate определено значе- ние по умолчанию DEFAULT и в команде INSERT значение не вводится. Примечание: посмотреть формат даты по умолчанию в СУБД Oracle можно так: select sysdate from dual; Изменить формат даты в Oracle можно следующей командой: alter session set nls_date_format = 'yyyy-mm-dd'; 'yyyy' означает год (4 цифры), 'mm' – месяц, 'dd' – день; разделители могут быть любыми. UPDATE – обновление данных в таблице. Синтаксис: UPDATE <имя таблицы> SET {<имя поля> = <выражение>}.,.. [ WHERE <условие> ]; Команда обновления изменяет в указанной таблице значения указанных полей тех записей, которые удовлетворяют заданному условию отбора (WHERE <условие>). Если условие не указано, обновления применяются ко всем записям таблицы. Пример: Изменить должность и зарплату сотрудника Попова В.Г., табельный номер '00112': UPDATE emp SET post = 'ст. экономист', salary = salary*1.1 WHERE tabno = '00112'; 1 строка обновлена. DELETE – удаление записей из таблицы. Синтаксис этой команды: DELETE FROM <имя таблицы> [ WHERE <условие> ]; Внимание! Если не указывать условие выбора записей, то все записи таблицы могут быть удалены без предупреждения и без запроса на подтверждение! Эта команда удаляет из указанной таблицы те записи, которые удовле- творяют заданному условию отбора (WHERE <условие>). Примечание: в большинстве СУБД результаты ошибочной операции можно отменить сразу после её выполнения командой ROLLBACK (см. Главу 6). Пример: Удалить запись о сотруднике Попове В.Г., табельный номер '00112': DELETE FROM emp WHERE tabno = '00112'; 1 строка удалена. |