SQL Flashcards

1
Q

SQL

A

язык запросов для работы с базами данных, структурированных особым образом.

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

SELECT

A

SELECT название столбцов, FROM название таблицы;
Оператор запроса, возвращающий набор данных (выборку).

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

общая структура запроса

A

SELECT - столбцы или * для выбора всех столбцов; обязательно
FROM - таблица; обязательно
WHERE - условие, например, city = ‘Moscow’; необязательно ( AND,OR, IN)
GROUP BY - столбец, по которому хотим сгруппировать данные; необязательно
HAVING - условие/фильтрация на уровне сгруппированных данных; необязательно
ORDER BY - столбец, по которому хотим отсортировать вывод; необязательно

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

WHERE

A

Необязательный опреатор запроса, для фильтрации данных по нужному условию. Внутри WHERE используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.
WHERE Country = ‘Germany’ AND City NOT IN (‘Berlin’, ‘Aachen’) AND CustomerID > 15

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

GROUP BY

A

Необязательный элемент запроса, задает агрегацию по нужному столбцу (например, если нужно узнать какое количество клиентов живет в каждом из городов).
1. перечень столбцов, по которым делается разрез, был одинаковым внутри SELECT и внутри GROUP BY,
2. агрегатные функции (SUM, AVG, COUNT, MAX, MIN) должны быть также указаны внутри SELECT с указанием столбца, к которому такая функция применяется.
SELECT City, COUNT(CustomerID) FROM Customers
GROUP BY City

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

AS

A

дает таблице или колонке в таблице временное имя. Часто используется чтобы сделать имя колонке более читабельным. Алиас существует только на время запроса. Если Алиас содержит пробелы то его заключают в “” или [].
Может помочь если:
- Более чем одна таблица присутствует в запросе;
- Функции используются в запросе
- Имена колонок большие и не читаемые
- Две или более колонки нужно объединить в одну.
SELECT_column_name_AS_alias_name_
FROM_table_name;_
или SELECT_column_name(s)_
FROM_table_name_AS_alias_name;_

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

HAVING

A

Необязательный элемент запроса, который отвечает за фильтрацию на уровне сгруппированных данных (по сути, WHERE, но только на уровень выше).
Фильтрация агрегированной таблицы с количеством клиентов по городам, в данном случае оставляем в выгрузке только те города, в которых не менее 5 клиентов.
select City, count(CustomerID) from Customers
group by City
HAVING count(CustomerID) >= 5

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

ORDER BY

A

Необязательный элемент запроса, который отвечает за сортировку таблицы. Осуществлять сортировку можно и по нескольким столбцам, в этом случае сортировка происходит по порядку указанных столбцов.
SELECT * FROM Customers
ORDER BY Country, City

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

DESC

A

По умолчанию сортировка происходит по возрастанию для чисел и в алфавитном порядке для текстовых значений. Если нужна обратная сортировка, то в конструкции ORDER BY после названия столбца надо добавить DESC.
SELECT * FROM Customers
ORDER BY Country DESC, City

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

JOIN

A

Необязательный элемент, используется для объединения таблиц по ключу, который присутствует в обеих таблицах. Перед ключом ставится оператор ON. Запрос, в котором соединяем таблицы Order и Customer по ключу CustomerID, при этом перед названиям столбца ключа добавляется название таблицы через точку: select * from Orders
JOIN Customers ON Orders.CustomerID = Customers.CustomerID

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

SELECT DISTINCT

A

возвращает данные с отличным значением.(не повторяющиеся)

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

NOT

A

используется в комбинации с другими операторами для противоположного результата.
NOT …. =(<,>) …, NOT LIKE, NOT BETWEEN, NOT IN

SELECT_column1,column2, …
FROM_table_name

WHERENOTcondition;

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

INSERT INTO

A

вставить строку с данными в таблицу.
INSERTINTO_table_name (column1,column2,column3, …)

VALUES(value1,value2,value3, …);

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

UPDATE

A

используется для модификации существующей записи.
UPDATE_table_name_
SET_column1=value1,column2=value2, …
WHERE_condition
;
Если не использовать условие то изменятся все данные в таблице!

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

NULL

A

это поле, оставленное пустым при создании записи.
проверка не него осуществляется с помощью IS NULL или IS NOT NULL

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

DELETE

A

удаляет записи в таблице.
DELETEFROM_table_name_WHERE_condition_;
без условия удаляются все записи без удаления самой таблицы.

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

SELECT TOP
LIMIT

A

выводит указанное количество записей.
SELECT TOP SQL Server
LIMIT MySQL

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

