SQL Шпаргалка

КомандаПримерПримечаниеОбьяснение
SELECT FROMSELECT column, another_column, … FROM mytable;
SELECT * FROM mytable;
* выбрать все столбцы, табл.* выбрать все столбцы с этой таблицы
WHERESELECT column, another_column, … FROM mytable WHERE указать условиеУсловие
DISTINCTSELECT DISTINCT column, another_column, … FROM mytable WHERE condition(s);Выбрать уникальное значение
ORDER BY ASC/DESCSELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC;Если сортировка по возрастанию то писать ASC не обязательно
LIMIT OFFSETSELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC LIMIT num_limit OFFSET num_offset;Можно заменить на TOP № после SELECT
Если указывается число LIMIT, в результате возвращается не больше заданного числа строк (меньше может быть, если сам запрос выдал меньшее количество строк). LIMIT ALL равносильно отсутствию указания LIMIT.
OFFSET указывает пропустить указанное число строк, прежде чем начать выдавать строки. OFFSET 0 равносильно отсутствию указания OFFSET, а LIMIT NULL — отсутствию LIMIT. Если указано и OFFSET, и LIMIT, сначала система пропускает OFFSET строк, а затем начинает подсчитывать строки для ограничения LIMIT.
Применяя LIMIT, важно использовать также предложение ORDER BY, чтобы строки результата выдавались в определённом порядке. Иначе будут возвращаться непредсказуемые подмножества строк. Вы можете запросить строки с десятой по двадцатую, но какой порядок вы имеете в виду? Порядок будет неизвестен, если не добавить ORDER BY.

GROUP BYSELECT AGG_FUNC(column_or_expression) AS aggregate_description, … FROM mytable WHERE constraint_expression GROUP BY column;Предложение GROUP BY группирует строки таблицы, объединяя их в одну группу при совпадении значений во всех перечисленных колонках. Порядок, в котором указаны колонки, не имеет значения. В результате наборы строк с одинаковыми значениями преобразуются в отдельные строки, представляющие все строки группы. Это может быть полезно для устранения избыточности выходных данных и/или для вычисления агрегатных функций, применённых к этим группам.
INNER JOIN ONSELECT column, another_table_column, … FROM mytable INNER JOIN another_table ON mytable.id = another_table.id WHERE condition(s) ORDER BY column, … ASC/DESC LIMIT num_limit OFFSET num_offset;Для каждой строки R1 из T1 в результирующей таблице содержится строка для каждой строки в T2, удовлетворяющей условию соединения с R1.
LEFT JOIN RIGHT JOIN FULL JOIN ONSELECT column, another_column, … FROM mytable INNER/LEFT/RIGHT/FULL JOIN another_table ON mytable.id = another_table.matching_id WHERE condition(s) ORDER BY column, … ASC/DESC LIMIT num_limit OFFSET num_offset;



Вы можете увидеть запросы с этими соединениями, записанными как LEFT OUTER JOIN, RIGHT OUTER JOIN или FULL OUTER JOIN, но ключевое слово OUTER действительно сохраняется для совместимости с SQL-92, и эти запросы просто эквивалентны LEFT JOIN, RIGHT JOIN и FULL JOIN. соответственно.
LEFT OUTER JOIN Сначала выполняется внутреннее соединение (INNER JOIN). Затем в результат добавляются все строки из T1, которым не соответствуют никакие строки в T2, а вместо значений колонок T2 вставляются NULL. Таким образом, в результирующей таблице всегда будет минимум одна строка для каждой строки из T1.
RIGHT OUTER JOIN Сначала выполняется внутреннее соединение (INNER JOIN). Затем в результат добавляются все строки из T2, которым не соответствуют никакие строки в T1, а вместо значений колонок T1 вставляются NULL. Это соединение является обратным к левому (LEFT JOIN): в результирующей таблице всегда будет минимум одна строка для каждой строки из T2.
FULL OUTER JOIN Сначала выполняется внутреннее соединение. Затем в результат добавляются все строки из T1, которым не соответствуют никакие строки в T2, а вместо значений колонок T2 вставляются NULL. И наконец, в результат включаются все строки из T2, которым не соответствуют никакие строки в T1, а вместо значений колонок T1 вставляются NULL.
Предложение ON определяет наиболее общую форму условия соединения: в нём указываются выражения логического типа, подобные тем, что используются в предложении WHERE. Пара строк из T1 и T2 соответствуют друг другу, если выражение ON возвращает для них true.
You might see queries with these joins written as LEFT OUTER JOIN, RIGHT OUTER JOIN, or FULL OUTER JOIN, but the OUTER keyword is really kept for SQL-92 compatibility and these queries are simply equivalent to LEFT JOIN, RIGHT JOIN, and FULL JOIN respectively.
Function
Агрегатные функцииDescription
COUNT(*), COUNT(column)SELECT AGG_FUNC(column_or_expression) AS aggregate_description, … FROM mytable WHERE constraint_expression GROUP BY column;Посчитать строки в столбце или всех столбцах*A common function used to counts the number of rows in the group if no column name is specified. Otherwise, count the number of rows in the group with non-NULL values in the specified column.
MIN(column)

