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

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

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

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

Все запросы компьютерного курса SQL 25


Компьютерные курсы: примеры SQL запросов

На этой странице я собрал все SQL запросы компьютерного курса работы с базой данных SQL 25™ в одном месте с целью предоставить возможность пользователям быстро найти вопрос, который их интересует и так же быстро получить на него ответ. Все запросы приведены с их кратким описанием. Чтобы ознакомиться с любым из них более подробно и посмотреть результат его выполнения, переходите по ссылкам-заголовкам (названия шагов обучения) и попадете в нужный вам раздел программы обучения. Первая и большая часть структурированных запросов к базе данных связана с выбором данных, вторая - с их модификацией. Синтаксис соответствующих SQL инструкции приведен в начале каждого из разделов.

Часть 1. Команда SELECT

Синтаксис SQL команды выбора данных

SELECT * | { [ DISTINCT | ALL] <value expression>.,..}
   FROM { <table name> [ <alias> ] }.,..
   [ WHERE <predicate>]
   [ GROUP BY { <column name> | <integer> }.,..]
   [ HAVING <predicate>]
   [ ORDER BY { <column name> | <integer> }.,..]

   [ { UNION [ALL]

SELECT * | { [DISTINCT | ALL] < value expression >.,..}
   FROM { <table name> [<alias>]} .,..
   [ WHERE <predicate>
   [ GROUP BY { <columnname> | <integer> }.,..]
   [ HAVING <predicate>]
   [ ORDER BY { <columnname> | <integer> }.,..] } ] ...;

Элементы, используемые в команде SELECT

<value expression> - выражение, определяющее значение. Оно может включать в себя или содержать перечень колонок запроса (полей таблиц) <column name>.
<table name> - имя или псевдоним (синоним) таблицы или подзапроса.
<alias> - временный псевдоним для имени таблицы <table name>, используемый только в текущем запросе.
<predicate> - условие, которое может быть верным или неверным для каждой строки или комбинации строк таблицы в предложении FROM.
<column name> - колонка запроса (имя поля таблицы).
<integer> - целое число, которое отражает порядковый номер колонки запроса (поля таблицы) в запросе.

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

Выбор всех данных из определенной таблицы.
SELECT * FROM D_STAFF

Выбор только отдельных полей таблицы.
SELECT S_NAME, S_EXPERIENCE FROM D_STAFF

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

Выбор данных с простым условием отбора.
SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE < 5

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

Выбор данных со сложным (составным) условием, состоящим из простых условий, соединенных логическими операциями AND и OR.

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

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

Применение оператора BETWEEN для определения диапазона значений в предложении WHERE.

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

Шаг 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 'С%Вал%ич'

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

Изменение представления табличного представления результата SQL запроса с использованием псевдонимов полей.

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

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

Составление запроса для отображения иерархии ‘начальник - подчиненный’ среди персонала. Для выделения подмножества начальников и подчиненных используются псевдонимы таблиц.

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

Шаг 8. Простая сортировка

Пример простейшей сортировки данных по целочисленному полю.
SELECT S_NAME, S_EXPERIENCE FROM D_STAFF WHERE S_EXPERIENCE < 5 ORDER BY S_NAME

Шаг 9. Сложная сортировка

Составная сортировка по двум полям с разным режимом упорядочивания данных: по возрастанию и по убыванию.
SELECT S_EXPERIENCE, S_NAME FROM D_STAFF ORDER BY S_EXPERIENCE DESC, S_NAME ASC

Шаг 10. Пересечение или INNER JOIN

Примеры запросов с внутренним соединением (пересечение JOIN) данных из двух таблиц.

SELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID 
FROM D_STAFF INNER JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID 
ORDER BY D_STAFF.S_EXPERIENCE DESC

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

SELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID 
FROM D_STAFF INNER JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID
WHERE D_STAFF.S_NAME LIKE 'Мартынов%'
ORDER BY D_STAFF.S_EXPERIENCE DESC

Шаг 11. Пересечение с необязательным присутствием слева или LEFT JOIN

Соединение данных с необязательным присутствием данных слева – в первой таблице.

SELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID 
FROM D_STAFF LEFT JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID 
ORDER BY D_STAFF.S_EXPERIENCE DESC

Шаг 12. Пересечение с необязательным присутствием справа или RIGHT JOIN

Соединение данных с необязательным присутствием данных справа – во второй таблице.

SELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID 
FROM D_STAFF RIGHT JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID 
ORDER BY D_STAFF.S_EXPERIENCE DESC

Шаг 13. Другие виды объединений JOIN

Обзор других видов соединений (JOIN объединений).

Операция MINUS (вычитание)

SELECT S_NAME FROM D_STAFF
MINUS
SELECT S_NAME FROM D_STAFF WHERE S_NAME LIKE 'М%'

Полное объединение или операция FULL [OUTER] JOIN

SELECT D_STAFF.S_NAME, D_STAFF.S_EXPERIENCE, D_STAFF_PROFILE.PROFILE_ID 
FROM D_STAFF OUTER JOIN D_STAFF_PROFILE ON D_STAFF_PROFILE.STAFF_ID=D_STAFF.XD_IID 
ORDER BY D_STAFF.S_EXPERIENCE DESC

“Каждый с каждым” или операция декартова произведения CROSS JOIN

SELECT D_STAFF.S_NAME
FROM D_STAFF 
CROSS JOIN (SELECT D_STAFF_PROFILE.PROFILE_ID FROM D_STAFF_PROFILE)

Шаг 14. Объединение “по вертикали” или операция UNION

Объединение результатов запросов аналогичного формата (одинаковой ширины и совместимого формата данных).

SELECT S_NAME AS NAME FROM D_STAFF
UNION
SELECT P_NAME AS NAME FROM D_PROFILE
Объединение результатов запросов с критериями отбора в предложении WHERE.
SELECT S_NAME AS NAME FROM D_STAFF
WHERE S_NAME LIKE '%анд%'
UNION
SELECT P_NAME AS NAME FROM D_PROFILE
WHERE P_NAME LIKE 'фин%'

Шаг 15. Функции SUM, AVG, MIN, MAX, COUNT…

Использование функций в SQL запросах.

SELECT AVG(D_STAFF.S_EXPERIENCE) AS [СРЕДНИЙ СТАЖ СОТРУДНИКОВ] FROM D_STAFF
SELECT S_NAME, LEN(D_STAFF.S_NAME) AS [ДЛИНА] FROM D_STAFF
SELECT MAX(LEN(D_STAFF.S_NAME)) AS [МАКСИМАЛЬНАЯ ДЛИНА] FROM D_STAFF

SELECT 
SUM(D_STAFF.S_EXPERIENCE) AS [СУММА],
AVG(D_STAFF.S_EXPERIENCE) AS [СРЕДНЕЕ],
MIN(D_STAFF.S_EXPERIENCE) AS [МИНИМУМ],
MAX(D_STAFF.S_EXPERIENCE) AS [МАКСИМУМ],
COUNT(*) AS [КОЛИЧЕСТВО ЗАПИСЕЙ],
MAX(LEN(D_STAFF.S_NAME)) AS [МАКСИМАЛЬНАЯ ДЛИНА]
FROM D_STAFF

Шаг 16. Преобразование текста

Операции с текстом в результатах запроса. Аналогичные преобразования можно использовать в критериях отбора записей в предложении WHERE.

SELECT UCASE(D_STAFF.S_NAME) AS [UCASE(S_NAME)], 
LCASE(D_STAFF.S_NAME)  AS [LCASE(S_NAME)]
FROM D_STAFF

Шаг 17. Работа со строками

Операции со строками в результатах запросов. Части строк можно также использовать в критериях отбора записей в предложении WHERE.

SELECT UCASE(MID(P_NAME,3,5)) FROM D_PROFILE
SELECT DISTINCT UCASE(MID(P_NAME,3,5)) AS [5 СИМВОЛОВ НАЧИНАЯ С 3-ГО] FROM D_PROFILE

Шаг 18. Использование функций в критерии отбора записей. Оператор HAVING

Применение агрегатных функций в критериях отбора SQL запроса.

SELECT S_POSITION
FROM D_STAFF
GROUP BY S_POSITION
HAVING COUNT(S_POSITION)>1

Шаг 19. Группировка данных запроса оператором GROUP BY

Группировка данных в результатах SQL запроса.

SELECT PROFILE_ID AS [ID ПРОФИЛЯ], COUNT(PROFILE_ID) AS [КОЛИЧЕСТВО ЗАПИСЕЙ]
FROM D_STAFF_PROFILE
GROUP BY PROFILE_ID

Группировка по двум полям.

SELECT 
S.S_POSITION AS [ID ДОЛЖНОСТИ], 
S.S_NAME AS [СОТРУДНИК], 
COUNT(SP.STAFF_ID) AS [КОЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ D_STAFF_PROFILE]
FROM D_STAFF S, D_STAFF_PROFILE SP
WHERE S.XD_IID=SP.STAFF_ID
GROUP BY S.S_POSITION, S.S_NAME

Шаг 20. Суперпозиция SELECT

Определение подзапросов в теле основного запроса – суперпозиция SQL запросов.

SELECT S.NAME AS [СОТРУДНИК], P.NAME AS [ПРОФИЛЬ] 
FROM 
(D_STAFF_PROFILE AS SP INNER JOIN (SELECT XD_IID AS ID, S_NAME AS NAME FROM D_STAFF) S ON SP.STAFF_ID=S.ID) 
INNER JOIN (SELECT XD_IID AS ID, P_NAME AS NAME FROM D_PROFILE) P ON SP.PROFILE_ID=P.ID

Шаг 21. Работа с множествами. Операции IN и NOT IN

Использование операции над множествами (IN, NOT IN) в критериях отбора записей.

SELECT S_POSITION,  COUNT(S_POSITION) AS [КОЛИЧЕСТВО S_POSITION]
FROM D_STAFF
WHERE S_POSITION IN (22,24)
GROUP BY S_POSITION
HAVING COUNT(S_POSITION)>1
SELECT S_POSITION,  COUNT(S_POSITION) AS [КОЛИЧЕСТВО S_POSITION]
FROM D_STAFF
WHERE S_POSITION NOT IN (23)
GROUP BY S_POSITION
HAVING COUNT(S_POSITION)>1
SELECT PROFILE_ID, COUNT(PROFILE_ID) AS [КОЛИЧЕСТВО S_POSITION]
FROM D_STAFF_PROFILE
WHERE PROFILE_ID NOT IN (SELECT XD_IID FROM D_PROFILE WHERE P_NAME LIKE'Ф%')
GROUP BY PROFILE_ID

Шаг 22: SELECT. "Все вместе"

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

SELECT D_PROFILE.P_NAME AS [ПРОФИЛЬ], F.STAFF_COUNT AS [КОЛИЧЕСТВО СОТРУДНИКОВ] 
FROM D_PROFILE, 
(SELECT PROFILE_ID, COUNT(PROFILE_ID) AS STAFF_COUNT
FROM D_STAFF_PROFILE
GROUP BY PROFILE_ID
HAVING COUNT(PROFILE_ID)>1) F
WHERE D_PROFILE.XD_IID = F.PROFILE_ID

Часть 2. Команды UPDATE, INSERT, DELETE

Синтаксис SQL команд редактирования данных

UPDATE <tablename>
  SET { | }.,. .< column name> = <value expresslon> [ WHERE <predlcate>  ];

INSERT INTO < table name> [(<column name> .,. ]
  { VALUES ( <value expression> .,.. ) } | <query>;

<query> - допустимая команда SELECT.

DELETE FROM <table name>
  [ WHERE <predicate> ];

Шаг 23. Обновление данных или операция UPDATE

Обновление данных в определенных предложением WHERE строках таблицы.
UPDATE D_PROFILE SET P_COMMENTS = P_COMMENTS+'-UPDATED' WHERE P_NAME LIKE 'Ф%';

Шаг 24. Удаление данных или операция DELETE

Удаление данных в соответствии с условием предложения WHERE.
DELETE FROM D_STAFF_PROFILE WHERE STAFF_ID=0 AND PROFILE_ID=0;

Шаг 25. Добавление данных или операция INSERT

Добавление новых данных в таблицу.
INSERT INTO D_STAFF_PROFILE (XD_IID, XD_OID, STAFF_ID, PROFILE_ID) VALUES(999,3,7,75);

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

Курс для начинающих программистов на 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. Проект Инициативного Народного Фронта Образования - ИНФО-проект.