Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Операторы сравнения




Язык SQL, его достоинства. Классификация операторов SQL

SQL (Structured Query Language) - символизирует собой Структурированный Язык Запросов. Это - язык, который дает возможность создавать, модифицировать и удалять данные и их структуры в реляционных и постреляционных базах данных.

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

Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов) и уже давно одобрен ISO (Международной Организацией по Стандартизации). Однако большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны.

Иногда они несколько нарушают стандарт языка, хотя хорошие идеи, имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе в силу полезности своих качеств. В этом пособии излагается классический (исходный) вариант SQL соответствующий стандарту ANSI, хотя в практике чаще используются его модификации (Microsoft SQL, SQL Plus, ISQL, MySQL...). Кроме количества диалектов языка SQL он наделен еще одним признаком классификации: статический SQL и динамический SQL

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

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

1) Рассматриваем строку таблицы;

2) Выполняем сверку условия - является ли эта строка нужной;

3) Если это так, сохраняем ее в буфере;

4) Переходим к следующей строке и повторяем шаг 1;

5) Если строк больше нет, выводим все значения сохраненные в шаге 3.

Некоторые СУБД и прикладные программы поддерживают еще одну возможность формирования запросов. Для этого используется принципиально другой язык - QBE (Question By Example) - язык запросов по образцу. Концепция этого языка очень проста - пользователь визуально формирует образец (создаёт шаблон) поиска и видит результат выполненной операции. Диалог обычно реализуется с помощью мастеров. Внешний вид шаблона - табличный.

Хотя SQL используется большинством реляционных СУБД, он не является полноценным языком программирования, в нем нет операторов проверки условий, организации циклов и т. п., он является подъязыком, предназначенным для управления базами данных, его операторы встраиваются в базовый язык программирования для работы с БД.

 

Успех SQL принесли следующие его достоинства:

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

2) Переносимость на другие вычислительные системы: информация корпоративных систем может бать загружена в личные БД, приложения можно вначале смоделировать в экономичных персональных компьютерах, а затем перенести на дорогие много пользовательские системы.

3) Стандарт языка SQL (последний вариант 1992 г.) поддерживается во всем мире, используется в среде ОС UNIX, поддерживается в протоколе ODBC, т.е. фактически одобрен другими стандартами.

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

5) Высокоуровневая структура, напоминающая английский язык. В отличие от формальных языков программирования, таких как Pascal или С++, SQL является легким для понимания, слабо структурированным языком: его операторы напоминают английские предложения и содержат слова «пустышки», не влияющие на смысл оператора, но облегчающие его чтение. Операторы SQL описывают данные, которые надо получить, а не способы их получения. Таблицы и столбцы в БД могут иметь длинные описательные имена и поэтому большинство операторов означает именно то, что соответствует их именам.

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

7) Программный доступ к базе данных. Одни и те же операторы SQL используются как для интерактивного, так и для программного доступа, поэтому те части программ, которые обращаются к БД можно вначале тестировать в интерактивном режиме.

8) Различные представления данных – Представления пользователя, содержащие только нужные ему сведения, можно строить с помощью SQL.

9) Полноценный язык работы с БД для создания, управления работой, изменения содержимого, совместного использования многими пользователями БД, хотя первоначально был задуман лишь для интерактивных запросов.

10) Динамическое определение данных, т.е. возможность динамически изменять и расширять структуру БД, даже во время обращений пользователей к ее содержимому - это преимущество перед языками статического определения данных, запрещающими доступ к БД во время изменения ее структуры. Дает возможность гибко адаптироваться к изменению требований, не прерывая работы приложений в реальном масштабе времени.

11) Архитектура клиент-сервер естественно поддерживается SQL, позволяя клиентским компьютерам взаимодействовать с сетевыми серверами или крупными БД на больших ЭВМ, получать доступ к корпоративным ресурсам с персональных компьютеров.

12) Поддержка SQL в компьютерных системах на основе UNIX. Это важно учитывая растущее значение UNIX, особенно в дорогих научных и инженерных системах.

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

14) Возможность работы SQL в локальных сетях связана с поддержкой архитектуры клиент-сервер.

Классификация операторов SQL

1) Команды подключения к БД. Все современные БД поддерживают сетевую многопользовательскую работу. Сеанс работы начинается подключением пользователя к системе по команде CONNECT и заканчивается отключением от БД по команде DISCONNECT или аварийным завершением программы по команде EXIT. Подключение и отключение к БД происходит обычно в фоновом режиме, так как эти операторы выполняются программно. Сеансы доступа к данным могут автоматически отслеживаться администраторами БД, т.к. они связываются с учетными записями пользователей.

2) DDL – язык определения данных позволяет разработчику создавать различные объекты и информационные структуры. Основные команды языка:

CREATE TABLE - создание таблицы;

ALTER TABLE - модификация структуры таблицы;

DROP TABLE - удаление таблицы;

CREATE VIEW - создание представлений пользователя;

Представление является виртуальным именованным отношением, которого реально в базе данных не существует, но которое создаётся по требованию отдельного пользователя на время его работы в момент поступления этого требования.

DROP VIEW - удаление представлений пользователя;

CREATE INDEX - создание индекса;