MIN MAX

A

агрегатная функция. Возвращает минимальное или максимальное значение в выборке.
SELECTMIN(Price) аналогично MAX
FROMProducts;

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

COUNT

A

агрегатная функция. Возвращает количество рядов для указанной колонки. Возможно применение условия.
SELECT SUM(column_name)
FROM table_name
WHERE condition;
COUNT(DISTINCT ) возвращает количество рядов без дубликатов.

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

SUM

A

агрегатная функция, которая возвращает сумму по столбцу с числами. Возможно применение условия. Сумма может быть от выражения.
SELECTSUM(column_name)
FROM_table_name_
WHERE_condition_;

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

AVG

A

агрегатная функция, которая возвращает среднее значение по колонке с числами.
SELECTAVG(column_name)
FROM_table_name_
WHERE_condition_;

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

LIKE

A

оператор используется с WHERE для поиска по указанному паттерну в колонке.
Есть два варианта подстановочных карт:
- с % представляет 0, 1 или несколько символов ‘а%’
- знак подчёркивания представляет 1 простой символ ‘jk
эти два варианта можно комбинировать.
Может использоваться с операторами OR и AND.
SELECT_column1, column2, …_
FROM_table_name_
WHERE_columnN_LIKEpattern;

23
Q

IN

A

оператор позволяет указать несколько значений для условия. Можно оформить подзапрос с помощью IN.
SELECT_column_name(s)_
FROM_table_name_
WHERE_column_name_IN(value1,value2, …);

24
Q

BETWEEN

A

оператор выбора значений в заданном диапазоне. Значениями могут быть числа, текст или дата. Включает начало и конец интервала.
SELECT_column_name(s)_
FROM_table_name_
WHERE_column_name_BETWEEN_value1AND_value2;

