Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Update T1




UPDATE T1

UPDATE T1

Команда UPDATE

INSERT INTO T1 (FIO, PASPORT, ADDRESS)

INSERT INTO Т4 (ALL_PASPORT)

INSERT INTO T1 (FIO)

SELECT UPPER(F)+' '+UPPER(I)+' '+UPPER(O) FROM T2; (соединяются через пробелы три строчных переменные F, I, O из таблицы Т2 и добавляются в поле FIO таблицы Т1).

При работе с разнородными данными следует быть еще внимательнее:

SELECT UPPER(PASP_S) + '-' + CStr(PASP_N) FROM T5; (соединяются через тиреPASP_S и PASP_N таблицы Т5, кроме того PASP_N преобразуется из числового в строчный и добавляются в поле ALL_PASPORT таблицы Т4).

Однако единых рекомендаций по выполнению таких выборок нет и быть не может, так как синтаксис функций преобразования различных реализаций SQL очень отличается. Некоторые (устаревшие) СУБД вообще не поддерживают возможности преобразования типов внутри запросов.


В ряде случаев может потребоваться заполнить добавляемую к таблице запись константами или NULL-значениями. В таком случае синтаксис оператора INSERT будет следующим:

SELECT FIO, 123456, NULL FROM T2;

Конечно, этот оператор сработает только в одном случае, если на столбец PASPORT не наложено ограничение уникальности UNIQUE и длина этого поля не менее 6-ти знаков.

Эта команда не изменяет общего количества записей, хранящихся в таблице. Она выполняет действие "обновление" ко всем записям, удовлетворяющих условиям вложенного подзапроса.

SET FIO = 'Иванов И.И.';

Конечно, хотя такой оператор записан в соответствии с синтаксисом SQL его действие в принципе некорректно. Дело в том, что мы заполняем поля FIO строкой 'Иванов И.И.' для всех строк таблицы Т1, а не применяем это действие к одной строке. Следующий оператор будет гораздо более корректным:

SET FIO = 'Иванов И.И.'

WHERE (PASPORT= 786324);

С помощью директивы UPDATE можно изменить значение сразу нескольких полей одной таблицы.

SET FIO= 'Прогульщик',

STATUS = 'УВОЛЕН',

PASPORT = 0 WHERE (ALL_PROGUL > 10);

Этот оператор для всех строк таблицы Т1, в которых соблюдается условие строки WHERE произведет заполнение полей FIO, STATUS и PASPORT указанными значениями.

Задумайтесь над корректностью следующего оператора UPDATE, который пытается изменить содержимое поля первичного ключа. Какие из перечисленных ниже действий принципиально некорректны?

UPDATE T1 SET ID = 100;

UPDATE T1 SET ID = 100 WHERE ID = 30;

UPDATE T1 SET ID = ID + 1;

UPDATE T1 SET ID = PASPORT;

Даже если некоторые из этих действий (при определенных условиях) не выдадут сообщение об ошибке, постарайтесь никогда не использовать подобные конструкции. Оцените корректность других операторов, изменяющих значение внешних ключей:

UPDATE T2 SET T1_ID = 100;

UPDATE T2 SET T1_ID = T1_ID+1;

UPDATE T2 SET T1_ID = (SELECT MAX(ID) FROM T1);

UPDATE T2 SET T1_ID = (SELECT MIN(ID) FROM T1) WHERE (T1_ID = (SELECT MAX(ID) FROM T1);

На основании приведенных примеров можно сделать вывод, что поле внешнего ключа таблицы можно изменять, только если при этом не возникает нарушений целостности БД.




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 405; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.