Индекс – специальная таблица, которая используется для адресации записей по упорядоченным ключам. С этой таблицей связана процедура определения адреса записи во внешней памяти по значению ключа.

DROP INDEX - удаление индекса;

Описание созданных структур (скрипты создания) находится в системном каталоге БД.

3) DML - язык манипулирования данными позволяет разработчику и пользователю манипулировать данными внутри объектов БД:

INSERT - вставка (добавление в конец таблицы) новых строк;

UPDATE - обновление (модификация) записей;

DELETE - удаление записей;

Все команды манипулирования действуют только в рамках полномочий, предоставленных пользователю администратором БД.

4) DQL – язык запросов к данным представляет единственныйоператор выбора SELECT. Его синтаксис содержит множество опций и параметров, позволяющих конструировать запросы любой сложности. Запрос - это команда, которая выполняется СУБД. Результат запроса отображается на экране компьютера или представляет собой входную информацию для выполнения другой команды, например, манипулирования данными. Все запросы в SQL состоят из одиночной команды, но в нее могут быть вложены другие. Структура этой команды обманчиво проста, потому что вы должны расширять ее так чтобы выполнить высоко сложные оценки и обработки данных.

SELECT * FROM TPol;

SELECT ФИО, Адрес FROM TAbonents;

Оператор DISTINCT

Удаление избыточных данных позволяет не выбирать из таблиц повторяющиеся группы записей. Очень часто используется, когда БД еще не приведена к нормальным формам. Аргумент DISTINCT - это "отличие".

SELECT DISTINCT Дата_установки FROM TAbonents;

Оператор ALL

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

SELECT ALL Дата_установки FROM TAbonents;

Оператор WHERE

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

SELECT * FROM TAbonents WHERE ПАСПОРТ=679237;

SELECT * FROM TAbonents WHERE (ПАСПОРТ = 679237) OR (ФИО = 'Жуйченко Женя');

SELECT * FROM TAbonents WHERE (ID = 3) AND (ФИО = 'Иванов Иван Иванович');

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

> Больше чем

< Меньше чем

>= Больше чем или равно

<= Меньше чем или равно

<> Не равно

SELECT * FROM TAbonents WHERE (ДАТА ВЫДАЧИ <> 6/01/1997);

Оператор NOT

Очень эффективным может быть применение логического отрицания:

SELECT * FROM TAbonents

WHERE NOT (ФИО = 'Иванов Иван Иванович');

SELECT * FROM TAbonents

WHERE NOT ((ФИО = 'Иванов Иван Иванович') AND (ID = 1));

Оператор IN

Оператор IN определяет набор (массив) значений, с элементами которого будет сравниваться текущее поле записи:

SELECT * FROM TAbonents

WHERE ФИО IN ('Иванов', 'Петров');

 

SELECT* FROM TAbonents

WHERE ПАСПОРТ IN (675537, 326751, 656729);

Оператор BETWEEN

Оператор BETWEEN позволяет указать, что значение должно находиться в указанном диапазоне значений (важен порядок значений!):

SELECT * FROM TAbonents

WHERE ПАСПОРТ BETWEEN 670000 AND 690000;

SELECT * FROM TAbonents

WHERE ФИО BETWEEN 'A' AND 'K';

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

SELECT * FROM TAbonents

WHERE (ПАСПОРТ BETWEEN 670000 AND 690000) AND NOT (ПАСПОРТ IN (670000, 690000));

 

Оператор LIKE

Оператор LIKE, который работает с полями типа CHAR или VARCHAR позволяет с помощью спец. символов указывать шаблоны похожих записей:

а) "_" замещает любой одиночный символ('b_t' -> 'bat', 'bit')

б) "%" замещает любую последовательность символов ('%p%t' -> 'put', 'posit')

 

SELECT * FROM TAbonents WHERE (АДРЕС LIKE 'ул%');

SELECT * FROM TAbonents WHERE (АДРЕС LIKE '%и%');

Если нужно найти строку, содержащую символ шаблона (процент или знак подчеркивания), следует определить одиночный символ как символ ESC. Слово ESC используется сразу перед процентом или подчеркиванием в предикате, и означает, что процент или подчеркивание будет интерпретироваться как символ значения, а не как символ маски.

SELECT * FROM TAbonents

WHERE Адрес LIKE '%а%_'ESCAPE;

Слово ESCAPE определяет % как символ ESC. Символ ESC, используемый в LIKE строке, сопровождается знаком процента, знаком подчеркивания, или знаком ESCAPE, который будет искаться в столбце, а не обрабатываться как групповой символ. Символ ESC должен быть одиночным символом и применяться только к одиночному символу сразу после него. В нашем примере символ процента (в начале) и символ процента (в окончании) обрабатываются как символы шаблона, а подчеркивание является искомым символом. Символ ESC может также использоваться самостоятельно. Для этого он вводится в строку шаблона дважды. Например, ищем строку '/_/'.

SELECT * FROM TAbonents

WHERE Адрес LIKE ' % /_ / %'ESCAPE;

Строка сравнивается с содержанием любой последовательности символов (%), после которой имеется комбинация искомая символов (/_/), после чего может находиться другая произвольная последовательность (%).




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 814; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.