Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Реляционный способ доступа к данным. Язык SQL.

Поиск:
Реляционный способ доступа к данным основывается на операциях с группами записей. Для задания операций используются средства языка структурированных запросов – SQL (Structured Query Language), поэтому реляционный способ доступа к данным называется также SQL-ориентированным.
Основным достоинством реляционного способа доступа является небольшая загрузка сети, поскольку передаются только запросы и результат их выполнения.

ОСНОВНЫЕ СВЕДЕНИЯ О ЯЗЫКЕ SQL
Язык SQL ориентирован на выполнение действий с таблицами БД и данными в этих таблицах, а также некоторых вспомогательных действий. Составленную на языке SQL программу также называют SQL-запросом.
В дальнейшем при описании операторов языка мы будем опускать несущественные операнды и элементы, используя для обозначения отдельных элементов символы < >, а необязательные конструкции заключать в квадратные скобки. Зарезервированные слова будут писаться строчными, а имена – прописными буквами. Регистр букв не влияет на интерпретацию операторов языка. Элементы в списках, например, имена полей и таблиц, должны быть разделены запятой.
В SQL-запросе допускаются комментарии, поясняющие текст программы. Комментарий ограничивается символами /* и */

ФУНКЦИИ ЯЗЫКА
Вот некоторые, наиболее употребляемые функции
1) Агрегатные функции:
AVG() – среднее значение
MAX() – максимальное значение
MIN() – минимальное значение
SUM() – сумма
COUNT() – количество значений
COUNT(*) – количество ненулевых значений
2) Функции для работы со строками
UPPER(Str) – переход к верхнему регистру
LOWER(Str) – переход к нижнему регистру
TRIM(Str) – удаление пробелов в начале и конце строки
SUBSTRING(Str FROM n1 TO n2) – выделение подстроки начиная с позиции n1 и заканчивая позицией n2
CAST(<Expression> AS <Type>) – приведение выражения к типу
3) Функции декодирования даты и времени
EXTRACT(<Элемент> FROM <Выражение>) – из выражения извлекается значение, соответствующее элемента. Элемент может содержать: YEAR, MONTH, DAY, HOUR, MINUTE или SECOND

СОЗДАНИЕ И УДАЛЕНИЕ ТАБИЦЫ
Для создания таблиц служит оператор CREATE TABLE:
Код

CREATE TABLE <Имя таблицы>
(<Имя поля> <Тип данных>,

<Имя поля> <Тип данных>);

В SQL-запрос должен входить минимум одно поле с соответствующим типом данных!
Типы данных:
SMALLINT
INTEGER
DECIMAL(X, Y)
NUMERIC(X, Y)
FLOAT(X, Y)
CHARACTER(N)
VARCHAR(N)
DATE
BOOLEAN
BLOB(N, 1)
BLOB(N, 2)
BLOB(N, 3)
BLOB(N, 4)
BLOB(N, 5)
TIME
TIMESTAMP
MONEY
AUTOINC
BYTES(N)

Пример запроса:
Код

CREATE TABLE Demo
(Number INTEGER,
Name VARCHAR(20),
BirthDay DATE);


Для удаления таблицы предназначен оператор:
Код

DROP TABLE <Имя таблицы>;

Пример:
Код

DROP TABLE Demo;


ИЗМЕНЕНИЕ СОСТАВА ТАБЛИЦЫ
Изменение состава полей таблицы выполняется оператором:
Код

ALTER TABLE <Имя таблицы>
ADD <имя поля> <тип данных>,
DROP <имя поля>,
…;

Операнд ADD добавляет в таблице новое поле, а операнд DROP удаляет из таблицы поле.
Пример:
Код

ALTER TABLE Demo
ADD Section SMALLINT,
ADD Note VARCHAR(30),
DROP position;


СОЗДАНИЕ И УДАЛЕНИЕ ИНДЕКСА
Индекс обеспечивает быстрый доступ к данным, хранимым в поле, для которого создан.
Индекс создается оператором:
Код

CREATE INDEX
<Имя индекса> ON <Имя таблицы> (<Имя поля>, …, [<Имя поля>]);

Пример:
Код

CREATE INDEX
indNamePostition ON Demo (Name, Position);

Для удаления индекса используется:
Код

DROP INDEX
<Имя таблицы>.<Имя индекса>;

Пример:
Код

DROP INDEX
Demo.indNamePosition;


ОТБОР ДАННЫХ ИЗ ТАБЛИЦ
Отбор данных из таблиц заключается в получении из них полей и записей, удовлетворяющих заданным условиям. Результат выполнения запроса, на основании которого отбираются записи, называется выборкой. Данные можно выбирать из одной или нескольких таблиц с помощью оператора SELECT:
Код

SELECT [DISTINCT] {* | <Список полей>}
FROM <Список таблиц>
[WHERE <Условие отбора>]
[ORDER BY <Список полей для сортировки>]
[GROUP BY <Список полей для группирования>]
[HAVING <Условия группировки>]
[UNION <Вложенный оператор SELECT>];

Теперь всё постепенно…
Управление полями.
Пример отбора всех полей в таблице:
Код

SELET * FROM Demo;

Пример отбора только нескольких полей из таблицы:
Код

SELECT Name, Note
FROM Demo;

Также в запрос могут входить и вычисляемые поля:
Код

SELECT Name, Code*2
FROM Demo;

