Структурированный язык запросов SQL 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структурированный язык запросов SQL



Языки баз данных

Основные элементы языка SQL

Инструкции и имена

SQL представлен множеством инструкций, каждая предписывает выполнять определенные действия. Инструкция начинается с команды – ключевого слова, описывающего выполняемое действие.

Команды: CREAT (создать), INSERT (добавит), SELECT(выбрать), DELETE (удалить).

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

Каждое предложение начинается с ключевого слова, например, WHERE (где), FROM(откуда), INTO(куда). Многие предложения в качестве параметров содержат имена таблиц или столбцов, а также могут содержать дополнительные ключевые слова, константы и выражения.

У каждого объекта в базе есть уникальное имя. Имена используются в инструкциях и указывают над каким объектом базы данных инструкция должна выполнить действие. Имена могут содержать от 1 до 128 символов, начинаться с буквы, не содержать пробелов или символов пунктуации. На практике в разных СУБД поддержка имен может быть реализована по-разному.

В инструкциях SQL используются имена объектов БД, они могут быть как полные, так и короткие. Полное имя таблицы содержит имя пользователя и имя таблицы, разделенные точкой: <Имя пользователя >.<Имя таблицы>

Полное имя столбца <Имя пользователя >.<Имя таблицы>.<Имя поля>

Короткое имя столбца <Имя таблицы>.<Имя поля>

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

 

Типы данных

В столбцах могут храниться следующие типы данных.

Целые числа: INT, SMALLINT - хранят данные о количестве, возрасте, идентификаторы.

Десятичные числа: NUMERIC, DECIMAL - дробные числа с фиксированным количеством знаков после запятой (например, курсы валют)

Числа с плавающей запятой: REAL, FLOAT – больший диапазон действительных чисел

Строки символов постоянной длины: CHAR – хранят фамилии, имена, адреса, географические названия.

Строки символов переменной длины: VARCHAR – стоки символов изменяющихся в заданном диапазоне.

Денежные величины: MONEY, SMALLMONEY

Дата и время: DATETIME, SMALLDATETIME

Булевы величины: BIT - для хранения логических значений TRUE (1), FALSE (0)

Длинный текст: TEXT – для хранения документов до 64КБ

Неструктурированные потоки данных: BINARY, VARBINARY, IMAGE – хранят графические и видеоизображения, исполняемые файлы и др.

 

Выражения

В выражениях можно использовать 4 арифметические операции: сложение (X+Y), вычитание (X-Y), умножение (X*Y) и деление (X/Y). Для формирования сложных выражений используются круглые скобки.

Значения NULL

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

Операции с таблицами

 

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

Создание таблицы

 

Для создания таблицы используется оператор 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
  A  
  B  
  C  
  D  

Внешний ключ

Ссылочную целостность -в реляционной базе данных – это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы …» Следует отметить, что типы данных столбцов, используемых в этом ограничении, должны совпадать, а типы таблиц (постоянная базовая таблица, глобальная временная таблица, локальная временная таблица) родительского и внешнего ключа - соответствовать друг другу

FOREIGN KEY (имя поля внешнего ключа) REFERENCTS имя родительской таблицы

REFERENCES table (fields list) - ограничение требует совпадения значений столбцов данной таблицы с указанными столбцами родительской таблицы (Пример 3).

FOREIGN KEY (fields list) - это ограничение по внешнему ключу аналогично ограничению REFERENCES для столбцов и гарантирует, что все значения, указанные во внешнем ключе, будут соответствовать значениям родительского ключа, обеспечивая ссылочную целостность.

Пример 3

Рассмотрим создание в таблице внешних ключей.

T2
C1 C2 A1 C3
      ff
      gg
      hh
      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
