Любой запрос, создаваемый для работ в БД, упрощает допуск к нужной информации. В предыдущей записи я говорил об общих операторах условий. В этой же записи я поговорю об операторах, которые позволят создавать запросы, способные выдать более подробную интересующую информацию, которую в то же, запросами с операторами AND, OR не так просто найти.
Одним из специальных операторов является IN
. Данный оператор позволяет задавать необходимый диапазон отображения нужной информации. Вернёмся к данным по дожникам
Debtors
Num | Month | Year | Sname | City | Address | Debt |
0001 | Июль | 2012 | Иванов | Ставрополь | Ставропольская, 1 | 50000 |
0002 | Декабрь | 2019 | Кононов | Татарка | Загородная, 254 | 684068 |
0003 | Май | 2013 | Ямшин | Михайловск | Сельская, 48 | 165840 |
0004 | Август | 2012 | Прени | Ставрополь | Центральная, 16 | 46580 |
... | ... | ... | ... | ... | ... | ... |
9564 | Март | 2015 | Улиева | Дёмино | Международная, 156 | 435089 |
9565 | Октябрь | 2012 | Павлова | Ставрополь | Вокзальная, 37 | 68059 |
9566 | Январь | 2012 | Урюпа | Михайловск | Фонтанная, 19 | 51238 |
9567 | Ноябрь | 2017 | Вальетов | Татарка | Выездная, 65 | 789654 |
Предположим, необходимо выбрать всех должников города Ставрополь или Татарка. По аналогии с предыдущей записью, нужно было бы использовать запрос
SELECT
*
FROM
Debtors
WHERE
City = "Ставрополь"
OR
City = "Татарка";
Прежде всего получается громоздкий код. С использованием специальных операторов, можно получить более компактный код.
SELECT
*
FROM
Debtors
WHERE
City IN
("Ставрополь", "Татарка");
Результатом будет
Проследим логику программы. С ключевыми словами SELECT, FROM и WHERE. А вот дальше появляется оператор IN. Он задаёт программе последовательность действий - необходимо просмотреть информацию БД, содержащую в столбце "City". А для отображения нужно выбрать данные "Ставрополь" и "Татарка".
Рассмотрю пример, в котором нужно сделать отбор по определённым суммам долга.
SELECT
*
FROM
Debtors
WHERE
Debt IN
(435089, 789654, 684068);
Результатом будет следующее
Т.е. оператор IN просматривает всю БД на наличие указанных параметров отбора информации.
Иначе обстоит дело с использованием другого специального оператора BETWEEN
. Если оператор IN
рассматривал информацию с исключительно указанными параметрами, то оператор BETWEEN
- между определёнными диапазонами. Однако, не следует проводить аналогию между переводом с английского данного оператора и его действительным предназначением. Если указывать BETWEEN 1 AND 5, то это не означает, что истинной будут числа 2, 3 и 4. Данный оператор просто воспринимается SQL как некое значение, которое может находится среди других значений. На примере это будет выглядеть следующим образом.
SELECT
*
FROM
Debtors
WHERE
Debts BETWEEN
30000 AND
100000;
Результатом будет являться
То есть SQL воспринял оператор BETWEEN
как любое значение, находящееся в диапазоне от 30000 до 100000 по столбцу "Debts".
Кроме задания приблизительных диапазонов в цифровом выражении, можно задавать алфавитные диапазоны, в которых отображается информация, содержащая первые буквы из указанного диапазона. Но, тут есть один интересный момент. Создадим следующий запрос
SELECT
*
FROM
Debtors
WHERE
Sname BETWEEN
"И" AND
"П";
Тогда отобразятся следующие данные
Закономерный вопрос: "А почему из списка выпали должники, с фамилией П рени и П авлова? Ведь первые буквы их фамилий входят в указанный диапазон!" Буквы входят, а фамилии - нет. Это связано с тем, что язык SQL в подобного рода запросах, воспринимает только ту длину поисковых строк, которые заданы. Другими словами, длина строки "П" в запросе составляет один символ, а длина строки "Прени" и "Павлова" в базе данных - пять и семь соответственно. А вот фамилия "И ванов" попадает в диапазон, поскольку диапазон начинается с И , как начала, длиной от одного символа.
SQL (ˈɛsˈkjuˈɛl; англ. structured query language - «язык структурированных запросов») - декларативный язык программирования, применяемый для создания, модификации и управления данными в реляционной базе данных.
Соответствие стандартам SQL разных БД:
SQL (Structured Query Language - язык структурированных запросов). SQL является, прежде всего, информационно-логическим языком, предназначенным для описания хранимых данных, для извлечения хранимых данных и для модификации данных.
SQL не является языком программирования. В связи с усложнением язык SQL стал более языком прикладного программирования, а пользователи получили возможность использовать визуальные построители запросов.
SQL является регистронезависимым языком. Cтроки в SQL берутся в одинарные кавычки.
Язык SQL представляет собой совокупность операторов. Операторы SQL делятся на:
операторы определения данных (Data Definition Language, DDL) - язык описания схемы в ANSI, состоит из команд, которые создают объекты (таблицы, индексы, просмотры, и так далее) в базе данных (CREATE, DROP, ALTER и др.).
операторы манипуляции данными (Data Manipulation Language, DML) - это набор команд, которые определяют, какие значения представлены в таблицах в любой момент времени (INSERT, DELETE, SELECT, UPDATE и др.).
операторы определения доступа к данным (Data Control Language, DCL) - состоит из средств, которые определяют, разрешить ли пользователю выполнять определенные действия или нет (GRANT/REVOKE , LOCK/UNLOCK).
операторы управления транзакциями (Transaction Control Language, TCL)
К сожалению, эти термины не используются повсеместно во всех реализациях. Они подчеркиваются ANSI и полезны на концептуальном уровне, но большинство SQL программ практически не обрабатывают их отдельно, так что они по существу становятся функциональными категориями команд SQL.
SELECT раздел JOINПростой JOIN (=пересечение JOIN =INNER JOIN) - означает показывать только общие записи обоих таблиц. Каким образом записи считаются общими определяется полями в join- выражении. Например следующая запись: FROM t1 JOIN t2 ON t1. id = t2. id
означает что будут показаны записи с одинаковыми id, существующие в обоих таблицах.
LEFT JOIN (или LEFT OUTER JOIN) означает показывать все записи из левой таблицы (той, которая идет первой в join- выражении) независимо от наличия соответствующих записей в правой таблице. Если записей нет в правой таблицы устанавливается пустое значение NULL.
RIGHT JOIN (или RIGHT OUTER JOIN) действует в противоположность LEFT JOIN - показывает все записи из правой (второй) таблицы и только совпавшие из левой (первой) таблицы.
Другие виды JOIN объединений: MINUS - вычитание; FULL JOIN - полное объединение; CROSS JOIN - “Каждый с каждым” или операция декартова произведения.
INSERT IGNORE Если в команде INSERT со строками, имеющими много значений, указывается ключевое слово IGNORE, то все строки, имеющие дублирующиеся ключи PRIMARY или UNIQUE в этой таблице, будут проигнорированы и не будут внесены. Если не указывать IGNORE, то данная операция вставки прекращается при обнаружении строки, имеющей дублирующееся значение существующего ключа
Команда REPLACE отличается от INSERT только тем, что если в таблице имеется запись с таким же значением в индексированном поле (unique index), как у новой записи, то старая запись удаляется перед добавлением новой.
UPDATE < tablename> SET { | } .,. .< COLUMN name> = < VALUE expresslon> [ WHERE < predlcate> | WHERE CURRENT OF < cursor name> (* только для вложения* ) ] ; UPDATE peers SET zone= "voip" ; # обновить все строки в столбце zone таблицы peers UPDATE stat SET whp= "13x13x13" WHERE id = 1 ; UPDATE countries SET nm_ukr= ( SELECT del_countries. ukrainian FROM del_countries WHERE countries. nm_en= del_countries. english ) ;WordPress использование, настройка : в таблице wp_posts удалить все вхождения строки
UPDATE wp_posts SET post_content = REPLACE (post_content, "" , "" ) ;DELETE FROM