Полезная информация 

Немного полезных команд mysql, выкладываю тут, чтоб не потерять :)

Функция COUNT подсчитывает количество записей в таблице.

Условие, по которому будут выбираться записи, задается с помощью команды where.

Команда where не является обязательной, если ее не указать – будут подсчитаны все записи в таблице.

См. также команду distinct, которая позволяет подсчитывать только уникальные значения поля.

См. также команду group by, которая позволяет группировать записи и затем с помощью count подсчитывать количество в группах.

Синтаксис

Подсчет всех записей:

SELECT COUNT(*) FROM имя_таблицы WHERE условие

Подсчет всех записей, где заданное поле не равно NULL:

SELECT COUNT(поле) FROM имя_таблицы WHERE условие

Только уникальные значения поля:

SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

Давайте подсчитаем всех работников с возрастом 23 года:

SELECT COUNT(*) as count FROM workers WHERE age=23

Результат выполнения SQL запроса:

count
результат подсчета
2

Пример 

Давайте подсчитаем количество разных зарплат (их будет 3 штуки: 400, 500 и 1000):

SELECT COUNT(DISTINCT salary) as count FROM workers

Результат выполнения SQL запроса:

count
результат подсчета
3

Пример 

Давайте подсчитаем одновременно количество разных возрастов и количество разных зарплат:

SELECT

COUNT(DISTINCT age) as count1,

COUNT(DISTINCT salary) as count2

FROM workers

Результат выполнения SQL запроса:

count1
количество возрастов
count2
количество зарплат
5 3

Меняем таблицу для примеров

Все примеры ниже будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 NULL
2 Петя 25 500
3 Вася 23 NULL

Пример 

Давайте подсчитаем количество всех записей:

SELECT COUNT(*) as count FROM workers

Результат выполнения SQL запроса:

count
результат подсчета
3

А теперь подсчитаем количество зарплат, не равных NULL:

SELECT COUNT(salary) as count FROM workers

Результат выполнения SQL запроса:

count
результат подсчета
1

Команда BETWEEN задает диапазон значений, по которому выбираются записи из базы данных.

К примеру, можно выбрать записи для поля id от 3 до 10-ти.

См. также команду not, которая делает отрицание (к примеру, так: not between).

См. также команду in, которая выбирает записи по указанным значениям.

Синтаксис

SELECT * FROM имя_таблицы WHERE поле BETWEEN от AND до

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

Давайте выберем записи с id от 2-х до 4-х включительно:

SELECT * FROM workers WHERE id BETWEEN 2 AND 4

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000

Пример 

Можно комбинировать различные условия. К примеру, давайте выберем записи с id от 2-х до 4-х включительно и чтобы при этом зарплата была 500:

SELECT * FROM workers WHERE id BETWEEN 2 AND 4 AND salary=500

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 25 500
3 Вася 23 500

Пример 

Диапазон можно делать не только по числовым значениям, но и по строковым. В следующем примере мы выберем все записи с именами между ‘Дима’ и ‘Коля’ (сравнение идет в алфавитном порядке):

SELECT * FROM workers WHERE name BETWEEN ‘Дима’ AND ‘Коля’

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Команда IN выбирает записи из базы данных по определенным значениям поля.

К примеру, можно выбрать записи, у которых id имеет значение 1, 3, 7, 14, 28. Это будет выглядеть так: WHERE id IN (1, 3, 7, 14, 28).

Или же все записи, у которых поле name имеет значение ‘Дима’, ‘Вася’ или ‘Коля’. Это будет выглядеть так: WHERE id IN (‘Дима’, ‘Вася’, ‘Коля’).

В принципе, для таких вещей можно пользоваться и командой or, тогда первый пример будет выглядеть так: WHERE id=1 OR id=3 OR id=7 OR id=14 OR id=28. Вариант с IN все-таки выглядит проще и изящнее.

См. также команду not, которая делает отрицание (к примеру, так: not in).

См. также команду between, которая выбирает записи по диапазону значений.

Синтаксис

SELECT * FROM имя_таблицы WHERE поле IN (значение1, значение2…)

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

Давайте выберем записи с id, равным 1, 3 и 5:

SELECT * FROM workers WHERE id IN (1, 3, 5)

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
3 Вася 23 500
5 Иван 27 500

Пример 

Давайте выберем записи с именами ‘Дима’, ‘Коля’, ‘Кирилл’:

SELECT * FROM workers WHERE id IN (‘Дима’, ‘Коля’, ‘Кирилл’)

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
4 Коля 30 1000
6 Кирилл 28 1000

Команда LIKE задает поиск по определенному шаблону.

См. также команду not, которая делает отрицание (к примеру, так: not like).

Синтаксис

SELECT * FROM имя_таблицы WHERE поле LIKE шаблон_поиска

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

В данном примере команда like найдет все записи, у которых имя заканчивается на ‘я’:

SELECT * FROM workers WHERE name LIKE ‘%я’

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000

Пример 

Давайте выберем те записи, у которых возраст начинается с цифры 2, а затем идет еще один символ:

SELECT * FROM workers WHERE age LIKE ‘2_’

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
5 Иван 27 500
6 Кирилл 28 1000

Команда AS задает новое имя полям или таблицам при выборке из базы (то есть в самой базе изменения не происходят).

См. также команду join, в которой активно используется команда as.

Синтаксис

Для полей:

SELECT поле as его_новое_имя FROM имя_таблицы

Для таблиц:

SELECT * FROM имя_таблицы as его_новое_имя_таблицы

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 24 500
3 Вася 25 600

Пример 

Давайте при выборке переименуем все поля:

SELECT

id as user_id, name as user_name,

age as user_age, salary as user_salary

FROM workers

SQL запрос выберет следующие строки:

user_id
айди
user_name
имя
user_age
возраст
user_salary
зарплата
1 Дима 23 400
2 Петя 24 500
3 Вася 25 600

Пример 

Можно из одного поля сделать два (и более):

SELECT name as name1, name as name2 FROM workers

SQL запрос выберет следующие строки:

name1
имя
name2
имя
Дима Дима
Петя Петя
Вася Вася

Команда DISTINCT позволяет выбирать только уникальные значения из базы данных (то есть отсеивает дубли: к примеру, в таблице есть две Маши – тогда запрос выведет только первую).

Вместо DISTINCT можно использовать DISTINCTROW – в mySQL это одно и то же.

См. также команду count, которая может быть использована для подсчета уникальных значений (в комбинации с distinct).

Синтаксис

При выборке:

SELECT DISTINCT поле FROM имя_таблицы WHERE условие

При подсчете:

SELECT COUNT(DISTINCT поле) FROM имя_таблицы WHERE условие

При суммировании:

SELECT SUM(DISTINCT поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

Давайте выберем все уникальные значения зарплат из таблицы workers:

SELECT DISTINCT salary FROM workers

SQL запрос выберет следующие строки:

salary
зарплата
400
500
1000

Пример 

Давайте подсчитаем все уникальные значения зарплат из таблицы workers (их будет 3 штуки: 400, 500 и 1000):

SELECT COUNT(DISTINCT salary) as count FROM workers

SQL запрос выберет следующие строки:

count
количество
3

Пример 

Давайте подсчитаем одновременно все уникальные значения зарплат и уникальные значения возрастов и запишем их в разные поля:

SELECT

COUNT(DISTINCT salary) as salary_count,

COUNT(DISTINCT age) as age_count

FROM workers

SQL запрос выберет следующие строки:

salary_count
зарплата
age_count
возраст
3 5

Пример 

Давайте просуммируем все уникальные значения зарплат из таблицы workers:

SELECT SUM(DISTINCT salary) as sum FROM workers

SQL запрос выберет следующие строки:

sum
суммарная зарплата
1900

Команда NOT задает отрицание для других команд: вместо IN можно написать NOT IN, вместо BETWEEN – NOT BETWEEN и так далее.

Как это работает: возьмем, для примера, команду IN и с ее помощью выберем записи, у которых id имеет значение 1, 3, 7, 14, 28. Это будет выглядеть так: WHERE id IN (1, 3, 7, 14, 28).

А теперь воспользуемся отрицанием not и выберем все записи, у которых id НЕ равен 1, 3, 7, 14, 28 таким образом: WHERE id NOT IN (1, 3, 7, 14, 28).

См. также команду is null, которая проверяет поле на NULL.

См. также команду is not null, которая проверяет поле на не NULL.

Синтаксис

NOT IN (значение1, значение2…)

NOT BETWEEN значение1 AND значение2

NOT LIKE шаблон

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
3 Вася 23 500
4 Коля 30 1000
5 Иван 27 500
6 Кирилл 28 1000

Пример 

Давайте выберем записи с id, НЕ равным 1, 3 и 5:

SELECT * FROM workers WHERE id NOT IN (1, 3, 5)

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 25 500
4 Коля 30 1000
6 Кирилл 28 1000

Пример 

Давайте выберем записи с id, НЕ между 3 и 5:

SELECT * FROM workers WHERE id NOT BETWEEN 3 AND 5

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 25 500
6 Кирилл 28 1000

Команда IS NULL проверяет поле на не NULL.

См. также команду is null, которая проверяет поле на NULL.

Синтаксис

WHERE поле IS NOT NULL

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 24 NULL
3 Вася 25 NULL

Пример 

Давайте выберем записи, у которых зарплата не равна NULL:

SELECT * FROM workers WHERE salary IS NOT NULL

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400

Команда IS NULL проверяет поле на NULL.

См. также команду is not null, которая проверяет поле на не NULL.

Синтаксис

WHERE поле IS NULL

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 400
2 Петя 24 NULL
3 Вася 25 NULL

Пример 

Давайте выберем записи, у которых зарплата равна NULL:

SELECT * FROM workers WHERE salary IS NULL

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
2 Петя 24 NULL
3 Вася 25 NULL

Команда GROUP BY позволяет группировать результаты при выборке из базы данных.

К сгруппированным результатам можно применять любые функции (смотрите примеры).

См. также команду having, которая позволяет накладывать условие на группы, созданные с помощью group by.

Синтаксис

SELECT * FROM имя_таблицы WHERE условие GROUP BY поле_для_группировки

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 100
2 Петя 23 200
3 Вася 23 300
4 Коля 24 1000
5 Иван 24 2000
6 Кирилл 25 1000

Пример 

В данном примере записи группируются по возрасту (будет 3 группы – 23 года, 24 года и 25 лет). Затем для каждой группы применяется функция sum, которая суммирует зарплаты внутри данной группы.

В результате для каждой из групп (23 года, 24 года и 25 лет) будет подсчитана суммарная зарплата внутри этой группы:

SELECT age, SUM(salary) as sum FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
23 600
24 3000
25 1000

Пример 

В данном примере мы используем дополнительное условие where, чтобы взять не все записи из таблицы:

SELECT age, SUM(salary) as sum FROM workers WHERE id>=2 GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
23 500
24 3000
25 1000

Пример 

В данном примере записи группируются по возрасту (будет 3 группы – 23 года, 24 года и 25 лет). Затем для каждой группы применяется функция max, которая находит максимальную зарплату внутри данной группы:

SELECT age, MAX(salary) as max FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
max
максимальная зарплата
23 300
24 2000
25 1000

Пример 

А теперь с помощью функции min найдется минимальная зарплата внутри данной группы:

SELECT age, MIN(salary) as min FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
min
минимальная зарплата
23 100
24 1000
25 1000

Пример 

А теперь с помощью функции count найдется количество записей в группе:

SELECT age, COUNT(*) as count FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
count
количество
23 3
24 2
25 1

Команда HAVING позволяет фильтровать результат группировки, сделанной с помощью команды group by.

См. также команду where, которая задает условие на выборку записей.

Синтаксис

GROUP BY поле HAVING условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 100
2 Петя 23 200
3 Вася 23 300
4 Коля 24 1000
5 Иван 24 2000
6 Кирилл 25 1000

Пример 

В данном примере демонстрируется работа group by без условия having:

SELECT age, SUM(salary) as sum FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
23 600
24 3000
25 1000

А теперь с помощью условия having оставим только те строки, в которых суммарная зарплата больше или равна 1000:

SELECT age, SUM(salary) as sum FROM workers GROUP BY age HAVING sum>=1000

SQL запрос выберет следующие строки:

age
возраст
sum
сумма
24 3000
25 1000

Пример 

Подсчитаем с помощью функции count количество записей в группе (не используя having):

SELECT age, COUNT(*) as count FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
count
количество
23 3
24 2
25 1

А теперь с помощью условия having оставим только те группы, в которых количество строк меньше или равно двум:

SELECT age, COUNT(*) as count FROM workers GROUP BY age HAVING count<=2

SQL запрос выберет следующие строки:

age
возраст
count
количество
24 2
25 1

Аналогичного эффекта можно достигнуть, если воспользоваться командой in:

SELECT age, COUNT(*) as count FROM workers GROUP BY age HAVING count IN(1,2)

Можно также использовать команду between:

SELECT age, COUNT(*) as count FROM workers GROUP BY age HAVING count BETWEEN 1 AND 2

Как вы видите, в having допустимы все команды, используемые в условии where.

Функция CONCAT предназначена для сложения строк при выборке из базы данных. Строками обычно выступают поля таблиц.

См. также функцию concat_ws, которая складывает строки с использованием разделителя.

См. также функцию group_concat, которая складывает содержимое одного поля из разных строк.

Синтаксис

SELECT CONCAT(поле1, поле2…) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример 

В данном примере при выборке из базы создается новое поле concat, в котором одновременно сольются 3 поля – age, name и salary:

SELECT *, CONCAT(age, name, salary) as concat FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
concat
объединенное поле
1 Дима 23 300 23Дима300
2 Петя 24 400 24Петя400
3 Вася 25 500 25Вася500

Пример 

Давайте добавим после name 3 восклицательных знака:

SELECT *, CONCAT(name, ‘!!!’) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима!!! 23 300
2 Петя!!! 24 400
3 Вася!!! 25 500

Пример 

Давайте добавим перед name 3 восклицательных знака, а после него – 3 вопросительных:

SELECT *, CONCAT(‘!!!’, name, ‘???’) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 !!!Дима??? 23 300
2 !!!Петя??? 24 400
3 !!!Вася??? 25 500

Функция CONCAT_WS предназначена для сложения строк при выборке из базы данных с использованием разделителя. Строками обычно выступают поля таблиц.

См. также функцию concat, которая складывает строки без использования разделителя.

См. также функцию group_concat, которая складывает содержимое одного поля из разных строк.

Синтаксис

SELECT CONCAT_WS(разделитель, поле1, поле2…) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример 

В данном примере при выборке из базы создается новое поле concat_ws, в котором одновременно сольются через дефис 3 поля – age, name и salary:

SELECT *, CONCAT_WS(‘-‘, age, name, salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
concat_ws
объединенное поле
1 Дима 23 300 23-Дима-300
2 Петя 24 400 24-Петя-400
3 Вася 25 500 25-Вася-500

Пример 

А теперь кроме полей из базы добавится еще и строка ‘!!!’:

SELECT *, CONCAT_WS(‘-‘, age, ‘!!!’, salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
concat_ws
объединенное поле
1 Дима 23 300 23-!!!-300
2 Петя 24 400 24-!!!-400
3 Вася 25 500 25-!!!-500

Меняем таблицу для примеров

Остальные примеры будут по этой таблице workers:

id
айди
name
имя
age
возраст
salary
зарплата
separator
разделитель
1 Дима 23 300
2 Петя 24 400 @
3 Вася 25 500 !

Пример 

Разделителем может быть не только строка, но и поле таблицы. Давайте сделаем содержимое поля separator разделителем между age, name, salary:

SELECT *, CONCAT_WS(separator, age, name, salary) as concat_ws FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
separator
разделитель
concat_ws
объединенное поле
1 Дима 23 300 23-Дима-300
2 Петя 24 400 @ 24@Петя@400
3 Вася 25 500 ! 25!Вася!500

Функция GROUP_CONCAT складывает (как строки) содержимое одного поля из разных строк, вставляя между ними разделитель (по умолчанию это запятая).

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

Внимание: у этой функции есть ограничение на объем выводимых данных. По умолчанию 1024 символа для каждого объединения – для каждой выводимой строки. Если размер склеенных данных больше, то он будет урезаться.

Чтобы расширить размер нужно выполнить команду SET group_concat_max_len = 4096;

Если у вас есть привилегии, то вы расширите объем получаемых данных до 4096, можно и больше. Но чаще всего на обычных хостингах таких привилегий нет.

См. также команду group by, с помощью которой можно группировать строки для использования group_concat.

См. также функции concat и concat_ws которые складывают колонки одной строки.

Синтаксис

Без указания разделителя (по умолчанию это будет запятая):

SELECT GROUP_CONCAT(поле) FROM имя_таблицы WHERE условие

С указанием разделителя:

SELECT GROUP_CONCAT(поле SEPARATOR разделитель) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
age
возраст
1 Дима 23
2 Петя 23
3 Вася 23
4 Коля 24
5 Иван 24
6 Кирилл 25

Пример 

В данном примере запрос находит все имена в таблицы и выводит их через запятую:

SELECT GROUP_CONCAT(name) as name FROM workers

SQL запрос выберет следующие строки:

name
имена
Дима,Петя,Вася,Коля,Иван,Кирилл

Пример 

В данном примере разделитель меняется на ‘+’ с помощью команды separator:

SELECT GROUP_CONCAT(name SEPARATOR ‘+’) as name FROM workers

SQL запрос выберет следующие строки:

name
имена
Дима+Петя+Вася+Коля+Иван+Кирилл

Пример 

В данном примере с помощью команды where выбираются не все строки, а заданные:

SELECT GROUP_CONCAT(name) as name FROM workers WHERE id>=3 AND id<=5

SQL запрос выберет следующие строки:

name
имена
Вася,Коля,Иван

Пример 

В данном примере с помощью команды group by строки группируются по возрасту и для каждой группы через запятую выводятся имена работников с таким возрастом:

SELECT age, GROUP_CONCAT(name) as name FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
name
имена
23 Дима,Петя,Вася
24 Коля,Иван
25 Кирилл

Пример 

Поменяем разделитель на ‘-‘:

SELECT age, GROUP_CONCAT(name SEPARATOR ‘-‘) as name FROM workers GROUP BY age

SQL запрос выберет следующие строки:

age
возраст
name
имена
23 Дима-Петя-Вася
24 Коля-Иван
25 Кирилл

Команда UNION объединяет данные из нескольких таблиц в одну при выборке.

При объединении количество столбцов во всех таблицах должно совпадать, иначе будет ошибка

Имена столбцов будут такие же, как в основной таблице, в которую добавляются данные из других таблиц.

Внимание: если не используется ключевое слово ALL для UNION, все возвращенные строки будут уникальными, так как по умолчанию подразумевается distinct, который удаляет неуникальные значения.

Чтобы отменить такое поведение – нужно указать ключевое слово ALL, вот так: UNION ALL.

См. также команду join, которая объединяет связанные таблицы.

Синтаксис

С удалением дублей:

SELECT * FROM имя_таблицы1 WHERE условие

UNION SELECT * FROM имя_таблицы2 WHERE условие

Без удаления дублей:

SELECT * FROM имя_таблицы1 WHERE условие

UNION ALL SELECT * FROM имя_таблицы2 WHERE условие

Можно объединять не две таблицы, а три или более:

SELECT * FROM имя_таблицы1 WHERE условие

UNION SELECT * FROM имя_таблицы2 WHERE условие

UNION SELECT * FROM имя_таблицы3 WHERE условие

UNION SELECT * FROM имя_таблицы4 WHERE условие

Примеры

Все примеры будут по таблицам countries и cities, если не сказано иное.

Таблица countries:

id
айди
name
название
1 Беларусь
2 Россия
3 Украина

Таблица cities:

id
айди
name
название
country_id
айди страны
1 Минск 1
2 Минск 1
3 Москва 2
4 Киев 3

Пример 

В данном примере объединяются записи из двух таблиц:

SELECT id, name FROM countries UNION ALL SELECT id, name FROM cities

SQL запрос выберет следующие строки:

id
айди
name
название
1 Беларусь
2 Россия
3 Украина
1 Минск
2 Минск
3 Москва
4 Киев

Пример 

В данном примере отсутствует ключевое слово ALL, однако дубли не будут удалены, так как дублями считается полное совпадение строк:

SELECT id, name FROM countries UNION SELECT id, name FROM cities

SQL запрос выберет следующие строки:

id
айди
name
название
1 Беларусь
2 Россия
3 Украина
1 Минск
2 Минск
3 Москва
4 Киев

Пример 

А вот теперь дубли будут удалены (из двух Минсков останется один), так как будет иметь место полное совпадение строк (потому что поле осталось одно, но это не обязательно):

SELECT name FROM countries UNION SELECT name FROM cities

SQL запрос выберет следующие строки:

name
название
Беларусь
Россия
Украина
Минск
Москва
Киев

Пример 

А теперь добавим слово ALL – и дубли не будут удалятся:

SELECT name FROM countries UNION ALL SELECT name FROM cities

SQL запрос выберет следующие строки:

name
название
Беларусь
Россия
Украина
Минск
Минск
Москва
Киев

Пример 

В данном примере демонстрируется работа условий where в комбинации с union:

SELECT id, name FROM countries WHERE id>=2

UNION SELECT id, name FROM cities WHERE id<=2

SQL запрос выберет следующие строки:

id
айди
name
имя
2 Россия
3 Украина
1 Минск
2 Минск

Пример 

Имена колонок берутся из первой таблицы (то есть имена колонок таблиц, подключенных через union нигде себя не проявят):

SELECT id as country_id, name as country_name FROM countries

UNION SELECT id, name FROM cities

SQL запрос выберет следующие строки:

country_id
айди
country_name
имя
1 Беларусь
2 Россия
3 Украина
1 Минск 1
2 Минск 1
3 Москва 2
4 Киев 3

Пример 

Такой запрос выдаст ошибку, так как в таблицах не совпадает количество колонок:

SELECT id, name FROM countries UNION SELECT id, name, country_id FROM cities

И такой запрос тоже выдаст ошибку в нашем случае – количество колонок в обеих таблицах не совпадает:

SELECT * FROM countries UNION SELECT * FROM cities

Если нам очень надо забрать из какой-либо таблицы столько полей, что в другой таблице столько и нет, можно создавать дополнительные поля вручную.

К примеру, мы хотим забрать 3 поля из второй таблицы, а в первой таблице полей только 2. Решим эту проблему создав поле с именем country_id и содержимым 0 для первой таблицы (вот так: 0 as country_id):

SELECT id, name, 0 as country_id FROM countries

UNION SELECT id, name, country_id FROM cities

SQL запрос выберет следующие строки:

id
айди
name
имя
country_id
айди страны
1 Беларусь 0
2 Россия 0
3 Украина 0
1 Минск 1
2 Минск 1
3 Москва 2
4 Киев 3

Команды JOIN, INNER JOIN, LEFT JOIN, RIGHT JOIN используются для связывания таблиц по определенным полям связи.

Синтаксис

SELECT поля FROM имя_таблицы

LEFT JOIN имя_связанной_таблицы ON условие_связи

WHERE условие_выборки

Примеры

Все примеры будут по таблицам countries и cities, если не сказано иное.

Таблица countries:

id
айди
name
имя
1 Беларусь
2 Россия
3 Украина

Таблица cities:

id
айди
name
имя
country_id
айди страны
1 Минск 1
2 Витебск 1
3 Москва 2
4 Питер 2
5 Лондон 0

Пример . LEFT JOIN

В данном примере …:

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

LEFT JOIN countries ON countries.id=cities.country_id

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
1 Минск 1 1 Беларусь
2 Витебск 1 1 Беларусь
3 Москва 2 2 Россия
4 Питер 2 2 Россия
5 Лондон 0 NULL

Пример . RIGHT JOIN

В данном примере … Лондон не выберется, а Украина наоборот

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

RIGHT JOIN countries ON countries.id=cities.country_id

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
1 Минск 1 1 Беларусь
2 Витебск 1 1 Беларусь
3 Москва 2 2 Россия
4 Питер 2 2 Россия
NULL NULL NULL 3 Украина

Пример . INNER JOIN

В данном примере … Лондон и Украина не выберется

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

INNER JOIN countries ON countries.id=cities.country_id

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
1 Минск 1 1 Беларусь
2 Витебск 1 1 Беларусь
3 Москва 2 2 Россия
4 Питер 2 2 Россия

Команда LEFT JOIN используются для связывания таблиц по определенным полям связи.

Синтаксис

SELECT поля FROM имя_таблицы

LEFT JOIN имя_связанной_таблицы ON условие_связи

WHERE условие_выборки

Примеры

Все примеры будут по таблицам countries и cities, если не сказано иное.

Таблица countries:

id
айди
name
имя
1 Беларусь
2 Россия
3 Украина

Таблица cities:

id
айди
name
имя
country_id
айди страны
1 Минск 1
2 Витебск 1
3 Москва 2
4 Владивосток 2
6 Лондон 0

Пример 

В данном примере …:

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

LEFT JOIN countries ON countries.id=cities.country_id

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
1 Минск 1 1 Беларусь
2 Витебск 1 1 Беларусь
3 Москва 2 2 Россия
4 Владивосток 2 2 Россия
6 Лондон 0 NULL

Пример 

В данном примере …:

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

LEFT JOIN countries ON countries.id=cities.country_id

WHERE countries.id>=2

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
3 Москва 2 2 Россия
4 Владивосток 2 2 Россия

Команда RIGHT JOIN используется для связывания таблиц по определенным полям связи.

Синтаксис

SELECT поля FROM имя_таблицы

RIGHT JOIN имя_связанной_таблицы ON условие_связи

WHERE условие_выборки

Примеры

Все примеры будут по таблицам countries и cities, если не сказано иное.

Таблица countries:

id
айди
name
имя
1 Беларусь
2 Россия
3 Украина

Таблица cities:

id
айди
name
имя
country_id
айди страны
1 Минск 1
2 Витебск 1
3 Москва 2
4 Владивосток 2
6 Лондон 0

Команда INNER JOIN используются для связывания таблиц по определенным полям связи.

Синтаксис

SELECT поля FROM имя_таблицы

INNER JOIN имя_связанной_таблицы ON условие_связи

WHERE условие_выборки

Примеры

Все примеры будут по таблицам countries и cities, если не сказано иное.

Таблица countries:

id
айди
name
имя
1 Беларусь
2 Россия
3 Украина

Таблица cities:

id
айди
name
имя
country_id
айди страны
1 Минск 1
2 Витебск 1
3 Москва 2
4 Владивосток 2
6 Лондон 0

Пример 

В данном примере … Лондон и Украина не выберется

SELECT

cities.id as city_id, cities.name as city_name, cities.country_id as city_country_id,

countries.id as country_id, countries.name as country_name

FROM cities

INNER JOIN countries ON countries.id=cities.country_id

SQL запрос выберет следующие строки:

city_id
айди города
city_name
название города
city_country_id
айди страны
country_id
айди страны
country_name
название страны
1 Минск 1 1 Беларусь
2 Витебск 1 1 Беларусь
3 Москва 2 2 Россия
4 Владивосток 2 2 Россия

Команда SELECT INTO копирует данные из одной таблицы в другую.

См. также команду insert, которая вставляет записи в таблицу.

Синтаксис

Обычное применение:

SELECT * INTO в_какую_таблицу FROM из_какой_таблицы WHERE условие

Можно копировать и в другую базу данных:

SELECT * INTO в_какую_таблицу IN другая_база_данных FROM из_какой_таблицы WHERE условие

Условие where не является обязательным, если его не указать – будут выбраны все записи.

Команду select into можно использовать для того, чтобы создать новую пустую таблицу по образцу старой. Для этого в where нужно передать условие, которое не выберет ни одной записи:

SELECT * INTO новая_таблица FROM старая_таблица WHERE 1=0

Примеры

Все примеры будут по таблицам countries1 и countries2, если не сказано иное.

Таблица countries1:

id
айди
name
имя
1 Беларусь
2 Россия
3 Украина

Таблица countries2:

id
айди
name
имя
1 Испания

Пример 

В данном примере данные копируются из таблицы countries1 и вставляются в countries2:

SELECT * INTO countries2 FROM countries1

Таблица countries2 станет выглядеть так:

id
айди
name
имя
1 Испания
2 Беларусь
3 Россия
4 Украина

Функция LENGTH используется для подсчета количества символов в строках.

Вместо length можно использовать следующие названия: octet_lengthchar_lengthcharacter_length.

Существует также функция bit_length, которая возвращает длину в битах.

Синтаксис

SELECT LENGTH(поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное:

id
айди
name
имя
1 Дмитрий
2 Кирилл
3 Владимир

Пример 

В данном примере создается дополнительное поле, которое содержит длину поля name:

SELECT *, LENGTH(name) as length FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
length
длина строки
1 Дмитрий 7
2 Кирилл 6
3 Владимир 8

Пример 

В данном примере с помощью условия where выбираются только те записи, в которых длина поля name больше или равна 7:

SELECT *, LENGTH(name) as length FROM workers WHERE LENGTH(name)>=7

SQL запрос выберет следующие строки:

id
айди
name
имя
length
длина строки
1 Дмитрий 7
3 Владимир 8

Пример 

Конечно, не обязательно делать поле length, чтобы применить функцию length в условии:

SELECT * FROM workers WHERE LENGTH(name)>=7

SQL запрос выберет следующие строки:

id
айди
name
имя
1 Дмитрий
3 Владимир

Функция LEFT вырезает и возвращает заданное количество символов с начала строки.

См. также функцию right, которая вырезает символы с конца строки.

См. также функции substring и mid которые вырезают символы с любого места строки.

См. также функцию substring_index, которая берет часть строки по указанному разделителю.

Синтаксис

SELECT LEFT(поле, сколько_символов_взять) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Первый длинный текст с номером 1!
2 Второй длинный текст с номером 2!

Пример 

Давайте вырежем первые 6 символов с начала строки:

SELECT id, LEFT(text, 6) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 Первый
2 Второй

Пример 

Давайте вырежем первые 6 символов с начала строки и добавим троеточие в конец, используя функцию concat:

SELECT id, CONCAT(LEFT(text, 6), ‘…’) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 Первый…
2 Второй…

Функция RIGHT вырезает и возвращает заданное количество символов с конца строки.

См. также функцию left, которая вырезает символы с начала строки.

См. также функции substring и mid которые вырезают символы с любого места строки.

См. также функцию substring_index, которая берет часть строки по указанному разделителю.

Синтаксис

SELECT RIGHT(поле, сколько_символов_взять) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Первый длинный текст с номером 1!
2 Второй длинный текст с номером 2!

Пример 

Давайте вырежем и выведем 10 символов с конца строки:

SELECT id, RIGHT(text, 10) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 номером 1
2 номером 2

Пример 

Давайте вырежем и выведем 10 символов с конца строки и перед ними добавим троеточие, используя функцию concat:

SELECT id, CONCAT(‘…’, RIGHT(text, 10)) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 …номером 1
2 …номером 2

Функция SUBSTRING вырезает и возвращает заданное количество символов из строки.

Первым параметром функция принимает поле или строку, вторым параметром – с какой позиции начинать вырезания (нумерация символов начинается с 1), третьем параметром – сколько символов брать.

Третий параметр не является обязательным. Если он не указан, текст будет вырезан с указанной позиции и до конца строки.

См. также функцию mid, которая также вырезает часть строки.

См. также функцию substring_index, которая берет часть строки по указанному разделителю.

Синтаксис

Первый синтаксис:

SELECT SUBSTRING(поле, откуда_отрезать, сколько_символов_взять) FROM имя_таблицы WHERE условие

Альтернативный синтаксис:

SELECT SUBSTRING(поле FROM откуда_отрезать FOR сколько_символов_взять) FROM имя_таблицы WHERE условие

Третий параметр не обязателен, в этом случае текст будет вырезан с указанной позиции и до конца строки:

SELECT SUBSTRING(поле, откуда_отрезать) FROM имя_таблицы WHERE условие

SELECT SUBSTRING(поле FROM откуда_отрезать) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Это первый длинный текст!
2 Это второй длинный текст!

Пример 

В данном примере из строки вырезаются и возвращаются 6 символов, начиная с 5-го:

SELECT id, SUBSTRING(text, 5, 6) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 первый
2 второй

Запрос можно переписать в следующем виде:

SELECT id, SUBSTRING(text FROM 5 FOR 6) as text FROM texts

Пример 

В данном примере возвращается вся строка до конца, начиная с пятого символа:

SELECT id, SUBSTRING(text, 5) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 первый длинный текст!
2 второй длинный текст!

Запрос можно переписать в следующем виде:

SELECT id, SUBSTRING(text FROM 5) as text FROM texts

Функция MID вырезает и возвращает заданное количество символов из строки.

Первым параметром функция принимает поле или строку, вторым параметром – с какой позиции начинать вырезания (нумерация символов начинается с 1), третьем параметром – сколько символов брать.

Третий параметр не является обязательным. Если он не указан, текст будет вырезан с указанной позиции и до конца строки.

См. также функцию substring, которая также вырезает часть строки.

См. также функцию substring_index, которая берет часть строки по указанному разделителю.

Синтаксис

С тремя параметрами:

SELECT MID(поле, откуда_отрезать, сколько_символов_взять) FROM имя_таблицы WHERE условие

Третий параметр не обязателен:

SELECT MID(поле, откуда_отрезать) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Это первый длинный текст!
2 Это второй длинный текст!

Пример 

В данном примере из строки вырезаются и возвращаются 6 символов, начиная с 5-го:

SELECT id, MID(text, 5, 6) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 первый
2 второй

Пример 

В данном примере возвращается вся строка до конца, начиная с пятого символа:

SELECT id, MID(text, 5) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 первый длинный текст!
2 второй длинный текст!

Функция SUBSTRING_INDEX возвращает подстроку из строки перед появлениям N вхождений разделителя.

Если N положителен, то возвращается все, что находится слева от последнего разделителя (считая слева). Если N отрицателен, то возвращается все, что находится справа от последнего разделителя (считая справа).

См. также функцию left, которая вырезает символы с начала строки.

См. также функцию right, которая вырезает символы с конца строки.

См. также функции substring и mid которые вырезают символы с любого места строки.

Синтаксис

SELECT SUBSTRING_INDEX(поле, разделитель, количество_разделителей)

FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 слово1-слово2-слово3-слово4-слово5
2 word1-word2-word3-word4-word5

Пример 

В данном примере вернется подстрока перед первым вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, 1) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово1
2 word1

Пример 

В данном примере вернется подстрока перед вторым вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, 2) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово1-слово2
2 word1-word2

Пример 

В данном примере вернется подстрока перед третьим вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, 3) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово1-слово2-слово3
2 word1-word2-word3

Пример 

В данном примере вернется подстрока перед первым с конца вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, -1) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово5
2 word5

Пример 

В данном примере вернется подстрока перед вторым с конца вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, -2) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово4-слово5
2 word4-word5

Пример 

В данном примере вернется подстрока перед третьим с конца вхождением разделителя ‘-‘:

SELECT *, SUBSTRING_INDEX(text, ‘-‘, -3) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 слово3-слово4-слово5
2 word3-word4-word5

Функция REPLACE позволяет производить поиск и замену одних частей строки на другие.

См. также функции position, locate и instr, которые осуществляют поиск по строке.

Синтаксис

SELECT REPLACE(поле, что_менять, на_что_менять) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Первый длинный текст!
2 Второй длинный текст!

Пример 

В данном примере все пробелы в тексте будут замены на дефис:

SELECT id, REPLACE(text, ‘ ‘, ‘-‘) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 Первый-длинный-текст!
2 Второй-длинный-текст!

Функция LPAD дополняет строку до нужного размера добавляя заданные символы в начало строки.

См. также функцию rpad, которая дополняет строку справа до заданного размера.

Синтаксис

SELECT LPAD(поле, новый_размер_поля, чем_дополнить) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 текст1
2 текст2
2 длинный текст3

Пример 

В данном примере в текст добавляет символ * так, чтобы длина строки стала 10:

SELECT id, LPAD(text, 10, ‘*’) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 ****текст1
2 ****текст2
2 длинный те

