SQL Шпаргалка
| Команда | Пример | Примечание | Обьяснение |
| SELECT FROM | SELECT column, another_column, … FROM mytable; SELECT * FROM mytable; | * выбрать все столбцы, табл.* выбрать все столбцы с этой таблицы | |
| WHERE | SELECT column, another_column, … FROM mytable WHERE указать условие | Условие | |
| DISTINCT | SELECT DISTINCT column, another_column, … FROM mytable WHERE condition(s); | Выбрать уникальное значение | |
| ORDER BY ASC/DESC | SELECT column, another_column, … FROM mytable WHERE condition(s) ORDER BY column ASC/DESC; | Если сортировка по возрастанию то писать ASC не обязательно | |
| LIMIT OFFSET | SELECT 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 BY | SELECT AGG_FUNC(column_or_expression) AS aggregate_description, … FROM mytable WHERE constraint_expression GROUP BY column; | Предложение GROUP BY группирует строки таблицы, объединяя их в одну группу при совпадении значений во всех перечисленных колонках. Порядок, в котором указаны колонки, не имеет значения. В результате наборы строк с одинаковыми значениями преобразуются в отдельные строки, представляющие все строки группы. Это может быть полезно для устранения избыточности выходных данных и/или для вычисления агрегатных функций, применённых к этим группам. | |
| INNER JOIN ON | SELECT 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 ON | SELECT 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. | |
| Operator | SQL 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/OR | SELECT column, another_column, … FROM mytable WHERE condition AND/OR another_condition AND/OR …; | ||
| IS NULL IS NOT NULL | SELECT column, another_column, … FROM mytable WHERE column IS/IS NOT NULL AND/OR another_condition AND/OR …; | NULL пустая строка | |
| LIKE | col_name LIKE “ABC” | Case insensitive exact string comparison | |
| NOT LIKE | col_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 | |||
| CREATE | CREATE 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 ); | ||
| UPDATE | UPDATE tAuthors SET AuthorFirstName = ‘Лев’, AuthorLastName=’Толстой’, AuthorAge = ’82’ WHERE AuthorId = ‘6’; | UPDATE – SQL запрос, позволяющий внести изменения или дописывать новую информацию в те записи, которые уже существуют. | |
| INSERT | INSERT INTO tAuthors VALUES (‘Уильям’, ‘Шекспир’, ’51’); | INSERT – это вид запроса SQL, при применении которого СУБД выполняет добавление новых записей в БД. | |
| DELETE | DELETE FROM tAuthors WHERE AuthorId = ‘5’; | DELETE – SQL запрос, выполняя который в СУБД производится операция удаления определенной строки из таблицы в БД. | |
| DROP | DROP TABLE tAuthors; | DROP – ключевое слово в SQL, применяемое для удаления данных с помощью запроса. К примеру удаление некоторой таблицы из БД. | |