Finds the smallest numerical value in the specified column for all rows in the group.
MAX(column)

Finds the largest numerical value in the specified column for all rows in the group.
AVG(column)

Finds the average numerical value in the specified column for all rows in the group.
SUM(column)
sum — агрегатная функция, вычисляющая единственное значение для всей группыFinds the sum of all numerical values in the specified column for the rows in the group.
OperatorSQL Example
Condition
=, !=, < <=, >, >=col_name != 4
Standard numerical operators
=col_name = “abc”
Case sensitive exact string comparison (notice the single equals)
!= or <>col_name != “abcd”
Case sensitive exact string inequality comparison
AND/ORSELECT column, another_column, … FROM mytable WHERE condition AND/OR another_condition AND/OR …;

IS NULL IS NOT NULLSELECT column, another_column, … FROM mytable WHERE column IS/IS NOT NULL AND/OR another_condition AND/OR …;NULL пустая строка
LIKEcol_name LIKE “ABC”
Case insensitive exact string comparison
NOT LIKEcol_name NOT LIKE “ABCD”
Case insensitive exact string inequality comparison
%col_name LIKE “%AT%”
Used anywhere in a string to match a sequence of zero or more characters (only with LIKE or NOT LIKE) (matches “AT”, “ATTIC”, “CAT” or even “BATS”)
_col_name LIKE “AN_”
Used anywhere in a string to match a single character (only with LIKE or NOT LIKE) (matches “AND”, but not “AN”)
BETWEEN … AND …col_name BETWEEN 1.5 AND 10.5
Number is within range of two values (inclusive)
NOT BETWEEN … AND …col_name NOT BETWEEN 1 AND 10
Number is not within range of two values (inclusive)
IN (…)col_name IN (2, 4, 6) col_name IN (“A”, “B”, “C”)
Number exists in a list String exists in a list
NOT IN (…)col_name NOT IN (“D”, “E”, “F”)
Number exists in a list String does not exist in a list

Последовательность


SELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC LIMIT num_limit OFFSET num_offset;


Запрос с выражением


SELECT particle_speed / 2.0 AS half_particle_speed FROM physics_data WHERE ABS(particle_position) * 10.0 > 500;
SELECT column AS better_column_name, … FROM a_long_widgets_table_name AS mywidgets INNER JOIN widget_sales ON mywidgets.id = widget_sales.widget_id; Exercise






CREATECREATE TABLE ORDERS ( O_NO int NOT NULL, DATE date NOT NULL, C_NO int NOT NULL, T_NO int NOT NULL, QUANTITY double(9,2) NOT NULL, AMOUNT double(9,2) NOT NULL );

UPDATEUPDATE tAuthors SET AuthorFirstName = ‘Лев’, AuthorLastName=’Толстой’, AuthorAge = ’82’ WHERE AuthorId = ‘6’;UPDATE – SQL запрос, позволяющий внести изменения или дописывать новую информацию в те записи, которые уже существуют.
INSERTINSERT INTO tAuthors VALUES (‘Уильям’, ‘Шекспир’, ’51’);INSERT – это вид запроса SQL, при применении которого СУБД выполняет добавление новых записей в БД.
DELETEDELETE FROM tAuthors WHERE AuthorId = ‘5’;DELETE – SQL запрос, выполняя который в СУБД производится операция удаления определенной строки из таблицы в БД.
DROPDROP TABLE tAuthors;DROP – ключевое слово в SQL, применяемое для удаления данных с помощью запроса. К примеру удаление некоторой таблицы из БД.




Zagurska Olga

Автор: Olga Zagurska