- •Языки баз данных Структурированный язык запросов sql
- •Создание таблицы
- •Итоговые запросы
- •Отбор строк с использованием условий поиска
- •Запросы с группировкой
- •Сортировка таблицы результатов запроса
- •Внесение изменений в бд
- •Операторы добавления, изменения и удаления данных:
- •Values ('Кондратенко а. В.', 321);
- •Вложенные запросы
Создание таблицы
Для создания таблицы используется оператор CREATE TABLE, определяет новую таблицу и подготавливает к приему данных, относится к языку определения данных DDL и имеет в стандарте SQL92 следующее формальное описание:
CREATE TABLE имя таблицы
(определение поля [,определение поля, … n],
ограничение на таблицу [,…n]);
Где: имя таблицы – имя создаваемой таблицы
Определение поля имеет вид: имя поля тип [(размер)] [ограничение на поле]
Существуют следующие ограничения, накладываемые на поле: NULL, NOT NULL, PRIMARY KEY, FOREIGN KEY, UNIQUE, DEFAULT
NULL – может содержать неопределенные значения
NOT NULL – столбец не может содержать неопределенные значения
PRIMARY KEY – задает первичный ключ отношения
UNIQUE – задается уникальность значений в столбце, такому столбцу автоматически устанавливается NOT NULL
FOREIGN KEY – внешний ключ
DEFAULT – ограничение по умолчанию
Допустимые имена в Access: названия таблиц, полей, включающих пробелы, а также символы национальных кодировок, заключаются в прямоугольные скобки. Допустимые имена имеют длину до 64 символов, не содержат «.», «!», символы «[]», и не начинаются с пробелов.
Ограничения для таблицы (table constraint) и ограничения для столбца (column constraint), называемые также ограничениями целостности, накладывают определенные условия на вводимые в таблицу данные.
Ограничения для столбца указываются непосредственно после описания столбца, а ограничения для таблицы - через запятую после описания любого столбца.
Первичный ключ таблицы – столбец (или столбцы), который уникально идентифицирует каждую строку в таблице. Кроме того первичный ключ обеспечивает ссылочную целостность данных в нескольких таблицах при наличии внешних ключей.
Можно создать первичный ключ с помощью отдельного предложения – это ограничение на таблицу
Примеры 1
CREATE TABLE T(
AА COUNTER NOT NULL,
ВА CHAR(1) UNIQUE,
СА CHAR(20) UNIQUE,
PRIMARY KEY (AA));
Если первичный ключ строится по столбцу, то столбцу приписывается атрибут PRIMARY KEY.
Примеры 2
CREATE TABLE T1(
A1 COUNTER NOT NULL PRIMARY KEY,
A2 CHAR(1) UNIQUE,
A3 CHAR(20) UNIQUE);
Таблица Т1 с полями А1,А2,А3, поле А1 – поле с первичным ключом.
Т1 |
||
А1 |
А2 |
А3 |
1 |
A |
100 |
2 |
B |
200 |
3 |
C |
300 |
4 |
D |
300 |
Внешний ключ
Ссылочную целостность - в реляционной базе данных – это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы …» Следует отметить, что типы данных столбцов, используемых в этом ограничении, должны совпадать, а типы таблиц (постоянная базовая таблица, глобальная временная таблица, локальная временная таблица) родительского и внешнего ключа - соответствовать друг другу
FOREIGN KEY (имя поля внешнего ключа) REFERENCTS имя родительской таблицы
REFERENCES table (fields list) - ограничение требует совпадения значений столбцов данной таблицы с указанными столбцами родительской таблицы (Пример 3).
FOREIGN KEY (fields list) - это ограничение по внешнему ключу аналогично ограничению REFERENCES для столбцов и гарантирует, что все значения, указанные во внешнем ключе, будут соответствовать значениям родительского ключа, обеспечивая ссылочную целостность.
Пример 3
Рассмотрим создание в таблице внешних ключей.
T2 |
|||
C1 |
C2 |
A1 |
C3 |
1 |
123 |
1 |
ff |
2 |
456 |
2 |
gg |
3 |
789 |
3 |
hh |
4 |
101 |
4 |
ii |
CREATE TABLE T2 (
C1 COUNTER NOT NULL PRIMARY KEY,
C2 CHAR(3) UNIQUE,
A1 INT NOT NULL
FOREIGN KEY (A1) REFERENCES T1,
C3 CHAR(2) NOT NULL);
В этой таблице поле А1 является внешним ключом и связывается с помощью предложения REFERENCES с одноименным полем таблицы Т1, которое является первичным ключом.
Изменение структуры таблицы
Для изменения таблицы предназначена команда ALTER TABLE имя таблицы (
{ADD, MODIFY, DROP} имя поля [тип] [NOT NULL]
[,ADD, MODIFY, DROP} имя поля [тип] [NOT NULL]]…)
Изменение структуры таблицы может состоять в добавлении (ADD), изменении (MODIFY), и удалении (DROP) одного или нескольких столбцов таблицы. Правила записи такие же, как для создания
Пример 4
В созданной ранее таблице Т1 необходимо добавит еще одно поле.
ALTER TABLE T1 ADD A4 int;
Для изменения типа данных поля используется команда ALTER COLUMN
ALTER TABLE имя таблицы
ALTER COLUMN имя поля тип
Пример 5
ALTER TABLE T1
ALTER COLUMN A4 char(5)
При удалении столбца из таблицы удаляются все данные, при этом столбец не должен быть единственным в таблице.
ALTER TABLE имя таблицы
DROP [COLUMN] имя поля
Пример 6
ALTER TABLE T2
DROP C3
Пример 7
ALTER TABLE T2
DROP A1
Ключевое поле не может быть удалено.
Удаление таблицы
Команда DROP TABLE имя-таблицы
При удалении таблицы существуют ограничения – операцию нельзя выполнить, если на таблицу с помощью ограничений целостности FOREIGN KEY ссылаются другие таблицы. Для выполнения операции такие ограничения целостности необходимо предварительно удалить.
DROP TABLE T2
Создание SQL-запросов
SQL-запрос – это структурированный язык выбора данных из одной или нескольких таблиц.
Команда SELECT
Для формирования запроса используется команда SELECT.
Обобщенный синтаксис:
SELECT [DISTINCT] Список Выбираемых Полей
FROM Список Таблиц
[WHERE Условие Выборки]
[GROUP BY Условие Группировки]
[HAVING Условие ограничения, накладываемое на группу]
[ORDER BY Условие Упорядочивания]
Обозначения: Необязательные опции заключаются в квадратные скобки. Вертикальная черта обозначает, что может быть выбрана одна из опций, которые стоят слева и справа от черты, но не обе сразу.
По умолчанию в выборку включаются все строки, опция DISTINCT (отличный от других) отображает только неповторяющиеся строки. Применяется в команде SELECT только один раз ко всему списку выбора.
Команда INTO направляет запрос в новую таблицу.
В списке выбираемых полей необходимо перечислить поля разделять запятой. В конце запроса ставится точка с запятой. При выборке всех полей ставится *.
Дано:
Таблица "Pokup" (Покупатели), с полями:
Фамилия Cfam
Код товара Nkod
Вид оплаты Cvid
Стоимость товара Ntov
Стоимость доставки Ndos
Дата поступления заявки Dpos
Дата и время выполнения Tvip
Pokup
Cfam |
Nkod |
Cvid |
Ntov |
Ndos |
Dpos |
Tvip |
Гребенев А. Н. |
441 |
безналичный |
389.00 |
12.00 |
12/04/98 |
13/04/98 10:40:00 |
Гребенев А. Н. |
910 |
безналичный |
500.00 |
56.00 |
12/04/98 |
12/04/98 03:10:00 |
Акимченко В. Г. |
310 |
безналичный |
560.00 |
20.00 |
13/04/98 |
15/04/98 02:50:00 |
Звягинцев Р. Т. |
910 |
безналичный |
125.00 |
23.00 |
15/04/98 |
15/04/98 09:30:00 |
Скрынников Е. В. |
321 |
безналичный |
498.00 |
19.00 |
12/04/98 |
13/04/98 10:25:00 |
Степанова Е. Д. |
321 |
наличный |
124.00 |
8.00 |
11/04/98 |
13/04/98 09:15:00 |
Шараева Е. Н. |
315 |
наличный |
875.00 |
100.00 |
10/04/98 |
12/04/98 10:10:00 |
Денисов А. В. |
360 |
наличный |
1200.00 |
267.00 |
14/04/98 |
15/04/98 09:30:00 |
Таблица "Tovary" (Товары):
Код товара Nkod
Наименование товара Cnaim
Цена Nzena
Сорт Nsort
Tovary
Nkod |
Cnaim |
Nzena |
Nsort |
441 |
Лак паркетный |
38.90 |
1 |
321 |
Кафель отделочный |
124.00 |
1 |
910 |
Обои |
23.00 |
2 |
310 |
Зеркало |
560.00 |
1 |
315 |
Краска |
25 |
3 |
360 |
Натяжной потолок |
200 |
1 |
520 |
Клеенка |
24 |
1 |
Импортировать заданные таблицы в новую базу данных.
Создать запросы к таблицам Pokup и Tovary, используя команду SELECT
-
Выбрать поля "Фамилия" и "Дата поступления заявки" из таблицы "Pokup".
SELECT Cfam, Dpos
FROM Pokup;
-
Выбрать все поля таблицы "Pokup".
SELECT Pokup.*
FROM Pokup;