Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
59
Добавлен:
17.02.2016
Размер:
387.58 Кб
Скачать

Обновление (модификация) данных в таблице

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

UPDATE имя_таблицы SET имя_столбца=выражение [, имя_столбца=выражение ...] [WHERE условие];

Следующий оператор обновляет значение в одной строке таблицы:

UPDATE parts SET weight=105 WHERE part_name=’Screw’;

Удаление строк в таблице

Оператор DELETEудаляет строки существующей таблицы. В выраженииWHERE, если оно присутствует, задается, какие строки подлежат удалению. В остальных случаях удаляются все строки.

DELETE FROM имя_таблицы [WHERE условие];

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

delete from parts where part_id=4;

delete from parts;

Удаление таблицы

Оператор DROP TABLEудаляет одну или несколько таблиц. Все табличные данные и определения удаляются, так что будьте внимательны при работе с этой командой!

Следующий оператор удаляет таблицу parts:

DROP TABLE имя_таблицы [, имя_таблицы...];

Можно использовать расширенный синтаксис оператора, который удаляет таблицу только в том случае, если таблица существует:

DROP TABLE IF EXISTS имя_таблицы [, имя_таблицы...];

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

Определение ключей в бд Определение первичных ключей

Первичным ключом называю атрибут или набор атрибутов отношения (таблицы), однозначно идентифицирующий кортеж отношения (строку).

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

Определение первичного ключа при создании таблицы parts:

CREATE TABLE Parts

(Part_ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

Part_name VARCHAR(80),

Material VARCHAR(80),

WeightINTEGER CHECK (WEIGHT>0));

Определение первичного ключа после создания таблицы parts:

ALTER TABLE Parts ADD PRIMARY KEY (Part_ID);

После определения первичного ключа для него необходимо задать атрибуты NOT NULL и AUTO_INCREMENT при помощи команды ALTER TABLE:

ALTER TABLE Parts CHANGE Part_ID Part_ID INTEGER UNSIGNED NOT NULL AUTO_INCREMENT;

Описание созданной таблицы, полученное при помощи DESCRIBE:

Определение внешних ключей

Определение внешнего ключа при создании таблицы Delivery:

CREATE TABLE Delivery

(Part_ID INTEGER UNSIGNED,

Quantity INTEGER CHECK (Quantity >0),

FOREIGN KEY (Part_ID) REFERENCES Parts (Part_ID));

Определение внешнего ключа при модификации таблицы Delivery:

ALTER TABLE DELIVERY ADD FOREIGN KEY (Part_ID) REFERENCES Parts(Part_ID);

Описание созданной таблицы, полученное при помощи DESCRIBE:

Задание

  1. Запустить командную строку cmd.exeи перейти в каталог, где находится файлmysql.exe.

  2. Подключиться к серверу MySQL, запустив программуmysql.exeсо следующими параметрами (host– имя хоста сервера,user– Ваш логин):

mysql -h host -u user –p

  1. Установить пароль для доступа к серверу MySQL:

Set password for<имя_пользователя> =password('<пароль>');

  1. Выполните запрос для получения версии MySQL-сервера, текущей даты и времени, имени текущего пользователя:

select version(), now(), current_date, current_time, user();

  1. Создать базу данных с указанным преподавателем именем:

create database <имя_базы>;

  1. Выполнить запрос для просмотра существующих БД:

show databases;

  1. Выполнить команду для подключения к вашей базе данных:

USE<имя_базы>;

  1. Закрыть соединение с сервером и выйти из программы mysql.exe

exit;

  1. Написать командный файл (*.bat) для определения параметров соединения и запускаmysql.exe. Запуститьmysql.exeпри помощи созданного командного файла.

  2. Написать сценарий (набор SQL-команд) для создания базы данных «Предприятие». Концептуальное описание БД «Предприятие»:

База данных «Предприятие» содержит информацию о работе некоторого промышленного предприятия, которое осуществляет сборку изделий (проектов) из деталей. В базе данных присутствуют следующие сущности: Детали, Проекты, Поставщики, Поставки, Города. Таблица «Детали» содержит описания деталей. Поля: Номер_детали, Наименование, Материал, Вес. Таблица «Поставщики» содержит описания организаций, поставляющих детали. Поля: Номер_поставщика, Наименование, Номер_города. Таблица «Проекты» содержит описание проектов (сборочных изделий). Поля: Номер_проекта, Наименование, Номер_города. Таблица «Города» содержит описание городов, в которых могут находиться проекты и поставщики. Поля: Номер_города, Наименование. Каждый проект содержит некоторое количество различных деталей, поставляемых различными поставщиками в определенном количестве. Проект рассматривается как совокупность поставок. Таблица «Поставки» содержит записи о типе, количестве деталей и цене одной детали, поставляемых определенным поставщиком для определенного проекта. Поля: Номер проекта, Номер_поставщика, Номер_детали, Количество, Цена.

В сценарии необходимо определить первичные и внешние ключи в таблицах. Для генерации значений первичных ключей использовать спецификатор AUTO_INCREMENT. Задать для первичных ключей требование обязательности данных NOT NULL. Задать для полей ВЕС, КОЛИЧЕСТВО и ЦЕНА беззнаковый целочисленный тип.

  1. Внести в сценарий операторы заполнения таблиц тестовыми данными (не менее 5-и строк в каждой таблице). Запустить сценарий в пакетном режиме. При необходимости произвести отладку (устранение ошибок).

  2. Написать сценарий для удаления всех данных и всех таблиц в БД. Запустить сценарий в пакетном режиме. При необходимости произвести отладку (устранение ошибок).