Таким образом, мы получим поле Name и новое поле, созданное на основе данного Code*2, при этом ни состав, ни данные в таблице изменены не будут.
Также к какому-либо полю можно присоединить символ при помощи конкатенации (||):
Код

SELECT “- “ || Name
FROM Demo;

Таким образом, получаем при выводе «- Name», где Name – значение поля Name в таблице Demo.
Записи могут иметь одинаковые значения некоторых полей. Для избежания повторений при выводе используется перед списком полей описатель DESTINCT:
Код

SELECT DISTINCT Position
FROM Demo;

Ещё одним достоинством SQL является простота объединения в результирующем наборе данных, содержащихся в нескольких таблицах. Для этого используется список таблиц:
Код

SELECT * FROM Demo1, Demo2;

или
Код

SELECT Demo1.*, Demo2.* FROM Demo1, Demo2;

Простое условие отбора записей.
На практике набор данных обычно ограничивается записями, удовлетворяющими каким-либо определенным условиям (критериям) отбора, задаваемым с помощью операнда WHERE.
Критерий отбора представляет собой логическое выражение, в котором можно использовать операции:
1) Сравнение
= - равно
> - больше
< - меньше
>= - больше или равно
<= - меньше или равно
<> или != - не равно
!> - не больше
!< - не меньше
2) LIKE – сравнение по шаблону
3) IS NULL – проверка на нулевое значение
4) IN – проверка на вхождение
5) BETWEEN – проверка на вхождение в диапазон
Пример простого запроса с отбором
Код

SELECT Name
FROM Demo
WHERE Salary >= 4000;

Здесь продемонстрирован пример выбора по числовому полю
Пример выбора по символьному полю:
Код

SELECT *
FROM Demo
WHERE Name = ‘Кто-то’;

Для проверки нулевого значения выражения служит операция IS NULL, которая имеет следующий формат:
Код

<Выражение> IS [NOT] NULL

Пример:
Код

SELECT *
FROM Demo
WHERE Price IS NULL

Проверка на вхождение выражения в список выполняется с помощью операции IN следующего формата:
Код

<Выражение> [NOT] IN <Список значений>

Пример:
Код

SELECT *
FROM Demo
WHERE LOWER(Name) IN (‘кто-то’, ‘somebody’);

В этом запросе приведен пример работы со встроенной функцией приведения строки к нижнему регистру LOWER().
Операция BETWEEN выполняет проверку вхождения в диапазон и имеет форма:
Код

<Выражение> [NOT] BETWEEN <Минимальное значение> AND <Максимальное значение>

Пример:
Код

SELECT *
FROM Demo
WHERE BirthDay BETWEEN ’21.5.01’ AND ’27.5.01’;

Сложные критерии выбора.
Сложный критерий состоит из: простых условий, логических операций( AND – логическое и, OR – логическое или, NOT – логическое не) и круглых скобок.
Пример:
Код

SELCT *
FROM Demo
WHERE (LOWER(Name) IN (‘кто-то’, ‘somebody’)) AND (BirthDay BETWEEN ’21.5.01’ AND ’27.5.01’);

Группировка записей.
Записи результирующего набора могут быть сгруппированы по некоторому признаку. Группу образую записи с одинаковыми значениями в полях, перечисленных в списке операнда GROUP BY. Группирование записей автоматически исключает повтор значений в полях, заданных для группировки. Совместно с операндом GROUP BY можно использовать операнд HAVING, с помощью которого задаются дополнительные условия группировки (сравнимо с WHERE).
Пример:
Код

SELECT *
FROM Demo
WHERE BirthDay BETWEEN ’21.5.01’ AND ’27.5.01’
GROUP BY Name;

Сортировка записей.
Сортировка представляет собой упорядочивание записей по возрастанию или по убыванию значений полей. Список полей, по которым выполняется сортировка, указывается в операнде ORDER BY. Для указания обратной сортировки по какому-либо полю нужно указать после имени соответствующего поля описатель DESC.
Пример:
Код

SELECT *
FROM Demo
ORDER BY Name;


РЕДАКТИРОВАНИЕ ЗАПИСЕЙ
Редактирование записей представляет собой изменение значений полей в группе записей. Оно выполняется оператором UPDATE:
Код

UPDATE <Имя таблицы>
SET <Имя поля> = <выражение,

<Имя поля> = <выражение>
[WHERE <Условие  отбора>]
Пример:
[code=sql]
UPDATE Demo
SET Name = ‘asdf’
WHERE LOWER(Name) = ‘кто-то’;


ВСТАВКА ЗАПИСЕЙ
Вставка записей осуществляется с помощью оператора INSERT, который позволяет добавлять к таблицам одну или несколько записей:
Код

INSERT INTO <Имя таблицы>
[(<Список полей>)]
VALUES (<Список значений>);

Пример:
Код

INSERT INTO Demo
(Name, Note)
VALUES (‘Кто-то1’, ‘BlaBlaBla’);


УДАЛЕНИЕ ЗАПИСЕЙ
Для удаления группы записей используется оператор DELETE:
Код

DELETE FROM <Имя таблицы>
[WHERE <Условие отбора>];

Пример:
Код

DELETE FROM Demo
WHERE LOWER(Name) = ‘кто-то’;
Автор: Pakshin A. S.
Сайт: http://pakshin.com.ru/






Просмотров: 9149

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную