SQL Pro
5.07K subscribers
142 photos
2 videos
10 files
127 links
SQL Pro - всё об SQL
Реклама: @anothertechrock

Контент канала:
1. Разбор вопросов с собеседований
2. Трюки SQL
3. Видео
4. Тесты
5. Задачи на логику
6. Юмор
Download Telegram
Решение сегодняшней задачи на логику.

Ответ: 208

муравей = 12
шапка = 8
труба = 4
Итого: (12 + 8 + 4) * 8 + (12 + 4) = 208

#логика
Как получить значение текущего года в PostgreSQL?
Anonymous Quiz
6%
SELECT NOW();
42%
SELECT YEAR (NOW());
31%
SELECT DATE_PART ('year', NOW());
13%
SELECT YEAR FROM DATE;
9%
Посмотреть ответы
#вопрос13

Есть две таблицы как на картинке выше: envelope и docs. Расскажите, какой результат возвратит следующий MySQL запрос и обоснуйте свой ответ:

UPDATE docs INNER JOIN envelope ON envelope.id = docs.idnum
SET docs.doctext = docs.pageseq
WHERE EXISTS (
SELECT 1 FROM envelope
WHERE id = envelope.id
);
SELECT * FROM docs;

#вопросы #собеседование
Ответ на #вопрос13

Результат будет выглядеть так:

idnum pageseq doctext
1 5 5
2 6 6
NULL 0 NULL

Оператор EXISTS – это отвлекающий маневр. Тут всегда будет true, т. к. id не является членом таблицы envelope. Таким образом, id будет сравнивать себя с самим собой.

#вопросы #собеседование
Статья дня. Как работать с json в Postgresql?

json — самый популярный, на данный момент, формат сериализации данных, состоящий из пар ключ-значение. Является нативным для Javascript и поддерживается абсолютно всеми языками программирования.

PostgreSQL нативно поддерживает json с версии 9.2. И до этого у постгри был тип данных для пар ключ-значение, но не настолько гибкий и с куда менее полным функционалом. Сейчас это мощнейший и удобнейший инструмент.

#sql

Читать статью
Трюк дня. Как сделать Case Sensitive сравнение в MySQL

Есть таблица enterprise, созданная следующим MySQL запросом:
CREATE TABLE enterprise (company TEXT);

И в столбце company содержатся следующие значения:
• sPg
• SPG
• spg

Напишите MySQL-запрос, который выберет только значения = ‘SPG‘.

Решение будет вечером.

#tips
Трюк дня. Как сделать Case Sensitive сравнение в MySQL. Решение

Небинарные строки (CHAR, VARCHAR, TEXT) в MySQL по умолчанию не чувствительны к регистру. Поэтому запрос SELECT * FROM enterprise WHERE company = ‘SPG‘ выведет все три строки.

Для вывода только одной записи с ‘SPG’ существуют следующие решения:

1. Приведение столбца к типу BINARY (т.к. тип BINARY чувствителен к регистру):

SELECT * FROM enterprise WHERE BINARY company = ‘SPG‘;

2. Выбор чувствительного к регистру набора символов с помощью COLLATE:

SELECT * FROM enterprise WHERE company COLLATE utf8mb4_0900_as_cs = ‘SPG‘;

Детальную документацию смотрите здесь.

#tips
Есть таблица EMPLOYEES (code, first_name, last_name, department_id);

Какой из следующих запросов отобразит всех работников, у которых вторая буква в имени - ‘i‘?
Anonymous Quiz
71%
SELECT first_name FROM employees WHERE first_name LIKE ‘_i%‘;
7%
SELECT first_name FROM employees WHERE first_name LIKE ‘%i_‘;
13%
SELECT first_name FROM employees WHERE first_name LIKE ‘%i%‘;
6%
SELECT first_name FROM employees WHERE first_name LIKE ‘_i_‘;
3%
Посмотреть ответы
#вопрос14

Что выведет приведенный запрос, если в таблице employee 10 записей?

BEGIN;
TRUNCATE TABLE employee;
ROLLBACK;
SELECT * FROM employee;

#вопросы #собеседование
Ответ на #вопрос14

Этот запрос вернет 10 записей, т. к. TRUNCATE выполняется в транзакции.

#вопросы #собеседование
Трюк дня. MySQL LIKE IN()

Напишите запрос, который выберет из таблицы user все значения id, содержащие в себе 114, 23 и 868.

Запрос должен быть короче, чем следующий запрос:

SELECT * FROM user t
WHERE t.id LIKE '%1
14%'
OR t.id LIKE '%2
3%'
OR t.id LIKE '%868%';

Решение будет вечером.

#tips
Трюк дня. MySQL LIKE IN(). Решение

Используем функцию REGEXP:

SELECT * FROM user t
WHERE t.id REGEXP '114|23|868';


#tips
Какие SQL-операции относятся к командам DDL?
Anonymous Quiz
52%
DROP, ALTER
16%
SELECT, CREATE
4%
ALERT, SELECT
12%
UPDATE, MERGE
17%
Посмотреть ответы
#вопрос15

Важен ли в составном индексе порядок столбцов?

#вопросы #собеседование
Ответ на #вопрос15

Важен.

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

#вопросы #собеседование
#вопрос16

Какими бывают подстановочные знаки?

#вопросы #собеседование
Ответ на #вопрос16

% — заменить ноль или более символов;
_ — заменить один символ.

Примеры:

SELECT * FROM user WHERE name LIKE '%test%';
Данный запрос позволяет найти данные всех пользователей, имена которых содержат в себе «test».

SELECT * FROM user WHERE name LIKE 't_est';
А в этом случае имена искомых пользователей начинаются на «t», после содержат какой-либо символ и «est» в конце.

#вопросы #собеседование