SQL и БД Learning – Telegram
SQL и БД Learning
10.2K subscribers
797 photos
9 videos
22 files
445 links
№ 5060218708

Изучаем SQL с нуля

По всем вопросам @mascarov_valentin

Реклама на бирже - https://telega.in/c/SQl_and_DB_Learning
Download Telegram
Для сортировки по возрастанию используется следующая конструкция:
Anonymous Quiz
8%
GROUP BY имя_поля DESC
70%
ORDER BY имя_поля ASC
17%
ORDER BY имя_поля DESC
5%
GROUP BY имя_поля ASC
👍12🔥1
#Вопросы_с_собеседования

При выборке из таблицы workers создайте новое поле res, в котором будет строка 'eee'.

Ответ на картинке.
👍7
Запрос, возвращающий все значения из таблицы «Countries», за исключением страны с ID=8, имеет вид
Anonymous Quiz
5%
SELECT * FROM Countries EXP ID=8
7%
SELECT * FROM Countries EXPEPT ID=8
83%
SELECT * FROM Countries WHERE ID !=8
5%
Нет верного ответа
👍10
🐣 Курс по SQL для начинающих

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

1. Введение в PostgreSQL — [2:06:30]
2. Базовые SELECT запросы — [1:58:17]
3. Соединения (JOIN) — [1:07:31]
4. Подзапросы в SQL — [47:12]
5. DDL: создание БД, таблиц и их модификация — [1:50:44]
👍9🔥4
#Вопросы_с_собеседования

Даны две таблицы: таблица category с полями id и name и таблица page с полями id, name и category_id. Достаньте одним запросом все страницы вместе с их категориями

Ответ на картинке.
👍12
Извлекаем имя из адреса электронной почты

Где "YourTable" - это название вашей таблицы, содержащей столбец с адресами электронной почты.

Этот запрос использует функцию "LEFT", чтобы извлечь часть строки до символа "@", а функция "CHARINDEX" используется для нахождения позиции символа "@". Результат запроса будет содержать столбец с именами, извлеченными из адресов электронной почты.
👍9
Как полностью очистить таблицу sql

Полностью очистить таблицу, не удаляя её можно с помощью запроса DELETE. Мы указываем имя таблицы, но опускаем блок WHERE. Тогда удаляются абсолютно все записи, вне зависимости от условий.

DELETE FROM wiped_table_name;
-- Мы очистили таблицу wiped_table_name


Кроме DELETE без условий можно использовать TRUNCATE. У неё есть свои особенности. Самая главная, она быстрее DELETE, так как не сканирует таблицы перед очисткой и наиболее полезна для очистки больших таблиц.

TRUNCATE cars, cups, parrots;
-- Тут можно перечислять сколько угодно таблиц
🔥4
Организация хранения исторических данных в Oracle

Сегодня поговорим о разных способах организации хранения исторических данных в Oracle.

Смотреть статью
👍4
#Вопросы_с_собеседования

Удержание пользователей в месяц

Контекст: допустим, у нас есть статистика по авторизации пользователей на сайте в таблице logins:

| user_id | date |
|---------|------------|
| 1 | 2018-07-01 |
| 234 | 2018-07-02 |
| 3 | 2018-07-02 |
| 1 | 2018-07-02 |
| ... | ... |
| 234 | 2018-10-04 |

Задача: написать запрос, который получает количество удержанных пользователей в месяц. В нашем случае данный параметр определяется как количество пользователей, которые авторизовались в системе и в этом, и в предыдущем месяце.

Решение:

SELECT
DATE_TRUNC('month', a.date) month_timestamp,
COUNT(DISTINCT a.user_id) retained_users
FROM
logins a
JOIN
logins b ON a.user_id = b.user_id
AND DATE_TRUNC('month', a.date) = DATE_TRUNC('month', b.date) +
interval '1 month'
GROUP BY
date_trunc('month', a.date)
👍19
#Вопросы_с_собеседования

Выберите из таблицы workers все записи так, чтобы вместо id было userId, вместо login – userLogin, вместо salary - userSalary

Ответ на картинке.
👍11
👍14🔥1
Как откатить часть транзакции внутри функции или процедуры?

BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint; --rollback previous command
INSERT INTO table1 VALUES (3);
COMMIT;


Внутри функции или процедуры код выше завершится с ошибкой, например в is_sql.sql. Но вы можете откатить часть SQL команд в транзакции через подтранзакции:

DO $TEST$
BEGIN
-- here you can write DDL commands, for example, adding or deleting a table or its section
-- and/or
-- here you can write DML commands that modify data in tables and, thus, check the operation of triggers

-- rollback all test queries
raise exception using errcode = 'query_canceled';

EXCEPTION WHEN query_canceled THEN
--don't do anything
END
$TEST$;
👍7🔥3
Узнаем вместимость БД

Этот запрос определяет размер базы данных в мегабайтах путем вычисления суммарного количества страниц, выделенных для базы данных и вычисления размера в мегабайтах. Результат будет показан в столбце MB.
👍12
#Вопросы_с_собеседования

Объясните различные типы нормализации

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

Первая нормальная форма (1NF) — нет повторяющихся групп в строках
Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа
Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца
👍11
#Вопросы_с_собеседования

Удалите из таблицы table1 поле age

Ответ на картинке.
👍12🔥1
Какое ключевое слово нельзя использовать вместе с оператором ROLLUP?
Anonymous Quiz
23%
LIMIT
16%
GROUP BY
14%
ORDER BY
21%
HAVING
26%
Посмотреть ответы
🔥4👍3