Лекция_2 (С.Д. Кузнецов - Презентации лекций), страница 4
Описание файла
Файл "Лекция_2" внутри архива находится в папке "С.Д. Кузнецов - Презентации лекций". PDF-файл из архива "С.Д. Кузнецов - Презентации лекций", который расположен в категории "". Всё это находится в предмете "модель данных sql" из 4 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
Лекция 249Средства определения, изменения иликвидации базовых таблиц (43) Наконец, определим таблицу PRO: другими словами, этот столбец обладает всеми характеристикамипервичного ключа, хотя объявлен только как возможный ключ кроме того, он объявлен как внешний ключ с действием приудалении строки таблицы EMP с соответствующим значениемпервичного ключа NO ACTION, запрещающим такие удаления в совокупности это гарантирует, что у любого проекта будетсуществовать менеджер, являющийся служащим предприятия• В части (5) столбец PRO_DESC (описание проекта) определен какбольшой символьный объект с максимальным размером 10 Мбайт20.05.2016Доп.
главы баз данных. Лекция 250Средства определения, изменения иликвидации базовых таблиц (44) Изменение определения базовой таблицы Оператор изменения определения базовой таблицы ALTERTABLE имеет следующий синтаксис: При выполнении одного оператора ALTER TABLE можетбыть выполненолибо действие по изменению определения столбца,либо действие по изменению определения табличногоограничения целостности20.05.2016Доп.
главы баз данных. Лекция 251Средства определения, изменения иликвидации базовых таблиц (45) Добавление, изменение или удаление определениястолбца Действие по изменению определения столбцаспецифицируется в следующем синтаксисе: С использованием оператора ALTER TABLE можно20.05.2016добавлять к определению таблицы определение новогостолбца (действие ADD)и изменять или отменять определение существующегостолбца (действия ALTER и DROP соответственно)Доп. главы баз данных. Лекция 252Средства определения, изменения иликвидации базовых таблиц (46) Смысл действия ADD COLUMN почти полностью совпадаетсо смыслом раздела определения столбца в оператореCREATE TABLE указывается имя нового столбца, его тип данных илидомен могут определяться значение по умолчанию иограничения целостности Однако имеется одно существенное отличие: столбец, определяемый в действии ADD оператораALTER TABLE, добавляется к уже существующейтаблице, которая, скорее всего, содержит некоторыйнабор строк20.05.2016Доп.
главы баз данных. Лекция 253Средства определения, изменения иликвидации базовых таблиц (47) В каждой из существующих строк новый столбец долженсодержать некоторое значение, и считается, что сразу после выполнения действия ADD этим значениемявляется значение столбца по умолчанию Поэтому столбец, определяемый в действии ADD,обязательно должен иметь значение по умолчанию, т. е.
для него недопустима ситуация, когда значением поумолчанию явно или неявно объявлено неопределенноезначение (NULL), но среди ограничений целостностистолбца присутствует ограничение NOT NULL20.05.2016Доп. главы баз данных. Лекция 254Средства определения, изменения иликвидации базовых таблиц (48) В действии ALTER COLUMN можноизменить (SET default_definition) илиотменить определение значения по умолчанию длясуществующего столбца Правила определения нового действующего значения столбца поумолчанию совпадают с соответствующими правилами,обсуждавшимися в подразделе определения столбца в оператореCREATE TABLE Изменение значения столбца по умолчанию не оказывает влиянияна состояние существующих строк таблицыдаже если в некоторых из них хранится предыдущее значениестолбца по умолчанию Если столбец определен на домене, у которого существуетзначение по умолчанию, то20.05.2016после отмены определения значения столбца по умолчанию дляэтого столбца начинает действовать значение по умолчаниюдоменаДоп.
главы баз данных. Лекция 255Средства определения, изменения иликвидации базовых таблиц (49) Действие DROP COLUMN отменяет определениесуществующего столбца удаляет его из таблицы Действие DROP COLUMN отвергается, если: указанный столбец является единственным столбцомтаблицы; или в этом действии присутствует спецификацияRESTRICT, и данный столбец используется вопределении каких-либо представлений или ограниченийцелостности Если в действии присутствует спецификация CASCADE, тоего выполнение порождает неявное выполнение оператораDROP для всех представлений и ограничений целостности,в определении которых используется данный столбец20.05.2016Доп. главы баз данных.
Лекция 256Средства определения, изменения иликвидации базовых таблиц (50) Примеры изменения определения столбца Пусть на предприятии ввели систему премирования служащих каждый служащий может дополнительно к зарплате получатьежемесячную премию, не превышающую размер его зарплаты Тогда разумно добавить к таблице EMP новый столбецEMP_BONUS, используя оператор ALTER TABLE:20.05.2016проверочному ограничению столбца присвоили явное имяесли ограничения на размер премии изменятся, можно будетлегко отменить это ограничение, как табличноеДоп.
главы баз данных. Лекция 257Средства определения, изменения иликвидации базовых таблиц (51) При определении столбца EMP_SAL таблицы EMP дляэтого столбца явно не определялось значение поумолчанию оно наследовалось из определения домена Если в какой-то момент это стало неправильнымнапример, повысился размер минимальной зарплаты,можно установить новое значение по умолчанию:20.05.2016Доп. главы баз данных. Лекция 258Средства определения, изменения иликвидации базовых таблиц (52) При определении столбца DEPT_TOTAL_SAL таблицы DEPT длянего было установлено значение по умолчанию 1000000 Такие важные данные нехорошо устанавливать по умолчанию Это значение по умолчанию можно отменить: После выполнения этого оператора при вставке новой строки втаблицу DEPT всегда потребуется явно указывать значениестолбца DEPT_TOTAL_SAL20.05.2016хотя формально у столбца будет существовать значение поумолчанию, наследуемое от домена SALARY (10000.00), оно не можетбыть занесено в таблицу DEPT, поскольку противоречит ограничениюстолбца DEPT_TOTAL_SAL CHECK (VALUE >= 100000.00)Доп.
главы баз данных. Лекция 259Средства определения, изменения иликвидации базовых таблиц (53) Действительно ли требуется поддерживать в таблице DEPTстолбец DEPT_EMP_NO? Для его поддержки требуется проверять громоздкоеограничение целостности, а число служащих в любомотделе можно получить динамически с помощью простогозапроса к таблице EMPэтот запрос входит в ограничение целостности Может оказаться разумным отменить определениестолбца DEPT_EMP_NO, выполнив следующий операторALTER TABLE:20.05.2016Доп. главы баз данных. Лекция 260Средства определения, изменения иликвидации базовых таблиц (54) Напомним, что спецификация CASCADE ведет к тому, чтопри выполнении оператора будет уничтожено не толькоопределение указанного столбца, но и определения всех ограничений целостности ипредставлений, в которых используется уничтожаемыйстолбец В нашем случае единственное связанное с этим столбцомограничение целостности, определенное вне определениястолбца, было бы отменено, даже если бы в оператореотмены определения столбца DEPT_EMP_NO содержаласьспецификация RESTRICT, поскольку это единственное внешнее определениеограничения является ограничением только столбцаDEPT_EMP_NO20.05.2016Доп.
главы баз данных. Лекция 261Средства определения, изменения иликвидации базовых таблиц (55) Изменение набора табличных ограничений Действие по изменению набора табличных ограниченийспецифицируется в следующем синтаксисе: Действие ADD [ CONSTRAINT ] позволяет добавить к наборусуществующих ограничений таблицы новое ограничениецелостности Можно считать, что новое ограничение добавляется черезAND к конъюнкции существующих ограничений, как если быоно определялось в составе оператора CREATE TABLE20.05.2016Доп. главы баз данных. Лекция 262Средства определения, изменения иликвидации базовых таблиц (55) Но имеется одно существенное отличие Если внимательно посмотреть на все возможные виды табличныхограничений, можно убедиться, что любое из них удовлетворяетсяна пустой таблицекакой бы набор табличных ограничений ни был определен присоздании таблицы, это определение является допустимым и непрепятствует выполнению оператора CREATE TABLE При добавлении нового табличного ограничения с использованиемдействия ADD [ CONSTRAINT ] мы имеем другую ситуацию,поскольку таблица, скорее всего, уже содержит некоторый наборстрок, для которого условное выражение нового ограниченияможет принять значение false В этом случае выполнение оператора ALTER TABLE, включающегодействие ADD [ CONSTRAINT ], отвергается20.05.2016Доп.