SQL Flashcards

1
Q

Какая разница между DROP и TRUNCATE?

A

DROP - удаляет всю таблицу
TRUNCATE - удаляет только данные таблицы

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Что такое case function?

A

Возвращение значений в зависимости от условия

CASE проверяет истинность набора условий и в зависимости от результата проверки может возвращать тот или иной результат.

Имеет два формата (оба поддерживают дополнительный аргумент ELSE):

  • простое выражение CASE для определения результата сравнивает выражение с набором простых выражений
  • поисковое выражение CASE для определения результата вычисляет набор логических выражений
CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

Пример:
~~~
SELECT
column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END AS new_column_name
FROM table_name;
~~~

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Что такое collation?

A

Collation - параметр указывает SQL серверу, как нужно сортировать и сравнивать строки. Например, разные или нет строки “Apple” и “apple” зависит от указанного Collation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Типы репликации в SQL Server?

A

Репликация- набор технологий копирования и распространения данных и объектов БД между БД, а также синхронизации БД для поддержания согласованности.

  • Репликация транзакций - изменения на издателе доставляются подписчику по мере их появления (почти в реальном времени). Изменения данных применяются на подписчике в том же порядке и в тех же рамках транзакций, в которых они выполнялись у издателя.
  • Репликация слиянием - данные можно изменять как на издателе, так и на подписчике, а также отслеживать с помощью триггеров. Подписчик синхронизируется с издателем при подключении к сети и обменивается с ним всеми строками, которые изменились со времени последней синхронизации издателя и подписчика.
  • Репликация моментальных снимков - моментальный снимок издателя применяется к подписчику. Данные распространяются точно в том виде, в котором они были представлены в определенный момент времени. Обновление данных не отслеживается. Во время синхронизации формируется моментальный снимок и отсылается подписчикам целиком.
  • Одноранговая репликация - основанна на репликации транзакций, распространяет согласованные на уровне транзакций изменения между несколькими экземплярами сервера почти в реальном времени.
  • Двунаправленная репликация - представляет собой особую топологию репликации транзакций, которая позволяет двум серверам обмениваться изменениями друг с другом: каждый сервер публикует данные, после чего подписывается на публикацию с теми же данными от другого сервера.
  • Обновляемые подписки - основаны на репликации транзакций. Когда данные для обновляемой подписки обновляются на подписчике, они сначала распространяются на издателя, а затем на других подписчиков.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Self Join

A

SELF JOIN - используется для объединения таблицы с ней самой таким образом, будто это две разные таблицы, временно переименовывая одну из них. Нужен тогда, когда у разных полей одной таблицы могут быть одинаковые значения. Например, один и тот же участник музыкальной группы может быть и вокалистом, и, например, клавишником.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Отличия БД от СУБД:

A
  • База данных (БД) — это собственно хранилище данных, которое может быть структурировано разными способами.
  • Система управления базами данных (СУБД) — это программное обеспечение, которое помогает управлять и манипулировать данными в базе данных
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Типы БД:

A
  • Иерархические БД организованы как дерево, где связи устанавливаются в виде “родитель-потомок”.
  • Сетевые БД имеют более сложную структуру с множественными связями между записями.
  • Реляционные БД (SQL) основаны на таблицах с данными, связанными через общие ключи. На курсе мы будем работать с ними.
  • Нереляционные БД (известные как NoSQL) структурируют данные не по табличной схеме, а используют форматы, такие как ключ-значение, документы, колонки или графы.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Типы СУБД:

A
  1. Реляционные СУБД:
    • MySQL: Открытая система, широко используемая в веб-разработке. На курсе мы будем работать с ней.
    • Oracle Database: Коммерческая СУБД, широко используемая в корпоративных решениях.
    • Microsoft SQL Server: Предназначена для интеграции с другими продуктами Microsoft.
    • PostgreSQL: Открытая СУБД, поддерживает большие базы данных и сложные запросы.
  2. Нереляционные (NoSQL) СУБД:
    • MongoDB: Документо-ориентированная СУБД, хранит данные в формате похожем на JSON.
    • Cassandra: Ориентирована на работу с большими объемами данных.
    • Redis: СУБД на основе ключ-значение, используется для кэширования данных и реализации очередей сообщений.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Типы отношений в SQL