Гребенев А. Н.   безналичный 389.00 12.00 12/04/98 13/04/98 10:40:00
Гребенев А. Н.   безналичный 500.00 56.00 12/04/98 12/04/98 03:10:00
Акимченко В. Г.   безналичный 560.00 20.00 13/04/98 15/04/98 02:50:00
Звягинцев Р. Т.   безналичный 125.00 23.00 15/04/98 15/04/98 09:30:00
Скрынников Е. В.   безналичный 498.00 19.00 12/04/98 13/04/98 10:25:00
Степанова Е. Д.   наличный 124.00 8.00 11/04/98 13/04/98 09:15:00
Шараева Е. Н.   наличный 875.00 100.00 10/04/98 12/04/98 10:10:00
Денисов А. В.   наличный 1200.00 267.00 14/04/98 15/04/98 09:30:00

 

Таблица "Tovary" (Товары):

Код товара Nkod

Наименование товара Cnaim

Цена Nzena

Сорт Nsort

Tovary

Nkod Cnaim Nzena Nsort
  Лак паркетный 38.90  
  Кафель отделочный 124.00  
  Обои 23.00  
  Зеркало 560.00  
  Краска    
  Натяжной потолок    
  Клеенка    

 

Импортировать заданные таблицы в новую базу данных.

Создать запросы к таблицам Pokup и Tovary, используя командуSELECT

1. Выбрать поля "Фамилия" и "Дата поступления заявки" из таблицы "Pokup".

SELECT Cfam, Dpos

FROM Pokup;

 

2. Выбрать все поля таблицы "Pokup".

SELECT Pokup.*

FROM Pokup;

Итоговые запросы

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

В качестве агрегатных функций можно использовать:

SUM() вычисляет сумму всех значений, содержащихся в столбце;

MIN() Минимальное значение;

MAX() Максимальное значение;

AVG() Среднее значение;

SUM() Сумма;

COUNT() подсчитывает количество значений, содержащихся в столбце;

COUNT(*) подсчитывает количество строк в таблице результатов запроса.

 

Новому полю, являющемуся выражением от других полей присваивается имя:

AS имя поля. Ключевоеслово AS можно использовать для присваивания псевдонимов столбцам.

 

3. Выбрать поля "Фамилия", "КодТовара", рассчитать сумму стоимости товара и доставки, название поля СуммарнаяЦена.

SELECT Pokup.Cfam, Pokup.Nkod, Ntov+Ndos AS s_m

FROM Pokup;

 

3_1. Выбрать поля "Cnaim", "Nzena" из 2 таб, вывести новую цену, увеличенную в 3 раза, название поля «НоваяЦена».

SELECT tovary.Cnaim, tovary.Nzena, nzena*3 AS НоваяЦена

FROM tovary;

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

SELECT COUNT(cfam) AS kol_vo, AVG(ntov) AS sred, max(ntov) AS m_x, min(ndos) AS m_n

FROM Pokup;

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

SELECT cfam, nkod, ntov

FROM Pokup

WHERE nkod>400;

 

Условие может строиться с использованием логической операции AND (И), OR (ИЛИ), NOT (НЕ), включать в себя операции сравнения: <, <=, >, >=, =.

 

6. Выберем из таблицы "Pokup" поля "Фамилия покупателя", "Код товара" и "Стоимость товара" для всех товаров с кодом больше 400, но меньше 700.

SELECT cfam, nkod, ntov

FROM Pokup

WHERE nkod>400 And nkod<700;

6_1. Выберем из «Pokup» всех кроме Гребенева

SELECT cfam

FROM Pokup

WHERE NOT Cfam="Гребенев А. Н.";

 

 

В условиях выборки можно использовать ключевые слова: BETWEEN, IN, LIKE, IS NULL

BETWEEN – задает диапазон значений, из которого отбираются данные, верхний и нижний пределы считаются частью диапазона.

NOT BETWEEN – значения не ходят в диапазон.

IN – задает списокзначений, с которым сравниваются отбираемые данные.

NOT IN – отбираются значения не входящие в список

