Всё для Учёбы — студенческий файлообменник
1 монета
doc

Лабораторная № 3 «Создание таблиц базы данных» по Базам данных (Шурыгин В. Н.)

Создание таблиц. Команды CREATE TABLE и DROP TABLE

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

Команда CREATE TABLE

Создание таблиц начнем с таблицы списка заказов(рис1). В таблице ORDERS четыре поля. Поле OrderID - это – первичный ключ. Поле CustomerID– внешний ключ. Остальные поля задают информацию, определяющую заказ.

Рис1.

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

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

orderid –идентификатор заказа

• int unsigned: тип данных – беззнаковый целый:

• not null: поле не может остаться пустым, должно быть обязательно заполнено;

• auto_increment: если при формировании поля его оставить пустым, оно будет заполнено автоматически новым значением, не встречавшимся ранее в других записях данной таблицы;

• primary key: поле представляет собой первичный ключ.

сustomerid – идентификатор заказчика, которому принадлежит заказ. Тип поля беззнаковый целый, поле при заполнении не может оставаться пустым.

amount - сумма заказа. В момент формирования ее значение неизвестно. Когда заказ будет сформирован, сумму нужно будет подсчитать и занести в это поле.

date – поле, хранящее дату заказа. Его тип date позволяет отображать дату в виде YYYY-MM-DD, где YYYY –4-х значное представление года (диапазон значений от 1000 до 9999); MM - это месяц (диапазон 01-12); DD - день (диапазон 01-31,верхняя граница зависит от месяца).

Мы разобрали способ определения первой таблицы. Прежде, чем дать определение оставшихся таблиц, проверим, создалась ли таблица ORDERS.(рис2)

Рис2.

Монитор mysql показывает, что требуемая таблица существует. Монитор можно использовать, чтобы просмотреть атрибуты интересующей нас таблицы. Сделать это можно, используя команду DESCRIBE.(рис3.)

Рис3.

Для удаления таблиц со всем их содержимым применяется команда DROP TABLE. Приведем пример этой команды

mysql> DROP TABLE orders;

Query OK, 0 rows affected (0.00 sec)

mysql> SHOW TABLES;

Empty set (0.01 sec)

mysql> Создание таблиц в пакетном режиме

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

DROP TABLE IF EXISTS orders;

CREATE TABLE orders

( orderid int unsigned not null auto_increment primary key,

customerid int unsigned not null,

amount float(6,2),

date date not null

); DROP TABLE IF EXISTS customers;

CREATE TABLE customers

( customerid int unsigned not null auto_increment primary key,

name char(30) not null,

address char(40) not null,

city char(20) not null

);

DROP TABLE IF EXISTS books;

CREATE TABLE books

( isbn char(13) not null primary key,

title char(60) not null,

price float(4,2) not null

); DROP TABLE IF EXISTS order_items;

CREATE TABLE order_items

( isbn char(13) not null,

orderid int unsigned not null,

primary key(isbn, orderid),

quantity int unsigned not null

);

DROP TABLE IF EXISTS book_reviews;

CREATE TABLE book_reviews

( isbn char(13) not null,

review text

); DROP TABLE IF EXISTS book_authors;

CREATE TABLE book_authors

( isbn char(13) not null,

author char(30) not null,

primary key(isbn, author)

); DROP TABLE IF CREATE book_stores;

CREATE TABLE book_stores

( book_store int unsigned not null auto_increment primary key,

city char(20) not null,

address char(40) not null

); DROP TABLE IF EXISTS book_qty;

CREATE TABLE book_qty

( isbn char(13) not null,

book_store int unsigned not null,

primary key(isbn, book_store),

quantity int unsigned

); companies;

CREATE TABLE companies

( companyid int unsigned not null auto_increment primary key,

company char(30) not null,

city char(20) not null,

address char(40) not null

); В этом файле записаны команды CREATE TABLE для всех таблиц базы данных BOOKS. Практически все атрибуты и типы данных нам известны. Для определения полей, определяемых символьными строками, использован тип CHAR. Значение, указанное в скобках, определяет максимальную длину символьного поля. Для записи рецензий используется поле типа TEXT.

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

CREATE TABLE book_qty

( isbn char(13) not null,

book_store int unsigned not null,

primary key (isbn, book_store),

quantity int unsigned

); Небольшое добавление состоит в том, что перед каждой командой CREATE TABLE добавлена команда удаления таблицы с соответствующим именем (если такая существует). Например,

DROP TABLE IF EXISTS companies;

CREATE TABLE companies

( companyid int unsigned not null auto_increment primary key,

company char(30) not null,

city char(20) not null,

address char(40) not null

);

последовательность команд, которая сначала удаляет таблицу companies, предварительно проверяя ее существование, а затем создает эту таблицу в соответствии с определением в CREATE TABLE.

Пусть указанная последовательность сохранена в файле books.sql, тогда эта последовательность команд может быть выполнена в пакетном режиме.(рис4 – 9)

Рис4.

Рис5.

. Рис6.

Рис7.

Рис8.

Рис9.

После того, как успешный прогон пакетного файла book.sql завершен, можно войти в монитор в интерактивном режиме и просмотреть какие таблицы были созданы.(рис10)

Рис10.

Мы видим, что все необходимые нам таблицы созданы. Вполне вероятно, мы захотим проверить описание таблиц. Выберем, к примеру, таблицу ORDER_ITEMS: (рис11)

Показать полностью…
Похожие документы в приложении