Формирование числовых ключей
Прежде чем заполнить таблицу 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; просмотров: 500;