LIKE – проверка на соответствие шаблону значений столбца. Шаблон - строка символ, в которую входят подстановочные знаки (* – один произвольный символ;?-любой одиночный символ, #- любое одиночное число).

NOT LIKE – выбирает строки, которые не соответствуют шаблону.

NULL – пустое поле, проверка на содержание в столбце значения NULL

При выборке пустых полей или непустых используется условие IS NULL или IS NOT NULL

 

7. Выбрать из «Pokup» поля cfam, nkod, ntov, при условии, что код товара находится между 300 и 400.

SELECT cfam, nkod, ntov

FROM Pokup

WHERE nkod BETWEEN 300 AND 400;

 

7_1. Выбрать все поля из таблицы "Pokup", при условии, что код товара должен быть равен 310, 600 или 910.

SELECT *

FROM Pokup

WHERE Pokup.Nkod IN (310,360,910);

7_2. С помощью проверки NOT IN получить значения данных, не являющихся членами заданного списка.

SELECT *

FROM Pokup

WHERE Pokup.Nkod NOT IN (310,360,910);

7_3. Выбрать все поля из таблицы "Pokup", при условии, что фамилия клиента должна начинаться с буквы "С".

SELECT *

FROM Pokup

WHERE cfam LIKE 'С*';

Запросы с группировкой

Условие группировки GROUP BY используется в том случае, если какое-либо поле содержит повторяющиеся значения. В этом случае записи с каждым повторяющимся значением будут выделены в отдельные группы, к которым можно применить агрегатные функции. Применение ключевого слова DISTINCT, записанного перед аргументом агрегатной функции к столбцу, приводит к удалению из него повторяющихся значений.

 

 

8. Выбрать из таблицы "Pokup" поле "Вид оплаты", сгруппировать по нему, рассчитать сумму стоимости товара и доставки для каждого вида оплаты (наличный, безналичный)

SELECT cvid, SUM(ntov+ndos)

FROM Pokup

GROUP BY cvid;

 

9_1. Можно использовать группировку по нескольким полям. Выбрать из таблицы "Pokup" поля "Вид оплаты" и "Код товара", сгруппировать по этим полям, рассчитать сумму стоимости товара и доставки для каждого товара и вида оплаты.

SELECT cvid, nkod, SUM(ntov+ndos)

FROM Pokup

GROUP BY Pokup.Cvid, Pokup.Nkod;

9_2. применение агрегатной функции к группе

SELECT cvid, SUM(ntov)

FROM Pokup

GROUP BY Pokup.Cvid;

Условие поиска, используемое в предложении HAVING накладываемое на группу, применяется не к отдельным строкам, а к группе в целом. В условие поиска может входить:

- Константа;

- Агрегатная функция;

- Столбец группировки, который по определению имеет одно и то же значение во всех строках группы;

- Выражение, включающее в себя перечисленные выше элементы.

На практике HAVING должно включать как минимум одну агрегатную функцию.

 

9. В предыдущем запросе наложить на группу суммы условие > 500, использовать HAVING.

SELECT Pokup.Cvid, Sum(Ntov+Ndos) AS Цена, Nkod

FROM Pokup

GROUP BY Pokup.Cvid, Nkod

HAVING (Sum([Ntov]+[Ndos])>500);

 

FROM Tovary

ORDER BY nzena;

10_1. Выбрать все поля из таблицы "Tovary" в порядке убывания сорта.

SELECT *

FROM Tovary

ORDER BY nsort DESC;

10_2. и 10_3. Выбрать 5 первых строк из таблицы Tovary

SELECT TOP 5 *

FROM Tovary;

Отсортировать по убыванию Nkod и выбрать опять 5 первых строк.

SELECT TOP 5 *

FROM Tovary

ORDER BY Nkod;

 

Внесение изменений в БД

FROM Pokup

WHERE ntov>500;

FROM Pokup, Tovary

WHERE Tovary.nkod=Pokup.nkod;

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

FROM Pokup A, Tovary B

WHERE B.nkod=A.nkod;

FROM pokup LEFT JOIN tovary

ON Pokup.nkod = Tovary.nkod

 

3. Правое соединение строится при помощи опции RIGHT JOIN…ON.

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

Вложенные запросы

Вложенный запрос (подзпрос) – запрос позволяющий использовать результат одного запроса в качестве составной части другого запроса.

1. Вывести список товаров, имеющих цену меньше средней.

SELECT Cnaim FROM Tovary

Языки баз данных

Структурированный язык запросов SQL

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

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

Для подготовки запросов применяются два основных языка описания запросов:

- Язык QBE (Query By Example) – язык запросов по образцу;

- SQL (Structured Query Language) – структурированный язык запросов.

Основное отличие между ними в способе формирования запросов:

QBE – ручное или визуальное формирование запросов;

SQL – программирование запроса.

Наглядным примером применения QBE являются запросные формы в MS Access. В диалоговом окне находятся связанные таблицы, и информация о запросе по каждому из полей, т.е. создается образец запроса.

Структурированный язык запросов SQL предназначен для обработки и чтения информации, хранящейся в БД, является непроцедурным языком программирования и не содержит операторов управления, организации подпрограмм, ввода-вывода и т.д. В связи с этим SQL автономно не используется, обычно он погружен в среду встроенного языка программирования СУБД.

Язык SQL появился в 1970-е годы. Его прототип был разработан фирмой IBM и известен под названием SEQUEL (Structured English Query Language). SQL вобрал в себя достоинства реляционной модели, в частности достоинства лежащего в ее основе математического аппарата реляционной алгебры и реляционного исчисления, используя при этом сравнительно небольшое число операторов и относительно простой синтаксис. Благодаря своим качествам язык SQL стал официально утвержденным в качестве стандарта языком работы с реляционными базами данных. Этот стандарт поддерживается всеми ведущими мировыми фирмами, действующими в сфере технологий баз данных. Использование выразительного и эффективного стандартного языка позволило обеспечить независимость разрабатываемых прикладных программных систем от конкретного типа используемой СУБД.

Говоря о стандарте языка SQL, следует заметить, что большинство его коммерческих реализаций имеют некоторые отличия от стандарта. Это, конечно, ухудшает совместимость систем, использующих различные "диалекты" SQL. Но, с другой стороны, полезные расширения реализаций языка обеспечивают его развитие и со временем включаются в новые редакции стандарта. Учитывая место, занимаемое SQL в современных информационных технологиях, его знание необходимо любому специалисту, работающему в этой области.

Язык работы с данными, который способна воспринимать СУБД, состоит из двух частей: язык определения данных (DDL) и язык манипулирования данными (DML).

DDL используется для определения схемы БД, а язык DML - для чтения и обновления данных, хранимых в базе. Эти языки называются подъязыками данных, т.к. в них нет конструкций для выполнения вычислительных операций, условных операторов и операторов цикла.

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

Унификация полных языков современных профессиональных СУБД достигается за счет внедрения объектно-ориентированного языка четвертого поколения 4GL, последний позволяет организовывать циклы, условные предложения, меню, экранные формы и сложные запросы к базам данных.

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

В нем существуют:

  • предложения определения данных (определение баз данных, а также определение и уничтожение таблиц и индексов);
  • запросы на выбор данных (предложение SELECT);
  • предложения модификации данных (добавление, удаление и изменение данных);
  • предложения управления данными (предоставление и отмена привилегий на доступ к данным, управление транзакциями и другие).

Кроме того, он предоставляет возможность выполнять в этих предложениях:

  • арифметические вычисления (включая разнообразные функциональные преобразования), обработку текстовых строк и выполнение операций сравнения значений арифметических выражений и текстов;
  • упорядочение строк и (или) столбцов при выводе содержимого таблиц на печать или экран дисплея;
  • создание представлений (виртуальных таблиц), позволяющих пользователям иметь свой взгляд на данные без увеличения их объема в базе данных;
  • запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или представления в другой таблице (реляционная операция присваивания).
  • агрегатирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т.п.

Основные элементы языка SQL

Инструкции и имена

SQL представлен множеством инструкций, каждая предписывает выполнять определенные действия. Инструкция начинается с команды – ключевого слова, описывающего выполняемое действие.

Команды: CREAT (создать), INSERT (добавит), SELECT(выбрать), DELETE (удалить).

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

Каждое предложение начинается с ключевого слова, например, WHERE (где), FROM(откуда), INTO(куда). Многие предложения в качестве параметров содержат имена таблиц или столбцов, а также могут содержать дополнительные ключевые слова, константы и выражения.

У каждого объекта в базе есть уникальное имя. Имена используются в инструкциях и указывают над каким объектом базы данных инструкция должна выполнить действие. Имена могут содержать от 1 до 128 символов, начинаться с буквы, не содержать пробелов или символов пунктуации. На практике в разных СУБД поддержка имен может быть реализована по-разному.

В инструкциях SQL используются имена объектов БД, они могут быть как полные, так и короткие. Полное имя таблицы содержит имя пользователя и имя таблицы, разделенные точкой: <Имя пользователя >.<Имя таблицы>

Полное имя столбца <Имя пользователя >.<Имя таблицы>.<Имя поля>

Короткое имя столбца <Имя таблицы>.<Имя поля>

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

 

Типы данных

В столбцах могут храниться следующие типы данных.

Целые числа: INT, SMALLINT - хранят данные о количестве, возрасте, идентификаторы.

Десятичные числа: NUMERIC, DECIMAL - дробные числа с фиксированным количеством знаков после запятой (например, курсы валют)

Числа с плавающей запятой: REAL, FLOAT – больший диапазон действительных чисел

Строки символов постоянной длины: CHAR – хранят фамилии, имена, адреса, географические названия.

Строки символов переменной длины: VARCHAR – стоки символов изменяющихся в заданном диапазоне.

Денежные величины: MONEY, SMALLMONEY

Дата и время: DATETIME, SMALLDATETIME

Булевы величины: BIT - для хранения логических значений TRUE (1), FALSE (0)

Длинный текст: TEXT – для хранения документов до 64КБ

Неструктурированные потоки данных: BINARY, VARBINARY, IMAGE – хранят графические и видеоизображения, исполняемые файлы и др.

 

Выражения

В выражениях можно использовать 4 арифметические операции: сложение (X+Y), вычитание (X-Y), умножение (X*Y) и деление (X/Y). Для формирования сложных выражений используются круглые скобки.

Значения NULL

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

Операции с таблицами

 

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

Создание таблицы

 

Для создания таблицы используется оператор 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
  A  
  B  
  C  
  D  

Внешний ключ

Ссылочную целостность -в реляционной базе данных – это согласованность между связанными таблицами. Ссылочная целостность обычно поддерживается путем комбинирования первичного ключа и внешнего ключа. Для соблюдения ссылочной целостности требуется, чтобы любое поле в таблице, объявленное внешним ключом, могло содержать только значения из поля первичного ключа родительской таблицы …» Следует отметить, что типы данных столбцов, используемых в этом ограничении, должны совпадать, а типы таблиц (постоянная базовая таблица, глобальная временная таблица, локальная временная таблица) родительского и внешнего ключа - соответствовать друг другу

FOREIGN KEY (имя поля внешнего ключа) REFERENCTS имя родительской таблицы

REFERENCES table (fields list) - ограничение требует совпадения значений столбцов данной таблицы с указанными столбцами родительской таблицы (Пример 3).

FOREIGN KEY (fields list) - это ограничение по внешнему ключу аналогично ограничению REFERENCES для столбцов и гарантирует, что все значения, указанные во внешнем ключе, будут соответствовать значениям родительского ключа, обеспечивая ссылочную целостность.

Пример 3

Рассмотрим создание в таблице внешних ключей.

T2
C1 C2 A1 C3
      ff
      gg
      hh
      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



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 223; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.56.114 (0.356 с.)