Учебно-практическое пособие москва 2017 ббк


CREATE TABLE my_schema.airports



Pdf көрінісі
бет98/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   94   95   96   97   98   99   100   101   ...   243
Байланысты:
Язык SQL. Базовый курс

CREATE TABLE my_schema.airports
...
Контрольные вопросы и задания
1. При использовании значений по умолчанию с ключевым словом DEFAULT воз-
можны и ситуации, когда типичным будет не конкретное значение данных, а
способ его получения. Например, если мы захотим фиксировать в каждой стро-
ке таблицы «Студенты» (students) имя пользователя базы данных, добавившего
эту строку в таблицу, тогда необходимо в определение таблицы добавить еще
один столбец. Этот столбец по умолчанию будет получать значение, возвраща-
емое функцией current_user.
CREATE TABLE students
( record_book numeric( 5 ) NOT NULL,
name text NOT NULL,
doc_ser numeric( 4 ),
doc_num numeric( 6 ),
who_adds_row text DEFAULT current_user, -- добавленный столбец
PRIMARY KEY ( record_book )
);
Эта функция — current_user — будет вызываться не при создании таблицы, а при
вставке каждой строки. При этом в команде INSERT не требуется указывать зна-
чение для столбца who_adds_row, поскольку функция current_user будет вызы-
ваться самой СУБД PostgreSQL:
INSERT INTO students ( record_book, name, doc_ser, doc_num )
VALUES ( 12300, 'Иванов Иван Иванович', 0402, 543281 );
Давайте пойдем дальше и пожелаем фиксировать не только имя пользователя
базы данных, добавившего строку в таблицу, но также и момент времени, когда
это было сделано. Самостоятельно внесите модификацию в определение табли-
цы students для решения этой задачи, а затем выполните команду INSERT для
проверки полученного решения.
Если до выполнения этого упражнения вы еще не ознакомились с командой
ALTER TABLE, то вместо модифицирования определения таблицы сначала уда-
лите ее, а затем создайте заново:
DROP TABLE students;
CREATE TABLE students ...
2. Посмотрите, какие ограничения уже наложены на атрибуты таблицы «Успевае-
мость» (progress). Воспользуйтесь командой \d утилиты psql. А теперь предло-
жите для этой таблицы ограничение уровня таблицы.
В качестве примера рассмотрим такой вариант. Добавьте в таблицу progress
еще один атрибут — «Форма проверки знаний» (test_form), который может при-
нимать только два значения: «экзамен» или «зачет». Тогда набор допустимых
значений атрибута «Оценка» (mark) будет зависеть от того, экзамен или зачет
101


предусмотрены по данной дисциплине. Если предусмотрен экзамен, тогда до-
пускаются значения 3, 4, 5, если зачет — тогда 0 (не зачтено) или 1 (зачтено). Не
забудьте, что значения NULL для атрибутов test_form и mark не допускаются.
Новое ограничение может быть таким:


Достарыңызбен бөлісу:
1   ...   94   95   96   97   98   99   100   101   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет