Автор работы: Пользователь скрыл имя, 05 Ноября 2009 в 13:11, Не определен
Лекции
С
помощью специальных операторов
выделим из этой таблицы:
а)
подмножество строк
SELECT Сорт, Год, Количество_бутылок
FROM Винный_погреб WHERE Год = 80;
В результате получаем:
Сорт | Год | Количество_бутылок |
Каберне | 80 | 12 |
Изабелла | 80 | 28 |
б)
подмножество столбцов
SELECT Сорт, Количество_бутылок FROM
Винный_погреб
В результате получаем:
Сорт | Количество_бутылок |
Каберне | 12 |
Рислинг | 14 |
Изабелла | 28 |
Мадера | 1 |
Оба результата являются таблицами, а операторы SELECT - это операторы языка запросов к БД, называемого SQL (Structured Query Language – Язык структурированных запросов).
Учебная
БД состоит из 3 таблиц.
1) Таблица поставщиков товаров "S".
nomer | familia | kapital | gorod |
S1 | Смит | 20 | Лондон |
S2 | Джонс | 10 | Париж |
S3 | Блейк | 30 | Париж |
S4 | Кларк | 20 | Лондон |
S5 | Адамс | 30 | Саров |
2) Таблица деталей, которые они поставляют "P".
nomer | nazvan | zvet | ves | gorod |
P1 | Гайка | Красный | 12 | Лондон |
P2 | Болт | Зеленый | 17 | Париж |
P3 | Винт | Голубой | 17 | Рим |
P4 | Винт | Красный | 14 | Лондон |
P5 | Кулачок | Голубой | 12 | Париж |
P6 | Блюм | Красный | 19 | Лондон |
3) Таблица поставок (какой поставщик, какие детали поставляет) "SP".
nomer_s | nomer_p | kol |
S1 | P1 | 300 |
S1 | P2 | 200 |
S1 | P3 | 400 |
S1 | P4 | 200 |
S1 | P5 | 100 |
S1 | P6 | 100 |
S2 | P1 | 300 |
S2 | P2 | 400 |
S3 | P2 | 200 |
S4 | P2 | 200 |
S4 | P4 | 300 |
S4 | P5 | 400 |
S - поставщики. Каждый поставщик имеет уникальный номер, фамилию (не обязательно уникальную), капитал и местонахождение.
P - детали (их виды). Каждый вид детали имеет уникальный номер, название, цвет, вес и город, где хранится этот вид детали. Каждый вид имеет только один вид и вес и хранится на складе только одного города (упрощение).
SP
- поставки деталей. Связывает
между собой две предыдущие
таблицы.
Например, первая строка связывает поставщика S1 (Смит) с деталью P1 (гайка), т.е. означает поставку трехсот деталей вида P1 поставщиком S1.
Пусть для любого поставщика имеется только одна поставка детали некоторого вида, т.е. пара (nomer_s, nomer_p) является уникальной.
На этом примере отметим несколько важных для РБД обстоятельств:
1)
Значения данных во всех
S2 P1
S2 P2
а не так:
S2 {P1, P2}
2) В каждом столбце хранятся данные только одного типа.
3) БД представляется только в виде явных значений данных. Не существует никаких явных связей и указателей, соединяющих одну таблицу с другой. Связь представляется не с помощью указателя, а значениями клеток в таблицах.
4) Строки в таблицах не требуют никакого упорядочивания.
5)
Редко возникают ситуации, когда
упорядочение столбцов
Структура
БД определяется оператором CREATE.
CREATE TABLE S (
nomer CHAR(5),
familia CHAR(20),
kapital SMALLINT,
gorod CHAR(15) );
CREATE TABLE P (
nomer CHAR(6),
nazvanie CHAR(20),
zvet CHAR(7),
ves SMALLINT,
gorod CHAR(15) );
CREATE TABLE SP (
nomer_s CHAR(5),
nomer_p CHAR(6),
kol INTEGER );
Это операторы создания таблиц языка SQL. Они создают имена таблиц, столбцов и типы данных для этих столбцов.
Оператор CREATE, как и все операторы SQL, выполняемый. Как только СУБД его исполнит, появится таблица, которая будет пустой, т.е. будет содержать лишь заголовки столбцов. Для наполнения таблиц есть другие операторы.
1. Символьный - CHAR(<длина>). Длина <= 32767.
2. Целочисленный со знаком
а) INTEGER <= | 2 147 483 647 |
б) SMALLINT <= | 32767 |
3. Действительное число - FLOAT
Содержит 7 значащих десятичных цифр (доверительные).
1.175494351E-38 - самое маленькое
3.402823446E+38 - самое большое
4. Дата – DATE. 1 янв 100 ... 29 фев 32768
Пример по учебной БД: Выбрать номера и капиталы всех поставщиков из Парижа.
Выборка данных делается с помощью оператора SELECT.
SELECT
nomer, kapital FROM S WHERE gorod='Париж'
Результат:
nomer | kapital |
S2 | 10 |
S3 | 30 |
Общий,
но не полный вид оператора SELECT.
SELECT [DISTINCT] <список элементов> FROM <список таблиц>
[WHERE <условия>]
[GROUP BY <список столбцов>]
[ORDER
BY <список сортировки>]
Серия примеров.
1.
Простая выборка. Выбрать
SELECT
nomer_p FROM SP
Результат:
nomer_p |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
P1 |
P2 |
P2 |
P2 |
P4 |
P5 |
2. Выборка с исключением
SELECT
DISTINCT nomer_p FROM SP.
Результат:
nomer_p |
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
3.
Выборка вычисляемых значений. Выбрать
номера и капиталы всех
SELECT
nomer, kapital*30 FROM S
Результат:
nomer | COLUMN2 |
S1 | 600 |
S2 | 300 |
S3 | 900 |
S4 | 600 |
S5 | 900 |
Части
SELECT и WHERE могут содержать арифметические
выражения и константы.
SELECT
nomer, 'Капитал в рублях =', kapital*30 FROM S
Результат:
nomer | COLUMN2 | COLUMN3 |
S1 | Капитал в рублях = | 600 |
S2 | Капитал в рублях = | 300 |
S3 | Капитал в рублях = | 900 |
S4 | Капитал в рублях = | 600 |
S5 | Капитал в рублях = | 900 |