Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 06 2016 22:49:17
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Работа с базой данных. Простые SQL запросы


Шаг 1. Простейшие запросы
Шаг 2. Запрос с простым критерием отбора
Шаг 3. Запрос с составным критерием отбора
Шаг 4. Оператор BETWEEN
Шаг 5. Оператор LIKE
Шаг 6. Псевдонимы таблиц и полей
Шаг 7. Отношение “Начальник - подчиненный”
Следующий цикл: Сортировка данных
[Содержание курса]

[Выполнять SQL запросы on-line]

Шаг 1. Простейшие SQL запросы

Начнем с элементарных запросов. А как же без них? Самая лаконичная форма SQL запроса переводится как "Хочу получить все данные из этой таблицы". Результат следующего запроса – все записи со всеми полями из таблицы D_STAFF.

SELECT * FROM D_STAFF

Пример ввода SQL запроса в обучающей программе.
Ввод SQL запроса в обучающей программе.

Выбираем [раздел SQL] в проводнике слева, нажимаем [кнопку SQL] над списком справа, вводим запрос и снова нажимаем [кнопку SQL]. После подтверждения выполнения запроса список справа будет выглядеть следующим образом. В случае веб-приложения все проще: просто вводите SQL запрос в соответствующем поле и жмите [Выполнить].

Простейший SQL запрос.
Результат выполнения простейшего SQL запроса.

Использовать (*) после оператора SELECT, безусловно, удобно, особенно если неизвестно, какие поля в таблице вообще есть, но и затратно – структуры, хранящие результат запроса расходуют достаточно много “лишней” памяти, да и время на выполнение самого запроса СУБД от этого только увеличивается. Следующий вариант куда как предпочтительней, если вам нужна информация только о Ф.И.О. сотрудника и его стаже. Перевод примерно такой: "Хочу знать только это и это обо всех из таблицы..."

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF

Результат последнего SQL запроса занимает заметно меньше места "по ширине".

Результат выбора значений отдельных полей таблицы.
Выбор значений конкретных полей таблицы.

Шаг 2. SQL запрос с простым критерием отбора

Простейшие запросы практически не применимы на практике, поскольку “вытаскивают” абсолютно все записи из указанной таблицы, а таковых может быть сотни тысяч. СУБД может просто отказаться выполнять такой запрос, да и оперативной памяти на машине клиента может элементарно не хватить. Что делать с результатами таких запросов, даже если они выполняются корректно, не всегда понятно, хотя, для некоторых форм отчета пойдет. Для того чтобы наложить ограничения на отбор нужных вам записей, в SQL используется ключевое слово WHERE. Приведенный ниже запрос отбирает только сотрудников со стажем работы менее 5 лет.

SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE < 5

Инструкция WHERE: простой критерий отбора.
Использование простого критерия отбора записей.

Шаг 3. SQL запрос с составным критерием отбора

Для чего нужны составные критерии отбора записей, объяснять, я думаю, не нужно. Для того же, для чего и запросы с простыми критериями. Условия объединяются с использованием логических операций конъюнкции и дизъюнкции (операторы “И” (AND) и “ИЛИ” (OR)), а группируются с помощью скобок. Следующий запрос вернет записи о сотрудниках со стажем менее 5 лет и с дополнительным ограничением на занимаемую ими должность.

SELECT S_NAME, S_EXPERIENCE, S_POSITION FROM D_STAFF WHERE (D_STAFF.S_POSITION <10 OR D_STAFF.S_POSITION >20) AND D_STAFF.S_EXPERIENCE <5

Инструкция WHERE: составной критерий отбора.
Использование сложного критерия отбора записей.

Шаг 4. Оператор BETWEEN

Оператор BETWEEN упрощает синтаксис описания критериев, задающих интервал допустимых значений. Вместо приведенного ниже BETWEEN 3 AND 7 можно было бы написать D_STAFF.S_EXPERIENCE >=3 AND D_STAFF.S_EXPERIENCE <=7. Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

SELECT S_NAME, S_EXPERIENCE, S_POSITION FROM D_STAFF WHERE (D_STAFF.S_POSITION <10 OR D_STAFF.S_POSITION >20) AND D_STAFF.S_EXPERIENCE BETWEEN 3 AND 7

Оператор BETWEEN.
Использование оператора BETWEEN.

Шаг 5. Оператор LIKE

Этот замечательный оператор позволяет накладывать ограничения на значения текстовых полей с использованием шаблонов. Синтаксис пояснять не буду, думаю, что из примера и так все ясно. Осуществляем поиск сотрудников, с Ф.И.О. начинающегося на “С”, в середине должно встречаться “Вал” и заканчиваться все должно на “ич”. В некоторых СУБД ключевое слово LIKE можно также использовать со значениями даты и времени.

SELECT S_NAME FROM D_STAFF WHERE S_NAME LIKE 'С%' AND S_NAME LIKE '%Вал%' AND S_NAME LIKE '%ич'

или

SELECT S_NAME FROM D_STAFF WHERE S_NAME LIKE 'С%Вал%ич'

Оператор LIKE.
Использование оператора LIKE.

Шаг 6. Псевдонимы таблиц и полей

Используемым в запросе именам таблиц и полей можно определить псевдонимы. Как это делается - продемонстрировано ниже. Зачем это делается – будет показано на следующих шагах, в том числе и на шаге 7, а этот пример иллюстрирует самое очевидно использование псевдонимов в SQL – оформление результата запроса в соответствии с требованиями к удобству восприятия его человеком. Для определения псевдонима таблицы или поля в SQL используется ключевое слово AS. Результат запроса (заголовок таблицы) в данном варианте выглядит более пригодно для того, чтобы на его основе сделать отчет.

SELECT S_NAME AS Сотрудник, S_EXPERIENCE AS [Опыт работы], S_POSITION AS Должность FROM D_STAFF AS STAFF

Псевдонимы таблицы и ее полей.
Применение псевдонимов таблиц и полей.

Шаг 7. Отношение “Начальник - подчиненный”

Этот пример завершает “первые шаги” изучения SQL запросов наиболее сложным из них. Здесь мы "программируем" выдачу списка сотрудников вместе с их непосредственным руководством. Сложность в том, что записи и о тех и других хранятся в одной и той же таблице, и здесь без псевдонимов не обойтись. СУБД, в ходе обработки запроса, будет обращаться к таблице D_STAFF, как будто к двум разным таблицам (под псевдонимами STAFF и CHIEF), с тем, чтобы объединить записи в единый кортеж на основе отношения “начальник - подчиненный”. Отношение моделируется следующим образом: значение поля S_CHIEF_ID у подчиненного соответствует значению поля XD_IID его начальника.

SELECT STAFF.S_NAME AS Подчиненный, STAFF.S_POSITION AS [Должность подчиненного], CHIEF.S_NAME AS Начальник, CHIEF.S_POSITION AS [Должность начальника]
FROM D_STAFF AS STAFF, D_STAFF AS CHIEF 
WHERE STAFF.S_CHIEF_ID=CHIEF.XD_IID

Иерархии "начальник - подчиненный".
Получение иерархии "начальник - подчиненный" с использованием в SQL запросе псевдонима таблицы.

Следующий цикл: Сортировка данных.



Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.