A
  • 1 к 1 (Один к одному): Каждая запись в одной таблице соответствует одной записи в другой таблице.
  • 1 ко многим (Один ко многим): Одна запись в первой таблице может быть связана с многими записями во второй таблице.
  • Многие к 1 (Многие к одному): Множество записей в одной таблице связаны с одной записью в другой таблице.
  • Многие ко многим (Многие ко многим): Записи в одной таблице могут быть связаны с множеством записей в другой таблице.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Нормализация

A

это процесс организации данных для снижения избыточности и улучшения целостности.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Избыточность

SQL

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Целостность

SQL

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Нормальная форма

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

0NF (Нулевая нормальная форма):

A

нет структуры; данные могут быть дублированы и неструктурированы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

1NF (Первая нормальная форма):

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

2NF (Вторая нормальная форма):

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Денормализация

A

это процесс, используемый для оптимизации производительности базы данных путем добавления избыточности.

Это может включать объединение таблиц, чтобы уменьшить количество соединений (joins), или добавление избыточных копий данных в одной таблице для ускорения чтения за счет потенциально замедленной записи и увеличения использования пространства. Это противоположный нормализации подход, который часто используется в больших базах данных, где скорость чтения критически важна.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

INTEGER (INT):

Типы данных SQL

A
  • Пример:age INT
  • Этот тип данных используется для хранения целых чисел, например, возраста.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

FLOAT и DOUBLE:

Типы данных SQL

A
  • Пример:price FLOATилиaverage_score DOUBLE
  • Эти типы данных используются для хранения чисел с плавающей точкой, таких как цены или средние оценки.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

VARCHAR

Типы данных SQL

A

Пример: first_name VARCHAR(50)
Этот тип данных предназначен для хранения текстовых строк переменной длины, таких как имена.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

CHAR:

Типы данных SQL

A
  • Пример:gender CHAR(1)
  • CHAR также используется для хранения строк, но фиксированной длины. В этом примере, CHAR(1) будет использован для хранения одного символа (например, “M” или “F” для пола).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

DATE:

Типы данных SQL

A
  • Пример:birth_date DATE
  • Этот тип данных предназначен для хранения даты (год, месяц, день).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

ENUM:

Типы данных SQL

A

Пример: status ENUM(‘active’, ‘inactive’, ‘pending’)
ENUM представляет собой перечисление значений и используется, когда столбец может иметь только одно из ограниченного множества значений.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

BOOLEAN:

Типы данных SQL

A

Пример: is_active BOOLEAN
BOOLEAN предназначен для хранения логических значений, таких как true или false.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

TIME:

Типы данных SQL

A

Пример: appointment_time TIME
TIME используется для хранения времени (часы, минуты, секунды).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

DATETIME и TIMESTAMP:

Типы данных SQL

A

Пример: created_at DATETIME или updated_at TIMESTAMP
Эти типы данных используются для хранения даты и времени. DATETIME сохраняет фиксированную дату и время, в то время как TIMESTAMP может использоваться для отслеживания времени создания и обновления записей.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

BLOB и TEXT:

Типы данных SQL

A
  • Пример:profile_picture BLOBилиcomments TEXT
  • BLOB (Binary Large Object) и TEXT используются для хранения больших объемов данных, таких как изображения (BLOB) и длинные тексты (TEXT).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

NULL

Типы данных SQL

A

Это специальное значение в MySQL, которое указывает на отсутствие данных или неопределенное значение в столбце. Когда столбец имеет тип данных, который допускает NULL (например, VARCHAR, INT, DECIMAL, и т.д.) и в него не внесено конкретное значение, то это значение считается NULL. Это означает, что в ячейке

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Пустое значение (Empty Value):

Типы данных SQL

A