Функция RPAD дополняет строку до нужного размера добавляя заданные символы в конец строки.

См. также функцию lpad, которая дополняет строку слева до заданного размера.

Синтаксис

SELECT RPAD(поле, новый_размер_поля, чем_дополнить) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 текст1
2 текст2
2 длинный текст3

Пример 

В данном примере в текст добавляет символ * так, чтобы длина строки стала 10:

SELECT id, RPAD(text, 10, ‘*’) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 текст1****
2 текст2****
2 длинный те

Функция REVERSE переворачивает заданную строку так, чтобы ее символы шли в обратном порядке

Синтаксис

SELECT REVERSE(поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 12345
2 abcde

Пример 

В данном примере символы текста при выборке будут идти в обратном порядке:

SELECT id, REVERSE(text) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 54321
2 edcba

Функция REPEAT повторяет заданную строку нужное количество раз.

Синтаксис

SELECT REPEAT(поле, количество_повторений) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 текст1
2 текст2

Пример 

В данном примере текст поля при выборке повторится 3 раза:

SELECT id, REPEAT(text, 3) as text FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
1 текст1текст1текст1
2 текст2текст2текст2

Функция POSITION осуществляет поиск подстроки в строке, возвращает позицию ее первого символа.

Учтите, что нумерация символов начинается с 1.

См. функции locate и instr, которые также осуществляют поиск по строке.

Синтаксис

SELECT POSITION(что_ищем IN поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Очень длинный текст!
2 Не очень длинный текст!
3 Просто текст!

Пример 

В данном примере в тексте ищется позиция слова ‘длинный’:

SELECT *, POSITION(‘длинный’ IN text) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 7
2 Не очень длинный текст! 10
3 Просто текст! 0

Функция LOCATE осуществляет поиск подстроки в строке, возвращает позицию ее первого символа.

Учтите, что нумерация символов начинается с 1.

В отличие от функции POSITION функция LOCATE может начинать поиск не с начала строки, а с определенного места.

См. функции position и instr, которые также осуществляют поиск по строке.

Синтаксис

SELECT LOCATE(что_ищем, поле) FROM имя_таблицы WHERE условие

SELECT LOCATE(что_ищем, поле, начало_поиска) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Очень длинный текст!
2 Не очень длинный текст!
3 Просто текст!

Пример 

В данном примере в тексте ищется позиция слова ‘длинный’:

SELECT *, LOCATE(‘длинный’, text) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 7
2 Не очень длинный текст! 10
3 Просто текст! 0

Пример 

В данном примере в тексте ищется позиция слова ‘длинный’, поиск начинается с 8-го символа строки:

SELECT *, LOCATE(‘длинный’, text, 8) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 0
2 Не очень длинный текст! 10
3 Просто текст! 0

Функция INSTR осуществляет поиск подстроки в строке, возвращает позицию ее первого символа.

Учтите, что нумерация символов начинается с 1.

В отличие от функции position функция instr имеет обратный порядок параметров.

См. функции position и locate, которые также осуществляют поиск по строке.

Синтаксис

SELECT INSTR(поле, что_ищем) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
text
текст
1 Очень длинный текст!
2 Не очень длинный текст!
3 Просто текст!

Пример 

В данном примере в тексте ищется позиция слова ‘длинный’:

SELECT *, INSTR(text, ‘длинный’) as pos FROM texts

SQL запрос выберет следующие строки:

id
айди
text
текст
pos
позиция подстроки
1 Очень длинный текст! 7
2 Не очень длинный текст! 10
3 Просто текст! 0

Функция TRIM обрезает пробелы по краям строки.

См. команды lrim и rtrim, которая также обрезают пробелы.

Синтаксис

При выборке:

SELECT TRIM(поле) FROM имя_таблицы WHERE условие

При вставке:

INSERT INTO имя_таблицы SET имя_поля=TRIM(значение_поля)

Примеры

Все примеры будут по этой таблице workers, если не сказано иное. Подчеркивание имитирует пробелы:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500

Пример 

В данном примере при выборке будут удалены пробелы по краям строки:

SELECT *, TRIM(поле) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример 

В данном примере при вставке будут удалены пробелы по краям строки (подчеркивание имитирует пробелы):

INSERT INTO workers SET name=TRIM(‘   Кирилл   ‘), age=26, salary=600

Таблица workers станет выглядеть так:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500
4 Кирилл 26 600

Функция LTRIM обрезает пробелы, которые стоят в начале строки.

См. команды trim и rtrim, которая также обрезают пробелы.

Синтаксис

При выборке:

SELECT LTRIM(поле) FROM имя_таблицы WHERE условие

При вставке:

INSERT INTO имя_таблицы SET имя_поля=LTRIM(значение_поля)

Примеры

Все примеры будут по этой таблице workers, если не сказано иное. Подчеркивание имитирует пробелы:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500

Пример 

В данном примере при выборке будут удалены пробелы слева:

SELECT *, LTRIM(поле) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима___ 23 300
2 Петя___ 24 400
3 Вася___ 25 500

Пример 

В данном примере при вставке будут удалены пробелы слева (подчеркивание имитирует пробелы):

INSERT INTO workers SET name=LTRIM(‘   Кирилл   ‘), age=26, salary=600

Таблица workers станет выглядеть так:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500
4 Кирилл___ 26 600

Функция RTRIM обрезает пробелы, которые стоят в конце строки.

См. команды trim и ltrim, которая также обрезают пробелы.

Синтаксис

При выборке:

SELECT RTRIM(поле) FROM имя_таблицы WHERE условие

При вставке:

INSERT INTO имя_таблицы SET имя_поля=RTRIM(значение_поля)

Примеры

Все примеры будут по этой таблице workers, если не сказано иное. Подчеркивание имитирует пробелы:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500

Пример 

В данном примере при выборке будут удалены пробелы справа:

SELECT *, RTRIM(поле) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима 23 300
2 ___Петя 24 400
3 ___Вася 25 500

Пример 

В данном примере при вставке будут удалены пробелы справа (подчеркивание имитирует пробелы):

INSERT INTO workers SET name=RTRIM(‘   Кирилл   ‘), age=26, salary=600

Таблица workers станет выглядеть так:

id
айди
name
имя
age
возраст
salary
зарплата
1 ___Дима___ 23 300
2 ___Петя___ 24 400
3 ___Вася___ 25 500
4 ___Кирилл 26 600

Функция SPACE создает строку, состоящую из заданного количества пробелов.

Синтаксис

SELECT SPACE(количество_пробелов) FROM имя_таблицы WHERE условие

Функция LCASE (LOWER) переводит строку в нижний регистр (то есть из больших букв делает маленькие).

См. также команду ucase (upper), которая переводит строку в нижний регистр.

Синтаксис

SELECT LCASE(поле) FROM имя_таблицы WHERE условие

SELECT LOWER(поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное. Подчеркивание имитирует пробелы:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример 

В данном примере строка name преобразуется к нижнему регистру с помощью lcase:

SELECT *, LCASE(name) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 дима 23 300
2 петя 24 400
3 вася 25 500

Пример 

В данном примере строка name преобразуется к нижнему регистру с помощью lower:

SELECT *, LOWER(name) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 дима 23 300
2 петя 24 400
3 вася 25 500

Функция UCASE (UPPER) переводит строку в верхний регистр (то есть из маленьких букв делает большие).

См. также команду lcase (lower), которая переводит строку в нижний регистр.

Синтаксис

SELECT UCASE(поле) FROM имя_таблицы WHERE условие

SELECT UPPER(поле) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице workers, если не сказано иное. Подчеркивание имитирует пробелы:

id
айди
name
имя
age
возраст
salary
зарплата
1 Дима 23 300
2 Петя 24 400
3 Вася 25 500

Пример 

В данном примере строка name преобразуется к верхнему регистру с помощью ucase:

SELECT *, UCASE(name) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 ДИМА 23 300
2 ПЕТЯ 24 400
3 ВАСЯ 25 500

Пример 

В данном примере строка name преобразуется к верхнему регистру с помощью upper:

SELECT *, UPPER(name) as name FROM workers

SQL запрос выберет следующие строки:

id
айди
name
имя
age
возраст
salary
зарплата
1 ДИМА 23 300
2 ПЕТЯ 24 400
3 ВАСЯ 25 500

Похожие записи