Скачиваний:
39
Добавлен:
04.04.2013
Размер:
728.06 Кб
Скачать

Продавцы

SNUM

SNAME

CITY

COMM

1001

Иванов

Москва

0.12

1002

Петров

Екатеринбург

0.13

1004

Сидоров

Москва

0.11

1007

Егоров

Санкт-Петербург

0.15

1003

Васильев

Смоленск

0.10

Заказчики

CNUM

CNAME

CITY

RATING

SNUM

2001

Белкин

Москва

100

1001

2002

Зайцев

Новосибирск

200

1003

2003

Орлов

Екатеринбург

200

1002

2004

Соколов

Владивосток

300

1002

2006

Медведев

Москва

100

1001

2008

Волков

Екатеринбург

300

1007

2007

Грачев

Новосибирск

100

1004

Заказы

ONUM

AMT

ODATE

CNUM

SNUM

3001

18.69

2002-10-03

2008

1007

3003

767.19

2002-10-03

2001

1001

3002

1900.10

2002-10-03

2007

1004

3005

5160.45

2002-10-03

2003

1002

3006

1098.16

2002-10-03

2008

1007

3009

1713.23

2002-10-04

2002

1003

3007

75.75

2002-10-04

2004

1002

3008

4723.00

2002-10-05

2006

1001

3010

1309.95

2002-10-06

2004

1002

3011

9891.88

2002-10-06

2006

1001

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

Продавцы

Поле

Назначение

snum

уникальный номер продавца

sname

имя продавца

city

расположение продавца (город)

com

комиссия от суммы сделки

Заказчики

Поле

Назначение

cnum

уникальный номер заказчика

cname

имя заказчика

city

расположение заказчика (город)

rating

код указывающего уровень предпочтения данного заказчика перед другими.

snum

номер продавца назначенного этому заказчику (из таблицы "Продавцы")

Заказы

Поле

Назначение

onum

уникальный номер заказа

amt

стоимость заказа

odate

дата получения заказа

cnum

номер заказчика (из таблицы "Заказчики")

snum

номер продавца, оформившего заказ (из таблицы "Продавцы").

SqLзапросы к реляционной базе данных

В данном разделе будут приведены примеры SQL запросов к реляционной базе данных. Все запросы, рассматриваемые в данном разделе адаптированы для применения в СУБД MySQL. О некоторых особенностях реализации языка SQL в СУБД MySQL будет рассказано ниже.

Команды языка SQL можно условно разделить на две категории:

  • команды определения данных – предназначенные для создания/модификации объектов (таблиц, записей, индексов)

  • команды манипулирования данных – предназначенные для организации выборки данных

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

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

В различных СУБД базовые типы данных могут сильно различаться. Ниже будет приведены типы данных, характерные для СУБД MySQL.

TINYINT – целое число в диапазоне от -128 до 127.

SMALLINT - целое число в диапазоне от -32768 до 32767.

MEDIUMINT - целое число в диапазоне от -8388608 до 8388607.

INT - целое число в диапазоне от -2147483648 до 2147483647.

BIGINT - целое число в диапазоне от -9223372036854775808 до 9223372036854775807

FLOAT[(M,D)] – вещественное число. Диапазоны значений от

-3.402823466E+38 до -1.175494351E-38, 0 и от 1.175494351E-38 до 3.402823466E+38. M – количество десятичных символов в представлении числа, D – количество знаков после запятой.

DATE – дата, представляемая в формате 'ГГГГ-ММ-ДД'.

Диапазон от '1000-01-01' до '9999-12-31'.

CHAR(M) – строка длиной M символов. Для хранения данных резервируется М байт памяти. В случае, если хранимая строка короче, оставшееся место остается незаполненным. Длина строки может быть от 1 до 255 символов.

VARCHAR(M) – строка длиной от 1 до M символов, в зависимости от размера хранимой строки. Длина строки не может превышать 255 символов.

TEXT - строка длиной до 65535символов.

MEDIUMTEXT – строка длиной 16777215 символов.

LONGTEXT - строка длиной 4294967295 символов.

Построение и последующее управление базой данных с использованием SQL-запросов можно осуществить при помощи стандартного клиента, имеющегося в составе СУБД MySQL (аналогичного эффекта можно добиться при помощи встроенных функций PHP, которые будут рассмотрены в разделе "взаимодействие PHP и MySQL"). Программа-клиент представляет собой консольное приложение, работающее в текстовом режиме. Процесс взаимодействия пользователя с СУБД заключается в последовательном вводе SQL-запросов. Клиент отображает результаты запросов, выводит сообщения о синтаксических ошибках в запросах, а так же обладает рядом сервисных функций, расширяющих возможность языка SQL (более подробную информацию можно найти в документации, поставляемой вместе со свободно распространяемой СУБД MySQL).

Создадим базу данных, разместим внутри нее таблицы согласно структуре, разработанной в предыдущем разделе ("Построение реляционной базы данных").

create database mybase;

В результате будет создана база банных с именем mybase

use mybase;

Эта команда не описана в стандарте языка SQL и является внутренней директивой MySQL. Команда предназначена для выбора текущей базы данных (СУБД может одновременно обслуживать несколько баз данных). Все последующие запросы, в которых не будет явным образом указана база данных, будут адресоваться к текущей базе данных.

create table salespeople (snum int not null primary key, sname varchar(30) not null, city varchar(30) not null, comm float(3,2) not null);

Команда создает таблицу "Продавцы". Атрибут not null означает, что значение данного поля должно быть обязательно определено. Атрибут primary key (первичный ключ) означает, что данное поле содержит уникальный идентификатором записи. В таблице не может быть нескольких записей с одинаковым первичным ключом.

create table customers (cnum int not null primary key, cname varchar(30) not null, city varchar(30) not null, rating int default 0, snum int not null);

Создается таблица "Заказчики".

create table orders (onum int not null primary key, amt float(6,2) not null, odate date not null, cnum int not null, snum int not null);

Создается таблица "Заказы".

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