Это может относиться к строкам VARCHAR или TEXT, где внутри столбца есть строка, но она пуста, т.е., не содержит символов. Это не то же самое, что NULL. В этом случае, столбец не содержит NULL, но содержит пустую строку.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Получение списка всех доступных баз данных.

Работа с базами данных

A

SHOW DATABASES;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

SQL. Создание новой базы данных mydb

Работа с базами данных

A

CREATE DATABASE mydb;

30
Q

Удаление существующей базы данных и всех её данных.

Работа с базами данных

A

DROP DATABASE mydb;

31
Q

Активировать базу данных с которой будешь работать

Работа с базами данных

A
  • Выбор базы данных, с которой вы хотите работать (активировать).
  • Пример:USE mydb;
32
Q

CREATE TABLE:

Работа с таблицами

A
  • Создание новой таблицы.
  • Пример:CREATETABLEusers ( idINTAUTO_INCREMENTPRIMARYKEY, usernameVARCHAR(50)NOT NULL, emailVARCHAR(100)UNIQUE, birthdateDATE);
33
Q

SQL. Удаление таблицы users и всех её данных.

Работа с таблицами

A

DROP TABLE users;

34
Q

DESCRIBE (или DESC):

Работа с таблицами

A
  • Получение информации о структуре таблицы.
  • Пример:DESCRIBEusers;
35
Q

INSERT INTO:

Работа с таблицами

A
  • Вставка новых записей в таблицу.
  • Пример:INSERTINTOusers (username, email, birthdate)VALUES('john_doe','john@example.com','1990-05-15');
36
Q

SQL. Удаление записей из таблицы.

Работа с таблицами

A

DELETE FROM users WHERE id = 1;

37
Q

UPDATE:

Работа с таблицами

A
  • Обновление данных в таблице.
  • Пример:UPDATEusersSETemail='new_email@example.com'WHEREid=2;
38
Q

Изменение структуры существующей таблицы.

A
  • Примеры:
    • Добавление нового столбца:ALTER TABLE users ADD COLUMN phone_number VARCHAR(20);
    • Изменение типа столбца:ALTER TABLE users MODIFY COLUMN phone_number INT;
    • Удаление столбца:ALTER TABLE users DROP COLUMN birthdate;
39
Q

Как получить все данные из таблицы?

SQL

A

SELECT * FROM employees;

40
Q

Как получить уникальные значения столбца?

SQL

A
  • DISTINCT
  • Пример:SELECT DISTINCT department FROM employees;
41
Q

Как получить первые несколько записей из таблицы?

SQL

A
  • SELECT * FROM LIMIT
  • Пример: SELECT * FROM employees LIMIT 3;
42
Q

Как переименовать столбец в результате запроса?

SQL

A
  • SELECT field AS
  • Переименование столбца в результате запроса.
  • Пример:SELECT first_name AS "First Name", last_name AS "Last Name" FROM employees;
43
Q

Использование оператора OR для комбинирования условий.

SQL

A
  • SELECT FROM WHERE OR
  • Пример:SELECT * FROM employees WHERE department = 'HR' OR department = 'IT';
44
Q

Получить данные с условием.

SQL

A
  • SELECT FROM WHERE
  • Пример:SELECT * FROM employees WHERE department = 'HR';
45
Q

Использование оператора AND для комбинирования условий.

SQL

A
  • SELECT FROM WHERE AND
  • Пример:
SELECT * 
FROM employees 
WHERE department = 'Finance' AND salary >  60000.00;
46
Q

Поиск строк, где символ подчеркивания (_) заменяет один символ.

SQL

A
  • LIKE _
  • Пример:SELECT * FROM employees WHERE last_name LIKE 'D_e';
47
Q

Поиск строк с произвольными символами перед и/или после указанных символов.

SQL

A
  • LIKE %
  • Пример:SELECT * FROM employees WHERE first_name LIKE 'J%';
48
Q

SELECT * FROM employees

Поиск значений, которые не соответствуют условию department = ‘IT’

A

Пример:

