Программирование >>  Программный интерфейс приложений 

1 ... 16 17 18 [ 19 ] 20 21 22 ... 264



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

Столбец studentid нужно объявлять аналогичным способом и в случае, если вы собираетесь получить идентификационные номера учащихся от дирекции щколы, правда, с Внимание! одним условием: в этом случае необходимо опустить атрибут auto increment.

Таблица event имеет следующий вид.

CREATE TABLE event (

date DATE NOT NULL,

type ENUM{T,Q) NOT NULL,

event ld INT UNSIGNED NOT NULL AUTO INCREMENT PRIMARY KEY

Введите этот оператор в mysql, или запустите из оболочки следующую команду:

% mysql samp db < create event.sql

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

Столбец date хранит стандартное для СУБД MySQL значение типа date в формате YYYY~MM-DD .

Столбец type хранит тип оценки и, как столбец sex в таблице student type, является перечисляемым типом. Допустимые значения здесь Т и Q, что соответствует тесту и викторине соответственно.

Столбец event id является столбцом типа aut0 increment, полностью идентичным столбцу student id в таблице student. Аналогично столбцу student id, в таблице student конкретные значения менее важны чем то, что они должны быть уникальными.

Таблица score имеет следующий вид.

CREATE TABLE score (

Student id INT UNSIGNED NOT NULL, event id INT UNSIGNED NOT NULL, score INT NOT NULL, PRIMARY KEY {event id, student id)

Введите этот оператор, работая в mysql, или запустите из оболочки следующую команду.

% mysql samp db < create score.sql

Столбец score имеет тип int, т.е. предполагается, что все значения оценок являются целочисленными. Следовательно, если в оценках необ-



ходимо использовать числа, подобные 58,5, нужно задать типы данных с плавающей точкой, такие как float или decimal.

Столбцы student id и event id являются целыми, показывающими, чья это оценка и какое это событие. Связав по этим полям таблицы student и event, мы сможем узнать имя учащегося и дату события. Комбинация этих столбцов является первичным ключом. Это гарантирует нас от дублирования оценок одного учащегося за один и тот же тест или викторину. Упростится также последующее изменение оценки. Например, если оценка была введена неверно, в дальнейщем будет нетрудно изменить ее с помощью оператора replace. Нет необходимости делать две операции delete и insert.

Обратите внимание на то, что комбинация student id и event id является уникальной. В таблице score нет столбца, уникального самого по себе. Для каждого идентификатора event id может быть несколько записей (по одной на каждого учащегося). Аналогично, для каждого идентификатора student id может быть несколько записей (по одной на каждый тест или викторину).

Таблица absence имеет следующий вид.

CREATE TABLE absence (

student id INT UNSIGNED NOT NULL,

date DATE NOT NULL,

PRIMARY KEY (event id, date)

Введите этот оператор, работая в mysql, или запустите из оболочки следующую команду.

% mysql samp db < create absence.sql

Во избежание потери данных столбцы student id и date объявлены как not null. Комбинация этих столбцов объявлена первичным ключом Это воспрепятствует случайному созданию повторяющихся записей. Ведь действительно будет несправедливо посчитать одного учащегося отсутствующим дважды в день

Дополнение таблиц

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

Можно назвать несколько методов добавления информации в базу данных. Можно добавлять записи в таблицы вручную. Для этой цели служит оператор insert. Можно добавлять записи прямо из файла или как исходные данные с помощью команды load data; с помощью утилиты mysql import или в виде предварительно созданных и сохраненных в файле операторов insert.



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

Начнем добавление записей с оператора insert. Это оператор языка SQL, в котором определяется таблица, куда будет производиться добавление, строка добавляемых данных и значений.

Оператор insert имеет несколько форм.

Определение значений всех столбцов.

INSERT INTO tbl name VALUES(valuel, value2,...)

Например:

mysql> INSERT INTO student VALUES(Kyle,M,NUbL); mysql> INSERT INTO event VALUES(1999-9-3,Q,NULL);

Для MySQL 3.22.5 слово into является опциональным (это верно и для других форм оператора insert.) Список value должен содержать все столбцы, хранящиеся в таблице. (Обычно это порядок следования названий столбцов в операторе create. Для определения этого портака можно воспользоваться оператором describe tbl name.)

Вьщелять строковые значения или значения типа дата можно как одинарными, так и двойными кавычками. Пустые значения здесь будут присвоены столбцам с атрибутом автоинкремента в таблицах student и event. (Ввод недостающего значения приводит к генерированию следующего номера для student id или event id.)

Начиная с версии СУБД MySQL 3.22.5 можно производить добавление сразу нескольких строк с помощью одного оператора insert:

INSERT INTO tbl name VALUES(...),(...),...

Например:

mysql> INSERT INTO student

VALUES ( Abby , F ,NULL) , ( Kyle , M ,NULL) ;

Такой оператор потребует ввода меньшего количества информации, да и сервер сможет эффективнее обработать эту команду.

Версия СУБД MySQL 3.22.10 позволяет задавать имена столбцов и их значение в форме col name = value:

INSERT INTO tbl name SET col namel=valuel,.col name2=value2,... Например:

mysql> INSERT INTO student SET last name =Stein, first name=Waldo;



1 ... 16 17 18 [ 19 ] 20 21 22 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика