Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Создание базы данных taxi




 

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

База данных taxi создается командой CREATE DATABASE:

 

 

При правильном вводе сервер выдает сообщение «Query OK, 1 row affected»

Затем нужно сообщить серверу о том, что вы собираетесь работать с базой данных “taxi”. Это делается командой

mysql>USE taxi;

 

которую нужно подавать каждый раз перед работой с базой данных “taxi”.

 

Таблицы создаются командой CREATE TABLE. При создании нужно указать не только имя таблицы, но и ее полное определение, состоящее из определений отдельных полей (столбцов таблицы).

Создадим таблицу cars, которая будет содержать следующие поля:

model – название модели автомобиля;

madein – года выпуска автомобиля;

reg _number – государственный регистрационный номер;

color – цвет автомобиля.

Необходимо помнить, что названия баз данных, таблиц и полей должны задаваться одним словом (без использования символов-разделителей).

Кроме того, нам понадобится столбец id, однозначно идентифицирующий запись об автомобиле – первичный ключ. Значения этого поля не должны повторяться и не могут быть пустыми, желательно, чтобы эти значения были целыми числами, увеличивающимися на единицу в каждой новой записи.

 

mysql>CREATE TABLE cars (

model CHAR(50) NON NULL,

madein YEAR(4) NOT NULL,

reg_number CHAR(12) NOT NULL,

color CHAR(15) NOT NULL,

id SMALLINT AUTO_INCREMENT,

PRIMARY KEY(id)

);

 

Атрибут NOT NULL означает, что все строки таблицы должны иметь значение в этом столбце. Если NOT NULL не указано, поле в отдельных записях может не заполняться (т.е. иметь значение NULL).

Ключевое выражение PRIMARY KEY после имени столбца определяет, что этот столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными.

AUTO_INCREMENT – атрибут, используемый для создания столбца с уникальными значениями. Если при вставке строк оставлять такое поле пустым, MySQL автоматически генерирует уникальное значение идентификатора. Это значение будет на единицу больше максимального значения, уже существующего в столбце. В каждой таблице может быть не больше одного такого поля.

MySQL использует следующий алгоритм для инициализации счетчика в столбце id, имеющем атрибут AUTO_INCREMENT: после запуска сервера MySQL при первом запросе на добавление данных в таблицу cars сервер высчитывает максимальное значение в столбце id. Полученное значение увеличивается на единицу, заносится в новую запись и в счетчик. Если таблица была пуста, то счетчик устанавливается в единицу.

Таблица drivers содержит столбцы для хранения имени (name), отчества (second_name), фамилии (family_name) водителя, даты его рождения (birth), домашнего адреса (address) и даты поступления на работу (startdate).

 

mysql>CREATE TABLE drivers (

name CHAR(30) NOT NULL,

second_name CHAR(30),

family_name CHAR(30) NOT NULL,

birth DATE NOT NULL,

address CHAR(150) NOT NULL DEFAULT ‘unknown’,

startdate DATE NOT NULL DEFAULT ‘2002-01-01’,

id SMALLINT AUTO_INCREMENT,

PRIMARY KEY (id)

);

 

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

Ключевое слово UNSIGNED может применяться после указания целочисленного типа и означает, что значение в поле может быть либо положительным, либо нулевым.

После ключевого слова DEFAULT указывается значение по умолчанию для данного столбца. Например: DEFAULT ‘no description’.

 

Таблица timetable содержит следующие поля: дату поездки (use_on), номер машины (car_number) и идентификатор водителя (driver_number).

 

mysql>CREATE TABLE timetable (

use_on DATE DEFAULT NULL,

car_number SMALLINT,

driver_number SMALLINT,

id SMALLINT AUTO_INCREMENT,

PRIMARY KEY(id),

INDEX (car_number),

INDEX (driver_number),

FOREIGN KEY (car_number) REFERENCES cars (id),

FOREIGN KEY (driver_number) REFERENCES drivers (id)

);

 

MySQL поддерживает ссылочную целостность базы с помощью ограничения внешнего ключа FOREIGN KEY. Назначение этого ключа – проверять соответствие значений в столбцах родительского и внешнего ключей. Эти столбцы должны иметь одинаковый тип данных, и только те значения, которые встречаются в родительском ключе, могут использоваться во внешнем ключе. Родительский ключ должен содержать неповторяющиеся значения и не содержать значения NULL.

Последние два столбца таблицы timetable являются внешними ключами, и MySQL 5 требует, чтобы перед созданием внешних ключей на этих столбцах были созданы индексы.

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

После создания таблиц можно посмотреть их список и структуру командой

 

mysql>SHOW TABLES;

 

Можно просмотреть структуру таблицы командой

 

mysql>DESCRIBE table_name;

 

Здесь table_name – имя таблицы. Эта команда позволит просмотреть типы данных столбцов и дополнительные атрибуты, указанные при создании таблицы.

Например, просмотрим структуру таблицы cars.

 

2.1. Запись данных в таблицы

 

. Для внесения данных в базу данных используется оператор insert. Самый простой вариант - внесение данных во все поля таблицы:

mysql>INSERT INTO cars VALUES

('Volga', '2003', 'A786YC78', 'white', '1' );

 

 

mysql>INSERT INTO cars VALUES

->('Volga', '2002 ' , 'A788YC78', 'yellow', ‘2’ );

 

mysql>INSERT INTO cars VALUES

->('Volkswagen', '2003', 'A789YC78', 'red', ’3’ );

 

Аналогично можно добавлять данные только в избранные поля, при этом нужно указать имена полей явно:

 

mysql>INSERT INTO cars (model, madein, reg_number, color) VALUES

->('Renault', '2005' , 'A790YC78', 'white');

 

 

Добавим еще несколько записей в таблицы:

 

mysql>INSERT INTO drivers VALUES (

->'Stanislav', 'Petrovitch', 'Nikolaev',

->'1970-01-22', 'Nevsky prospect 11, flat 54', '2004-02-25', 1);

mysql>INSERT INTO drivers (name, second_name, family_name, birth,

->address, startdate)

->VALUES ('Fedor', 'Sergeevitch', 'Sentsov',

->'1960-11-02', 'Moskovsky prospect 92, flat 112', '2003-12-30');

mysql>INSERT INTO timetable VALUES ('2008-11-25', 3,1,1),

->('2008-11-30', 2,2,2), ('2008-12-01', 2,2,3);

 

Последняя запись обычно делается диспетчером автопарка каждый день утром. Чтобы упростить его работу, можно использовать встроенную в MySQL функцию curdate(), которая возвращает текущую дату как раз в нужном формате:

 

mysql> INSERT INTO timetable VALUES (curdate(), 2,2,4);

 

Если вы попытаетесь оставить пустыми поля, отмеченные not null и не имеющие значения по умолчанию, то сервер MySQL выдаст сообщение об ошибке и не выполнит команду.

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

 


Поделиться:

Дата добавления: 2014-11-13; просмотров: 114; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.008 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты