Три статьи по работе с MySQL


Работа с MySql - часть 3


Вот таков код для создания таблицы в базе данных.

Метод указателя базы данных do готовит и исполняет одиночную инструкцию SQL. Возвращает количество выбранных строк или undef в случае ошибки. Если возврат = -1, то количество строк неизвестно или отсутствует. В нашем случае количество строк неактуально, поэтому мы опустили оператор присваивания.

Этот метод эквивалентен следующему набору кода:

sub do { my($dbh, $statement, $attr, @bind_values) = @_; my $sth = $dbh->prepare($statement, $attr) or return undef; $sth->execute(@bind_values) or return undef; my $rows = $sth->rows; ($rows == 0) ? "0E0" : $rows; }

Как описано в таблице 1

, поле id должно быть autoincrement. Теперь возникают некоторые замечания:
  • поле AUTO_INCREMENT должно быть ключевым (первичный индекс) - key;
  • индекс key не может создаваться по полю, которое может принимать значение null;

Значит нам нужно сначала поменять свойства поля id таким образом, чтобы поле не могло принимать значения null, было ключевым индексом, и было автоинкрементальным. вот код для этого, три SQL выражения, исполняемые методом do:

... $dbh->do("ALTER TABLE links CHANGE id id TINYINT (4) not null"); $dbh->do("ALTER TABLE links ADD PRIMARY KEY(id)"); $dbh->do("ALTER TABLE links CHANGE id id TINYINT (4) not null AUTO_INCREMENT"); ...

SQL инструкция ALTER TABLE позволяет изменять свойства таблицы. Более подробно смотри Документацию по MySql

Теперь таблица links соответствует нашим требованиям. При добавлении новой записи знаяение поля id в оной автоматически будет увеличиваться на 1.

Далее надо создать табличку категорий. Ее структура:

Наименование Тип Длина Комментарий
id TINYINT 4 Идентификатор категории - автоинкремент
name VARCHAR 64 Наименование категории

На сей раз мы создадим таблицу со всеми необходимыми нам атрибутами полей, - поле id будет ключевым, автоинкрементом. вот SQL запрос на ее создание:

CREATE TABLE category (id TINYINT not null AUTO_INCREMENT,
name VARCHAR (64) not null , PRIMARY KEY (id))

Исполняем его уже известным нам методом do :

$dbh->do("CREATE TABLE category (id TINYINT not null
AUTO_INCREMENT, name VARCHAR (64) not null , PRIMARY KEY (id))");

Теперь нужно в наши таблицы внести данные. Об этом в следующей статье


//

SLE Banner Network




- Начало -  - Назад -  - Вперед -