25
INNER JOIN
выбирает записи которые имеют соответствие в обеих таблицах. SELECT _column_name(s)_ FROM _table1_ INNER JOIN _table2 ON _table1.column_name_ = _table2.column_name_;
26
LEFT JOIN
возвращает все записи из левой таблицы(table1), и совпадающие записи из правой таблицы (table2). Если нет совпадений то результатом будет 0 записей с правой стороны. SELECT _column_name(s)_ FROM _table1_ LEFT JOIN _table2 _ON _table1.column_name_ = _table2.column_name_;
27
RIGHT JOIN
возвращает все записи из правой таблицы(table2), и совпадающие записи из левой таблицы(table1). Если нет совпадений то результатом будет 0 записей с левой таблицы. SELECT _column_name(s)_ FROM _table1_ RIGHT JOIN _table2 _ON _table1.column_name_ = _table2.column_name_;
28
SELF JOIN
Самосоединение — это обычное соединение, но таблица соединяется сама с собой. SELECT _column_name(s)_ FROM _table1 T1, table1 T2_ WHERE _condition_;
28
FULL JOIN
возвращает все записи, если есть совпадения в левой (таблица1) или правой (таблица2) таблицах записей. SELECT _column_name(s)_ FROM _table1_ FULL OUTER JOIN _table2 _ON _table1.column_name_ = _table2.column_name_WHERE _condition_; Возвращает все совпадающие записи из обеих таблиц независимо от того, соответствует ли другая таблица.
29
UNION
оператор используется для объединения выборок из двух и более SELECT. - каждый SELECT должен иметь одно и тоже количество колонок. - колонки также должны иметь похожий типы данных. - колонки у каждого SELECT должны быть в том же порядке.
30
EXISTS
оператор используется для тестов на проверку существования любой записи в подзапросе. Оператор вернет верно, если подзапрос возвращает одну или более записей. SELECT _column_name(s)_ FROM _table_name_ WHERE EXISTS (SELECT _column_name_ FROM _table_name_ WHERE _condition_);
31
ANY
- возвращает значение булеан как результат - возвращает верно если любые значения подзапроса выполняют условие ANY означает, что условие будет истинным, если операция верна для любого из значений в диапазоне. SELECT _column_name(s)_ FROM _table_name_ WHERE _column_name operator_ ANY   (SELECT _column_name_  FROM _table_name_  WHERE _condition_); operator должен быть стандартным оператором сравнения(=,<,>,<>,<=,>=,!=)
32
ALL
**ALL** - возвращает значение булеан как результат - возвращает верно если все значения подзапроса выполняют условие - используется с SELECT, WHERE, HAVING SELECT ALL _column_name(s)_ FROM _table_name_ WHERE _condition_; SELECT _column_name(s)_ FROM _table_name_ WHERE _column_name operator_ ALL   (SELECT _column_name_  FROM _table_name_  WHERE _condition_);
33
SELECT INTO
копирует данные из одной таблицы в новую таблицу. SELECT * INTO _newtable_ [IN _externaldb_] FROM _oldtable _WHERE _condition_; если вместо * указать колонки, скопирует их. Можно создать новую колонку используя Алиас. Если использовать IN ' ' это создаст копию таблицы в другой базе. Можно использовать для создании схемы таблицы без данных. Для этого нужно указать WHERE 1 = 0.
34
INSERT INTO SELECT
копирует данные из одной таблицы и вставляет их в другую таблицу. Требует чтобы типы данных в источнике и целевой таблице совпадали. INSERT INTO _table2_ SELECT * FROM _table1 _WHERE _condition_; Если указываются колонки. INSERT INTO _table2_ (_column1_, _column2_, _column3_, ...) SELECT _column1_, _column2_, _column3_, ... FROM _table1_ WHERE _condition_;
35
CASE
Выражение CASE проходит через условия и возвращает значение при выполнении первого условия (например, оператор if-then-else). Итак, как только условие станет истинным, оно прекратит чтение и вернет результат. Если ни одно из условий не является истинным, возвращается значение в предложении ELSE. CASE     WHEN _condition1_ THEN _result1_     WHEN _condition2_ THEN _result2_     WHEN _conditionN_ THEN _resultN_     ELSE _result_ END;
36
NULL Functions
Для баз данных разная. Пример.IFNULL() проверяет на NULL. SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0)) FROM Products;
37
CREATE PROCEDURE
Создание процедуры. **CREATE PROCEDURE** имя @имяпараметра AS ... GO; вызов EXEC имя @имяатрибута; процедура в SQL.
38
CREATE DATABASE
создание новой SQL базы данных CREATE DATABASE _databasename_;
39
DROP DATABASE
удаление существующей SQL базы данных DROP DATABASE _databasename_;
40
CREATE TABLE
создание таблицы.CREATE TABLE _table_name_ (     _column1 datatype_,     _column2 datatype_,     _column3 datatype_,    .... ); Создание таблицы из существующей таблицы. CREATE TABLE _new_table_name_ AS     SELECT _column1, column2,..._     FROM _existing_table_name_     WHERE ....;
41
DROP TABLE
удаление таблицы. TRUNCATE TABLE удаляет данные из таблицы но ее структура остается.
42
ALTER TABLE
используется для добавления, удаления или изменения колонок в существующей таблице. Так же используется для добавления и удаления различных ограничений в существующей таблице. ALTER TABLE _table_name_ ADD _column_name datatype_; ALTER TABLE _table_name_ DROP COLUMN _column_name_;
43
SQL Constrains
Ограничения. Используются для указания правил для данных в таблице. Синтаксис зависит от БД. В MySQL отлично от других при созданиий таблиц и удалении ограничений. Ограничения могут быть добавлены и удалены с помощью ALTER TABLE
44
NOT NULL
Ограничение. Гарантирует, что столбец не может иметь значение NULL.
45
UNIQUE
Ограничение. Гарантирует что все значения в столбце различны.
46
PRIMARY KEY
Ограничения. Комбинация NOT NULL и UNIQUE. Уникально идентифицирует каждую строку таблицы. Может быть одной колонкой, либо состоять из нескольких колонок.
47
FOREIGN KEY
Ограничения. Предотвращает действия, которые могут разрушить связи между таблицами. Это поле или несколько полей в одной таблице, и ссылается на PK в другой таблицы. FOREIGN KEY(PersonID) REFERENCES Persons(PersonID).
48
CHECK
Ограничение. Обеспечивает то что значение в колонке удовлетворяет конкретному условию.
49
DEFAULT
Ограничение. Устанавливается по умолчанию значение для колонки если нет значения в указанном.
50
CREATE INDEX
Создается индекс, используется для очень быстрого создания и забора данных из БД. Пользователь не видит индексы, они используются только для поиска и запросов. CREATE INDEX _index_name_ ON _table_name_ (_column1_, _column2_, ...); создание уникального индекса CREATE UNIQUE INDEX _index_name_ ON _table_name_ (_column1_, _column2_, ...);
51
AUTO INCREMENT
позволяет уникальному числу быть сгенерированным автоматически, когда новая запись добавляется в таблицу. Часто это PK. по умолчанию начинается с 1, но значение можно и присвоить. Синтаксис зависит от БД.
52