`SELECT * FROM employees WHERE NOT department = 'IT';`
48
Q

SQL - Найти строку, имеющую в середине “g”, имеющийодин символ перед “g” и любое количество после.

A
  • Пример:
      `SELECT * FROM employees WHERE last_name LIKE '_g%';`
48
Q

SQL Поиск значений, соответствующих списку значений.

SELECT * FROM employees где department находится в списке из HR и Finance

A

SELECT * FROM employees WHERE department IN ('HR', 'Finance');

49
Q

SQL Поиск значений в заданном диапазоне

SELECT * FROM employees где salary между двумя суммами

A

SELECT * FROM employees WHERE salary BETWEEN 55000.00 AND 75000.00;

50
Q

Сложное условие с операторами AND и сравнениями.

SELECT * FROM employees WHERE зарплата больше 60000 и департамент - Finance

A

SELECT * FROM employees WHERE (salary > 60000.00) AND (department='Finance');

51
Q

SQL. Сортировка результатов по возрастанию.

SELECT * FROM employees - отсортировать по зарплате в возрастающем порядке

A

SELECT * FROM employees ORDER BY salary ASC;

52
Q

SQL. Сортировка результатов по убыванию.

SELECT * FROM employees - отсортировать по зарплате по убыванию

A

SELECT * FROM employees ORDER BY salary DESC;

53
Q

SQL. Получение минимального и максимального значения из столбца.

SELECT минимальна зарплата и максимальная зарплата

A

SELECT MIN(salary) AS "Min Salary", MAX(salary) AS "Max Salary" FROM employees;

54
Q

SQL- Подсчет количества записей которые будут выданы

A

SELECT COUNT(*) AS "Total Employees" FROM employees;

55
Q

SQL Получение среднего значения из столбца.

SELECT среднюю зарплату из таблицы employees

A

SELECT AVG(salary) AS "Average Salary" FROM employees;

56
Q

SQL - объединить строки из двух таблиц на основе совпадающих значений

A
  • INNER JOIN используется для объединения строк из двух таблиц на основе совпадающих значений в указанных столбцах.
  • Пример:SELECT employees.first_name, employees.last_name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id;
  • Этот запрос объединяет данные из таблиц “employees” и “departments” по значению столбца “department_id”. В результате получается список имен сотрудников и названий департаментов, к которым они относятся.
57
Q

LEFT JOIN:

A
  • LEFT JOIN используется для объединения строк из левой таблицы (employees) со всеми совпадающими строками из правой таблицы (departments).
  • Пример:SELECT employees.first_name, employees.last_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id;
  • Этот запрос вернет список всех сотрудников и их департаментов. Если сотрудник не привязан к департаменту, его данные также будут включены в результат.
58
Q

RIGHT JOIN:

A
  • RIGHT JOIN используется для объединения строк из правой таблицы (departments) со всеми совпадающими строками из левой таблицы (employees).
  • Пример:SELECTemployees.first_name, employees.last_name, departments.department_nameFROMemployeesRIGHTJOINdepartmentsONemployees.department_id=departments.department_id;
  • Этот запрос вернет список всех департаментов и их сотрудников. Если департамент не имеет сотрудников, его данные также будут включены в результат.
59
Q

SQL Вложенные подзапросы:

A

Вложенные подзапросы позволяют выполнять запросы внутри других запросов.

Пример (получение средней зарплаты в департаменте “HR”):

SELECT department_name, (SELECT AVG(salary) FROM employees WHERE department_id = departments.department_id) AS avg_salary FROM departments WHERE department_name = 'HR';

В этом запросе внутренний подзапрос

(SELECT AVG(salary) FROM employees WHERE department_id = departments.department_id)

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

60
Q

SQL Экспорт данных:

A

Экспорт данных в MySQL позволяет сохранить содержимое базы данных или конкретные таблицы во внешний файл. Это полезно для создания резервных копий данных, а также для передачи данных между разными системами или средами.

61
Q

Импорт данных:

