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
#Вопросы_с_собеседования

Выберите из таблицы workers записи с id равным 1, 2, 3, 7, 9, и логином, равным 'user', 'admin', 'ivan' и зарплатой больше 300

Ответ на картинке.
👍10
#Вопросы_с_собеседования

В чем разница между командами Delete, Truncate и Drop?

• Команда Delete — это команда DML , он используется для удаления строк из таблицы. Его можно откатить.
Truncate — это команда DDL, она используется для удаления всех строк из таблицы и освобождения пространства, содержащего таблицу. Ее нельзя откатить.
Drop — это команда DDL, она удаляет все данные вместе со структурой таблицы (в отличие от команды truncate, которая удаляет только строки). Все строки, индексы и привилегии таблиц также будут удалены.
👍14
Какая ошибка в этом запросе?

UPDATE books SET sales_1999 >
(SELECT SUM(qty * price)
FROM sales
WHERE sales.book_id = bооks.id
AND salеs.date BETWEEN '01/01/1999' AND '12/31/1999')
Вы не можете использовать арифметические операторы для функции SUM() (например SUM(qty * price))

Ответ
Следует использовать знак (=) для подзапроса
👍5🔥21
#Вопросы_с_собеседования

Выберите из таблицы workers все записи за следующие дни любого месяца: 1, 7, 11, 12, 15, 19, 21, 29

Ответ на картинке.
👍81
LIMIT

При помощи LIMIT можно указать максимальное число строк, которые должны попасть в результат.

Это бывает полезно при работе с большими наборами данных. Если данных много, запрос может обрабатываться слишком долго. Но когда будет достигнут лимит результатов, обработка прекратится.
👍12
Что по умолчанию имеет более высокий приоритет! или NOT?
Anonymous Quiz
31%
!
30%
NOT
27%
Оба имеют одинаковый приоритет
13%
Узнать ответ
👍8😱41
В чем разница между функциями RANK() и DENSE_RANK()?

Единственная разница между функциями RANK() и DENSE_RANK() заключается в случаях, когда несколько значений в наборе имеют одинаковый ранг.

В таких случаях RANK() будет назначать непоследовательные «ранги» значениям в наборе.

Тогда как DENSE_RANK() будет назначать последовательные ранги значениям в наборе.

Например, рассмотрим набор
{25, 25, 50, 75, 75, 100}.

Для такого набора RANK() вернет
{1, 1, 3, 4, 4, 6} (обратите внимание, что значения 2 и 5 пропущены), тогда как DENSE_RANK() вернет
{1, 1, 2, 3, 3, 4}.
👍8
Количество вхождений строки в поле в MySQL

Есть таблица items со следующими данными:

id desc
1 val test test val
2 val test
3 test test test
4 valvalvalvalval

Напишите MySQL запрос, который подсчитает количество вхождений значения ‘val‘ для каждого desc.

Ожидаемый результат:
2
1
0
5


Решение:


SELECT
ROUND (
(LENGTH (desc) - LENGTH (
REPLACE (desc, ‘val‘,‘‘)
)) / LENGTH(‘val‘)) AS c
FROM items;
👍11
Функция CONCAT_WS()

Функция CONCAT_WS() добавляет два или более выражений вместе с разделителем.

Синтаксис:
CONCAT_WS(separator, expression1, expression2, expression3,...).
👍13
Что вы знаете о функции STUFF(Transact-SQL)?

Функция STUFF вставляет одну строку в другую, начиная с указанной позиции. При этом в исходной строке, начиная с указанной позиции, удаляются символы в количестве, определенном в параметре Length.

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

Синтаксис:

STUFF(String1, Position, Length, String2)

Здесь String1 — это строка, которая будет перезаписана. Position определяет стартовую позицию для перезаписи строки. Length — это длина подстроки, которая будет удалена из исходной строки. String2 — это строка, которая будет вставлена в String1.

Пример:

SELECT STUFF(‘SQL Tutorial’,1,3,’Python’)
В результате работы функции «SQL Tutorial» превратится в «Python Tutorial».


Результат:

Python Tutorial
👍4
#Вопросы_с_собеседования

Выберите из таблицы workers все записи за вторник

Ответ на картинке.
👍7
Какой из следующих SQL запросов выберет первые 10% записей таблицы, отсортированные по колонке "sales" в порядке убывания?
Anonymous Quiz
25%
SELECT * FROM table WHERE sales > (SELECT MAX(sales) FROM t) * 0.1 ORDER BY sales DESC;
12%
SELECT * FROM table WHERE sales > (SELECT MIN(sales) FROM t) * 0.1 ORDER BY sales DESC LIMIT 10%;
11%
SELECT * FROM t WHERE sales > (SELECT AVG(sales) FROM t) * 0.1 ORDER BY sales DESC LIMIT 10;
51%
SELECT * FROM t ORDER BY sales DESC LIMIT 10%
👍12😱2
#Вопросы_с_собеседования

Какие ограничения на целостность данных существуют в SQL?

PRIMARY KEY - набор полей (1 или более), значения которых образуют уникальную комбинацию и используются для однозначной идентификации записи в таблице. Для таблицы может быть создано только одно такое ограничение. Данное ограничение используется для обеспечения целостности сущности, которая описана таблицей.

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

UNIQUE обеспечивает отсутствие дубликатов в столбце или наборе столбцов.

FOREIGN KEY защищает от действий, которые могут нарушить связи между таблицами. FOREIGN KEY в одной таблице указывает на PRIMARY KEY в другой. Поэтому данное ограничение нацелено на то, чтобы не было записей FOREIGN KEY, которым не отвечают записи PRIMARY KEY.
👍8
#Вопросы_с_собеседования

Выберите все записи, где первая буква City начинается с любой буквы от "a" до "f"

Ответ на картинке.
👍27
#Вопросы_с_собеседования

Почему данный код выведет ошибку?

Код выдаст ошибку, так как в данном случае alias нельзя использовать в операторе WHERE.

Порядок выполнения упомянутого SELECT запроса следующий:
1. FROM
2. WHERE
3. SELECT

Соответственно при выполнении команды WHERE, alias, задаваемый в SELECT еще неизвестен.

Для PostgreSQL или MySQL данную проблему можно решить, например, следующим образом:

WITH ct AS (
SELECT id, name, CONCAT ('EU:', city) AS city_m
FROM customers
)
SELECT ct.*
FROM ct
WHERE ct.city_m = 'EU:Oslo';
👍13
🖥 Как в sql посчитать количество повторяющихся значений

Можно попробовать использовать функцию COUNT() в сочетании с оператором GROUP BY.

Предположим, у нас есть таблица "orders" с колонками "customer_name" и "order_date", и мы хотим посчитать, сколько заказов было сделано каждым клиентом. Мы можем написать следующий SQL-запрос:

SELECT customer_name, COUNT(*) as order_count
FROM orders
GROUP BY customer_name


Этот запрос выберет все уникальные значения из колонки "customer_name" в таблице "orders" и подсчитает количество строк, связанных с каждым уникальным значением. Результатом запроса будет таблица со столбцами "customer_name" и "order_count", в которой каждая строка будет показывать клиента и количество его заказов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
SQL_main_commands.pdf
975.2 KB
Шпаргалка по всем базовым командам SQL с пояснением и примерами
👍26🔥2