Формирование числовых ключей

Прежде чем заполнить таблицу person данными, полезно обсудить процесс формирования значений числовых первичных ключей. Кроме выбора числа «от фонаря» есть два варианта:

• Найти в таблице самое большое на данный момент значение первичного ключа и прибавить 1.

• Позволить серверу БД предоставить значение.

Хотя первый вариант и кажется допустимым, он становится проблематичным в многопользовательской среде, поскольку два пользователя могут одновременно работать с таблицей и сгенерировать одно и то же значение первичного ключа. Напротив, все серверы БД, присутствующие сегодня на рынке, обеспечивают более надежный, более устойчивый к ошибкам метод формирования числовых ключей. Иногда, например в Oracle Database, используется отдельный объект схемы (называемый последовательностью (sequence)). Однако в случае с MySQL надо просто включить для столбца первичного ключа свойство

Auto-increment (автоприращение).

Изменим описание существующей таблицы:

ALTER TABLE person MODIFY person_id SMALLINT UNSIGNED AUTO_INCREMENT;

Это выражение, по существу, переопределяет столбец person_id таблицы person.

При вводе данных в таблицу person просто задайте значение null для столбца person_id, и MySQL заполнит столбец следующим доступным числом (для столбцов с автоприращением MySQL по умолчанию начинает отсчет с 1).

Выражение insert

Следующее выражение создает в таблице person строку для Вильяма Тернера (William Turner):

INSERT INTO person

(person_id, fname, lname, gender, birth_date)

VALUES (null, 'William','Turner', 'M', '1975-05-27');

С помощью выражения select можно увидеть только что добавленные в таблицу данные:

SELECT person_id, fname, lname, birth_date

FROM person;

Как видите, сервер MySQL генерирует для первичного ключа значение 1.

Прежде чем двигаться дальше, сделаю несколько замечаний относительно предыдущего выражения insert:

• Не заданы значения ни для одного столбца адреса. Это нормально, поскольку для них допускается значение null. • Для столбца birth_date было предоставлено строковое значение. Поскольку строка соответствует формату преобразует ее для вас в дату.

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

Вильям также предоставил информацию о своих любимых блюдах. Вот три выражения вставки, позволяющих записать его кулинарные предпочтения:

INSERT INTO favorite_food (person_id, food)

VALUES (1, 'pizza');

 

INSERT INTO favorite_food (person_id, food)

VALUES (1, 'cookies');

 

INSERT INTO favorite_food (person_id, food)

VALUES (1, 'nachos');

 

Чтобы Вильям не скучал, можно выполнить еще одно выражение insert и добавить в таблицу person Сьюзен Смит (Susan Smith):

INSERT INTO person

(person_id, fname, lname, gender, birth_date)

VALUES (null, 'Susan','Smith', 'F', '1975-11-02');

Обновление данных

При первичном вводе информации в таблицу о Вильяме Тернере в выражение insert не были включены данные для различных столбцов адреса. Следующее выражение показывает, как заполнить эти столбцы с помощью выражения update:

UPDATE person

SET fname = 'Titres'

WHERE person_id = 1;

Одним выражением update можно изменять несколько столбцов. Одним выражением также можно изменять несколько строк в зависимости от условий блока where.

Удаление данных

Похоже, Вильям и Сьюзен не вполне ладят друг с другом, поэтому один из них должен уйти. Поскольку Вильям был первым, Сьюзен будет вежливо «выставлена» выражением delete:

DELETE FROM person

WHERE person_id = 2;

Опять же для выделения интересующей строки используется первичный ключ, поэтому из таблицы удаляется всего одна строка. Как и в случае выражения update, можно удалить и несколько строк. Все зависит от условий, заданных в блоке where. Если блок where опущен, будут удалены все строки.








Дата добавления: 2017-08-01; просмотров: 454;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.