A
  • Импорт данных в MySQL представляет собой процесс загрузки данных из внешнего файла (например, SQL-дампа или CSV-файла) в базу данных. Это может быть полезно для восстановления данных из резервных копий или для обновления базы данных с новыми данными.
  • Также это может использоваться для тестирования участков дефектных данных от конечных пользователей и заказчиков для выяснения корневой причины проблемы.
  • Импорт данных можно применять для загрузки заранее подготовленных тестовых данных в БД. Это позволяет создавать конкретные тестовые сценарии с известными данными.
62
Q

Миграция данных:

A
  • Миграция данных представляет собой процесс перемещения данных из одной базы данных в другую, часто при изменении структуры базы данных или переносе данных на другой сервер. Это может быть необходимо при обновлении приложений или масштабировании системы.
  • После миграции данных тестировщику необходимо убедиться, что система работает в штатном режиме, все разрешения для ролей на месте, как и основные данные приложения.
63
Q

SQL UNION:

A
  • UNION используется для объединения результатов двух или более запросов в один набор результатов. Он удаляет дубликаты строк.
  • Пример (получение списка всех сотрудников и департаментов):

SELECT first_name, last_name, department_id FROM employees UNION SELECT department_name AS first_name, NULL AS last_name, department_id FROM departments;

  • Этот запрос объединяет список сотрудников из таблицы “employees” с названиями департаментов из таблицы “departments”.
64
Q

UNION ALL:

A
  • UNION ALL также используется для объединения результатов двух или более запросов в один набор результатов, но он сохраняет все строки, включая дубликаты.
  • Пример (получение списка всех сотрудников и департаментов):
SELECT first_name, last_name, department_id 
FROM employees 
UNION ALL 
SELECT department_name AS first_name, NULL AS last_name, department_id 
FROM departments;
  • В этом запросе используется UNION ALL, поэтому дубликаты будут сохранены в результате.
65
Q

SQL HAVING:

A
  • HAVING используется для фильтрации результатов агрегированных функций (например, COUNT, SUM, AVG) в GROUP BY.
  • Пример (получение департаментов сосредней зарплатой выше 60000):
SELECT department_id, AVG(salary) AS avg_salary 
FROM employees 
GROUP BY department_id
HAVING avg_salary > 60000;`
  • Этот запрос сначала агрегирует данные по департаментам, а затем фильтрует результаты, оставляя только те департаменты, у которых средняя зарплата превышает 60000.
66
Q

Агрегатные функции:

A

SELECT AVG(number) FROM courses; - посчитать среднее значение всех значений из столбца

  1. AVG - среднее значение
  2. SUM - сумма
  3. MIN
  4. MAX
  5. COUNT - количество заполненных записей
67
Q

SQL - Создать таблицу

A

CREATE TABLE tablename (поля + типы данных + primary_key)

CREATE TABLE users 
( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE, birthdate DATE );
68
Q

SQL - удалить таблицу users

A

DROP TABLE users;

69
Q

SQL - вставка записей в таблицу

A

Вставка новых записей в таблицу.

INSERT INTO tablename (столбцы) VALUES (значения)

INSERT INTO users (username, email, birthdate) VALUES ('john_doe', 'john@example.com', '1990-05-15');

70
Q

Удалить запись из таблицы

A

Удаление записей из таблицы.

DELETE FROM users WHERE id = 1;

71
Q

SQL - Обновление данных в таблице.

A

UPDATE tablename SET поле = 'значение' WHERE условие

UPDATE users SET email = 'new_email@example.com' WHERE id = 2;

72
Q

SQL отличие UNION от UNION ALL

A
  1. UNION - удаляет дубли
  2. UNION ALL - выводит с дублями
73
Q

SQL. Правильный порядок ключевых слов

A
  1. SELECT – перечисление полей результирующей таблицы
  2. FROM – указание источника данных
  3. WHERE – фильтрация данных
  4. GROUP BY – группировка данных
  5. HAVING – фильтрация данных после группировки
  6. ORDER BY – сортировка результирующей таблицы
  7. LIMIT – ограничение количества выводимых записей