Какие операторы доступны в sql
Перейти к содержимому

Какие операторы доступны в sql

  • автор:

Руководство по наиболее востребованным базовым командам SQL

Андрей Шагин

Продемонстрируем применение основных команд SQL на примерах.

Команды

1. SELECT для выбора данных:

2. FROM для указания источника собираемых данных:

3. WHERE для выполнения условия:

4. AS для назначения псевдонима таблице или полям:

5. JOIN для объединения строк двух и более таблиц:

6. AND, OR для объединения условий запроса.

AND для проверки всех условий, которые должны быть истинными:

OR для проверки истинности по крайней мере одного условия:

7. LIMIT, OFFSET для контроля и пропуска числа записей.

LIMIT для контроля числа возвращаемых записей:

OFFSET для пропуска числа записей:

Этим запросом возвращается десять записей после пропуска пяти.

OFFSET без LIMIT не применяется.

8. IN — это сокращенный метод с несколькими условиями OR для выбора записей по совпадающим значениям:

Этим запросом возвращаются все пользователи с одной из перечисленных в In() квалификаций.

9. CASE для проверки выполнения конкретных условий, с применением простого if-else :

Выполнение команды завершается, когда найдено соответствие условию. Возвращается значение, указанное в THEN.

Если соответствие не найдено, возвращается значение из ELSE. Если в ELSE ничего не указано, возвращается NULL.

10. IS NULL, IS NOT NULL для проверки значения null и не null соответственно:

11. LIKE — это оператор сопоставления с шаблоном, аналог WHERE.

Знак процента (%) используется для выявления частичного совпадения:

Этим запросом выбираются все записи, в которых имя пользователя начинается с al : Alex, Alis.

А еще так находятся записи с конкретной буквой в заданной позиции в строке:

Этим запросом выполняется поиск записей со второй буквой a в имени: Jane, Jack.

Знаками процента (%) и подчеркивания (_) запрос LIKE подстраивается под требования.

LIKE применяется и с оператором логического отрицания NOT: NOT LIKE.

12. DISTINCT для удаления из таблицы повторяющихся записей и получения только уникальных:

Этим запросом из результата удаляются пользователи с повторяющимися именами.

13. EXPLAIN для получения информации о выполнении запроса в таблице:

Применяется в основном для оптимизации базы данных.

14. ALTER TABLE для обновления имеющейся таблицы или столбцов:

15. CREATE для создания таблицы:

16. DELETE для удаления записей из таблицы:

17. UPDATE для обновления записей таблицы:

18. INSERT для вставки записей в таблицу:

19. TRUNCATE для очистки таблицы:

20. DROP для удаления таблицы:

Операторы

1. GROUP BY для группировки записей по заданным значениям столбцов:

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

2. ORDER BY для упорядочения данных указанных столбцов по возрастанию или убыванию:

3. HAVING используется с GROUP BY, так как WHERE не применяется с агрегированными результатами:

Этим запросом возвращается количество пользователей, сгруппированных по квалификации, где это количество > 3.

4. UNION
для объединения результатов двух и более операторов SELECT :

5. EXISTS для проверки наличия любой записи выполняется подзапрос, в зависимости от результата которого возвращается true или false:

Функции

1. COUNT() для возвращения числа выражения, с условиями или без них:

2. SUM() для возвращения общего значения по заданному набору значений:

3. AVG() для получения среднего значения по заданному набору значений:

4. MIN() для нахождения минимального значения по заданному набору значений:

5. MAX() для нахождения максимального значения по заданному набору значений:

Заключение

Мы изучили основные команды и операторы SQL — базовые строительные блоки MySQL, применяемые в запросах к базе данных, а иногда и самостоятельно.

SQL Operators: 6 Different Types (w/ 45 Code Examples)

This article will cover what SQL operators are, the various types of operators, and many different code examples of how they’re used.

As with any new skill, people prefer to learn in different ways. If learning by reading blog articles isn’t your cup of tea, you may enjor our interactive SQL courses. Try them for free here.

What are SQL operators?

A SQL operator is a special word or character used to perform tasks. These tasks can be anything from complex comparisons to basic arithmetic operations. Think of an operator in SQL like the different buttons on a calculator function.

There are six types of SQL operators that we are going to cover: Arithmetic, Bitwise, Comparison, Compound, Logical and String.

Arithmetic operators

Arithmetic operators are used for mathematical operations on numerical data, such as adding or subtracting.

+ (Addition)

The + symbol adds two numbers together.

— (Subtraction)

The — symbol subtracts one number from another.

* (Multiplication)

The * symbol multiples two numbers together.

/ (Division)

The / symbol divides one number by another.

% (Remainder/Modulus)

The % symbol (sometimes referred to as Modulus) returns the remainder of one number divided by another.

Bitwise operators

A bitwise operator performs bit manipulation between two expressions of the integer data type. Bitwise operators convert the integers into binary bits and then perform the AND (& symbol), OR (|, ^) or NOT (

) operation on each individual bit, before finally converting the binary result back into an integer.

Just a quick reminder: a binary number in computing is a number made up of 0s and 1s.

& (Bitwise AND)

The & symbol (Bitwise AND) compares each individual bit in a value with its corresponding bit in the other value. In the following example, we are using just single bits. Because the value of @BitOne is different to @BitTwo, a 0 is returned.

But what if we make the value of both the same? In this instance, it would return a 1.

Obviously this is just for variables that are type BIT. What would happen if we started using numbers instead? Take the example below:

The answer returned here would be 194.

You might be thinking, “How on earth is it 194?!” and that’s perfectly understandable. To explain why, we first need to convert the two numbers into their binary form:

Now, we have to go through each bit and compare (so the 1st bit in @BitOne and the 1st bit in @BitTwo). If both numbers are 1, we record a 1. If one or both are 0, then we record a 0:

The binary we are left with is 11000000, which if you google is equal to a numeric value of 194.

Confused yet? Don’t worry! Bitwise operators can be confusing to understand, but they’re rarely used in practice.

&= (Bitwise AND Assignment)

The &= symbol (Bitwise AND Assignment) does the same as the Bitwise AND (&) operator but then sets the value of a variable to the result that is returned.

| (Bitwise OR)

The | symbol (Bitwise OR) performs a bitwise logical OR operation between two values. Let’s revisit our example from before:

In this instance, we have to go through each bit again and compare, but this time if EITHER number is a 1, then we record a 1. If both are 0, then we record a 0:

The binary we are left with is 11110110, which equals a numeric value of 246.

|= (Bitwise OR Assignment)

The |= symbol (Bitwise OR Assignment) does the same as the Bitwise OR (|) operator but then sets the value of a variable to the result that is returned.

^ (Bitwise exclusive OR)

The ^ symbol (Bitwise exclusive OR) performs a bitwise logical OR operation between two values.

In this example, we compare each bit and return 1 if one, but NOT both bits are equal to 1.

The binary we are left with is 00110100, which equals a numeric value of 34.

^= (Bitwise exclusive OR Assignment)

The ^= symbol (Bitwise exclusive OR Assignment) does the same as the Bitwise exclusive OR (^) operator but then sets the value of a variable to the result that is returned.

Comparison operators

A comparison operator is used to compare two values and test whether they are the same.

= (Equal to)

The = symbol is used to filter results that equal a certain value. In the below example, this query will return all customers that have an age of 20.

!= (Not equal to)

The != symbol is used to filter results that do not equal a certain value. In the below example, this query will return all customers that don’t have an age of 20.

> (Greater than)

The > symbol is used to filter results where a column’s value is greater than the queried value. In the below example, this query will return all customers that have an age above 20.

!> (Not greater than)

The !> symbol is used to filter results where a column’s value is not greater than the queried value. In the below example, this query will return all customers that do not have an age above 20.

< (Less than)

The < symbol is used to filter results where a column’s value is less than the queried value. In the below example, this query will return all customers that have an age below 20.

!< (Not less than)

The !< symbol is used to filter results where a column’s value is not less than the queried value. In the below example, this query will return all customers that do not have an age below 20.

>= (Greater than or equal to)

The >= symbol is used to filter results where a column’s value is greater than or equal to the queried value. In the below example, this query will return all customers that have an age equal to or above 20.

<= (Less than or equal to)

The <= symbol is used to filter results where a column’s value is less than or equal to the queried value. In the below example, this query will return all customers that have an age equal to or below 20.

<> (Not equal to)

The <> symbol performs the exact same operation as the != symbol and is used to filter results that do not equal a certain value. You can use either, but <> is the SQL-92 standard.

Compound operators

Compound operators perform an operation on a variable and then set the result of the variable to the result of the operation. Think of it as doing a = a (+,-,*,etc) b.

+= (Add equals)

The += operator will add a value to the original value and store the result in the original value. The below example sets a value of 10, then adds 5 to the value and prints the result (15).

This can also be used on strings. The below example will concatenate two strings together and print “dataquest”.

-= (Subtract equals)

The -= operator will subtract a value from the original value and store the result in the original value. The below example sets a value of 10, then subtracts 5 from the value and prints the result (5).

*= (Multiply equals)

The *= operator will multiple a value by the original value and store the result in the original value. The below example sets a value of 10, then multiplies it by 5 and prints the result (50).

/= (Divide equals)

The /= operator will divide a value by the original value and store the result in the original value. The below example sets a value of 10, then divides it by 5 and prints the result (2).

%= (Modulo equals)

The %= operator will divide a value by the original value and store the remainder in the original value. The below example sets a value of 25, then divides by 5 and prints the result (0).

Logical operators

Logical operators are those that return true or false, such as the AND operator, which returns true when both expressions are met.

The ALL operator returns TRUE if all of the subquery values meet the specified condition. In the below example, we are filtering all users who have an age that is greater than the highest age of users in London.

ANY/SOME

The ANY operator returns TRUE if any of the subquery values meet the specified condition. In the below example, we are filtering all products which have any record in the orders table. The SOME operator achieves the same result.

The AND operator returns TRUE if all of the conditions separated by AND are true. In the below example, we are filtering users that have an age of 20 and a location of London.

BETWEEN

The BETWEEN operator filters your query to only return results that fit a specified range.

EXISTS

The EXISTS operator is used to filter data by looking for the presence of any record in a subquery.

The IN operator includes multiple values set into the WHERE clause.

The LIKE operator searches for a specified pattern in a column. (For more information on how/why the % is used here, see the section on the wildcard character operator).

The NOT operator returns results if the condition or conditions are not true.

The OR operator returns TRUE if any of the conditions separated by OR are true.In the below example, we are filtering users that have an age of 20 or a location of London.

IS NULL

The IS NULL operator is used to filter results with a value of NULL.

String operators

String operators are primarily used for string concatenation (combining two or more strings together) and string pattern matching.

+ (String concatenation)

The + operator can be used to combine two or more strings together. The below example would output ‘dataquest’.

+= (String concatenation assignment)

The += is used to combine two or more strings and store the result in the original variable. The below example sets a variable of ‘data’, then adds ‘quest’ to it, giving the original variable a value of ‘dataquest’.

% (Wildcard)

The % symbol — sometimes referred to as the wildcard character — is used to match any string of zero or more characters. The wildcard can be used as either a prefix or a suffix. In the below example, the query would return any user with a first name that starts with ‘dan’.

[] (Character(s) matches)

The [] is used to match any character within the specific range or set that is specified between the square brackets. In the below example, we are searching for any users that have a first name that begins with a d and a second character that is somewhere in the range c to r.

[^] (Character(s) not to match)

The [^] is used to match any character that is not within the specific range or set that is specified between the square brackets. In the below example, we are searching for any users that have a first name that begins with a d and a second character that is not a.

_ (Wildcard match one character)

The _ symbol — sometimes referred to as the underscore character — is used to match any single character in a string comparison operation. In the below example, we are searching for any users that have a first that begins with a d and has a third character that is n. The second character can be any letter.

More helpful SQL resources:

  • SQL Commands Reference List
  • SQL Cheat Sheet (Downloadable PDF)
  • SQL Interview Questions to Practice With
  • Do You Need a SQL Certification?

Or, try the best SQL learning resource of all: interactive SQL courses you can take right in your browser. Sign up for a FREE account and start learning!

About the author

Daniel Clark

Daniel Clark is a data visualization journalist at the Times of London. In his free time, he enjoys running and watching football.

Шпаргалки по SQL: сохранить и не забыть

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

Ключевые слова

Это перечень ключевых слов в SQL с описаниями и примерами использования. Зарезервированные ключевые слова используются для определения и манипулирования данными.

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

Ключевые слова

Комментарии

Однострочные комментарии в SQL начинаются с двух тире — и продолжаются до конца строки:

Многострочные комментарии в SQL напоминают комментирование в Java. Они начинаются со слеша и звёздочки /* и заканчиваются звёздочкой со слешем */ :

Примечание Синтаксис комментариев зависит от системы, к которой выполняется запрос.

Операторы

Чтобы не путаться, разобьём в этой шпаргалке операторы SQL по разным столбцам в соответствии с их типом:

Операторы

Джойны

JOIN используется для связи двух или более таблиц с помощью общих атрибутов внутри них. Соединение таблиц может быть внутренним ( INNER ) или внешним ( OUTER ), причём внешнее соединение может быть левым ( LEFT ), правым ( RIGHT ) или полным ( FULL ).

  • INNER JOIN — получение записей с одинаковыми значениями в обеих таблицах, т.е. получение пересечения таблиц.
  • FULL OUTER JOIN — объединяет записи из обеих таблиц (если условие объединения равно true ) и дополняет их всеми записями из обеих таблиц, которые не имеют совпадений. Для записей, которые не имеют совпадений из другой таблицы, недостающее поле будет иметь значение NULL .
  • LEFT JOIN — возвращает все записи, удовлетворяющие условию объединения, плюс все оставшиеся записи из внешней (левой) таблицы, которые не удовлетворяют условию объединения.
  • RIGHT JOIN — работает точно так же, как и левое объединение, только в качестве внешней таблицы будет использоваться правая.

Держите понятную иллюстрацию вышеизложенного:

Джойны в SQL

Пример: следующий запрос выберет все заказы из таблицы orders с информацией о клиенте из таблицы customers :

Другие шпаргалки по SQL

Следующая шпаргалка очень пригодится, потому как включает также агрегатные и строковые функции. Всё это с доступными примерами:

Шпаргалка по SQL со строковыми и агрегатными функциями

Ещё одна удобная шпаргалка по SQL с типами данных и командами, объединёнными по общим признакам. Есть примеры использования:

Шпаргалка по SQL с типами данных

Также рекомендуем ознакомиться с основными командами SQL, которые должен знать каждый программист.

Топ вопросы по SQL

Реляционные базы данных являются одними из наиболее часто используемых баз данных по сей день, и поэтому навыки работы с SQL для большинства должностей являются обязательными. В этой статье с вопросами по SQL с собеседований я познакомлю вас с наиболее часто задаваемыми вопросами по SQL (Structured Query Language — язык структурированных запросов). Эта статья является идеальным руководством для изучения всех концепций, связанных с SQL, Oracle, MS SQL Server и базой данных MySQL.

Что подразумевается под СУБД? Какие существуют типы СУБД?

База данных — структурированная коллекция данных. Система управления базами данных (СУБД) — программное обеспечение, которое взаимодействует с пользователем, приложениями и самой базой данных для сбора и анализа данных. СУБД позволяет пользователю взаимодействовать с базой данных. Данные, хранящиеся в базе данных, могут быть изменены, извлечены и удалены. Они могут быть любых типов, таких как строки, числа, изображения и т. д.

Существует два типа СУБД:

  • Реляционная система управления базами данных: данные хранятся в отношениях (таблицах). Пример — MySQL.
  • Нереляционная система управления базами данных: не существует понятия отношений, кортежей и атрибутов. Пример — MongoDB.

Из каких подмножеств состоит SQL?

Data Definition Language, DDL (Операторы определения данных)

DDL — это часть SQL, которая служит для определения структуры данных в начальном состоянии, когда база данных только создается. Операторы определения данных используются, главным образом, для создания и реструктуризации объектов базы данных. К этим операторам относятся CREATE, ALTER и DROP.

CREATE служит для создания объектов базы данных, ALTER — для их изменения, DROP — для удаления.

Data Manipulation Language, DML (Операторы манипуляции данными)

DML используется для работы с уже существующими данными, содержащимися в базе данных. С помощью этих операторов пользователи могут получать данные из базы и совершать над ними какие-то манипуляции. К этим операторам относятся SELECT, INSERT, UPDATE, DELETE.

Оператор INSERT позволяет вносить данные в базу данных, SELECT — выбирать их, UPDATE — обновлять их, DELETE — удалять данные из базы.

Data Control Language, DCL (Операторы определения доступа к данным)

DCL используется для контроля доступа к данным в базе данных. Команды DCL обычно служат для создания объектов, имеющих отношение к доступу пользователей к базе, а также к распределению разрешений между пользователями. Для этих операций используются операторы GRANT и REVOKE. Первый служит для выдачи разрешений, а второй — для их отзыва.

Transaction Control Language, TCL (Операторы управления транзакциями)

TCL используется для контроля изменений, осуществленных при помощи DML. Также с помощью TCL происходит объединение операторов в логические транзакции. К операторам управления транзакциями относятся COMMIT, ROLLBACK, SAVEPOINT, BEGIN, TRANSACTION.

В чем разница между операторами DELETE и TRUNCATE?

  • Используется для удаления строки в таблице;
  • Вы можете восстановить данные после удаления;
  • DML-команда;
  • Медленнее, чем оператор TRUNCATE;
  • Используется для удаления всех строк из таблицы;
  • Вы не можете восстановить данные (операции логируются по разному, но в SQL Server есть возможность сделать откат);
  • DDL-команда;
  • Быстрее;

Что такое соединения в SQL?

Для соединения строк из двух или более таблиц на основе связанного между ними столбца используется оператор JOIN. Он используется для объединения двух таблиц или получения данных оттуда. В SQL есть 4 типа соединения, а именно:

  • Inner Join (Внутреннее соединение). В MySQL является наиболее распространенным типом. Оно используется для возврата всех строк из нескольких таблиц, для которых выполняется условие соединения.
  • Right Join (Правое соединение). В MySQL используется для возврата всех строк из правой (второй) таблицы и только совпадающих строк из левой (первой) таблицы, для которых выполняется условие соединения.
  • Left Join (Левое соединение). В MySQL используется для возврата всех строк из левой (первой) таблицы и только совпадающих строк из правой (второй) таблицы, для которых выполняется условие соединения.
  • Full Join (Полное соединение). Возвращает все записи, для которых есть совпадение в любой из таблиц. Следовательно, он возвращает все строки из левой таблицы и все строки из правой таблицы.

В чем разница между типом данных CHAR и VARCHAR в SQL?

И Char, и Varchar служат символьными типами данных, но varchar используется для строк символов переменной длины, тогда как Char используется для строк фиксированной длины. Например, char(10) может хранить только 10 символов и не сможет хранить строку любой другой длины, тогда как varchar(10) может хранить строку любой длины до 10, т.е. например 6, 8 или 2.

Что такое первичный ключ (PRIMARY KEY)?

  • Первичный ключ — столбец или набор столбцов, которые однозначно идентифицируют каждую строку в таблице.
  • Однозначно идентифицирует одну строку в таблице.
  • Нулевые (Null) значения не допускаются.

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

Что такое ограничения (Constraints)?

SQL-ограничения (constraints) указываются при создании или изменении таблицы. Это правила для ограничения типа данных, которые могут храниться в таблице. Действие с данными не будет выполнено, если нарушаются установленные ограничения. Пример ограничений:

  • NOT NULL — значение не может быть NULL;
  • CHECK — значения столбца должны соответствовать заданным условиям;
  • DEFAULT — предоставляет столбцу значения по умолчанию;
  • UNIQUE— гарантирует уникальность значений в столбце;

Что такое уникальный ключ (UNIQUE KEY)?

  • Однозначно идентифицирует одну строку в таблице.
  • Допустимо множество уникальных ключей в одной таблице.
  • Допустимы NULL-значения.

Что такое внешний ключ (FOREIGN KEY)?

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

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

Что подразумевается под целостностью данных?

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

В чем разница между кластеризованным и некластеризованным индексами в SQL?

  • Кластерный индекс используется для простого и быстрого извлечения данных из базы данных, тогда как чтение из некластеризованного индекса происходит относительно медленнее.
  • Кластеризованный индекс изменяет способ хранения записей в базе данных — он сортирует строки по столбцу, который установлен как кластеризованный индекс, тогда как в некластеризованном индексе он не меняет способ хранения, но создает отдельный объект внутри таблицы, который указывает на исходные строки таблицы при поиске.
  • Одна таблица может иметь только один кластеризованный индекс, тогда как некластеризованных у нее может быть много.

Напишите SQL-запрос для отображения текущей даты.

В SQL есть встроенная функция GetDate(), которая помогает возвращать текущий timestamp/дату.

Что вы подразумеваете под денормализацией?

Денормализация — техника, которая используется для преобразования из высших к низшим нормальным формам. Она помогает разработчикам баз данных повысить производительность всей инфраструктуры, поскольку вносит избыточность в таблицу. Она добавляет избыточные данные в таблицу, учитывая частые запросы к базе данных, которые объединяют данные из разных таблиц в одну таблицу.

Что такое сущности и отношения?

Сущности: человек, место или объект в реальном мире, данные о которых могут храниться в базе данных. В таблицах хранятся данные, которые представляют один тип сущности. Например — база данных банка имеет таблицу клиентов для хранения информации о клиентах. Таблица клиентов хранит эту информацию в виде набора атрибутов (столбцы в таблице) для каждого клиента.

Отношения: отношения или связи между сущностями, которые имеют какое-то отношение друг к другу. Например — имя клиента связано с номером учетной записи клиента и контактной информацией, которая может быть в той же таблице. Также могут быть отношения между отдельными таблицами (например, клиент к счетам).

Что такое индекс?

Индексы помогают ускорить поиск в базе данных. Если в выражении WHERE не задан индекс никакого столбца, SQL-сервер в поиске соответствия будет проверять каждую строку во всей таблице. Если у вас много данных, эта операция может оказаться довольно медленной.

Индексы используются для поиска всех строк, совпадающих по каким-то столбцам, а затем уже в этих выборках ведется поиск нужных данных.

Опишите различные типы индексов.

Простые индексы. Создаются только для одного столбца таблицы.

Составные индексы. Создаются для двух или большего количества столбцов таблицы.

Уникальные индексы. Используются для поддержания целостности данных таблицы. Они не дают вставлять в таблицу несколько значений.

Что такое нормализация и каковы ее преимущества?

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

  • Лучшая организация базы данных;
  • Больше таблиц с небольшими строками;
  • Эффективный доступ к данным;
  • Большая гибкость для запросов;
  • Быстрый поиск информации;
  • Проще реализовать безопасность данных;
  • Позволяет легко модифицировать;
  • Сокращение избыточных и дублирующихся данных;
  • Более компактная база данных;
  • Обеспечивает согласованность данных после внесения изменений;

Объясните различные типы нормализации.

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

  • Первая нормальная форма (1NF) — нет повторяющихся групп в строках;
  • Вторая нормальная форма (2NF) — каждое неключевое (поддерживающее) значение столбца зависит от всего первичного ключа;
  • Третья нормальная форма (3NF) — каждое неключевое значение зависит только от первичного ключа и не имеет зависимости от другого неключевого значения столбца;

В чем разница между командами DROP и TRUNCATE?

Команда DROP удаляет саму таблицу, и нельзя сделать Rollback команды, тогда как команда TRUNCATE удаляет все строки из таблицы.

Что такое свойство ACID в базе данных?

ACID означает атомарность (Atomicity), согласованность (Consistency), изолированность (Isolation), долговечность (Durability). Он используется для обеспечения надежной обработки транзакций данных в системе базы данных.

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

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

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

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

Что вы подразумеваете под «триггером» в SQL?

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

Какие операторы доступны в SQL?

В SQL доступно три типа оператора, а именно:

  • Арифметические операторы;
  • Логические операторы;
  • Операторы сравнения;

Совпадают ли значения NULL со значениями нуля или пробела?

Значение NULL вовсе не равно нулю или пробелу. Значение NULL представляет значение, которое недоступно, неизвестно, присвоено или неприменимо, тогда как ноль — это число, а пробел — символ.

В чем разница между перекрестным (Cross Join) и естественным (Natural Join) соединением?

Перекрестное соединение создает перекрестное или декартово произведение двух таблиц, тогда как естественное соединение основано на всех столбцах, имеющих одинаковое имя и типы данных в обеих таблицах.

Что такое подзапрос в SQL?

Подзапрос — это запрос внутри другого запроса, в котором определен запрос для извлечения данных или информации из базы данных. В подзапросе внешний запрос называется основным запросом, тогда как внутренний запрос называется подзапросом. Подзапросы всегда выполняются первыми, а результат подзапроса передается в основной запрос. Он может быть вложен в SELECT, UPDATE или любой другой запрос. Подзапрос также может использовать любые операторы сравнения, такие как >, < или =.

Какие бывают типы подзапросов?

Существует два типа подзапросов, а именно: коррелированные и некоррелированные.

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

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

Для подсчета количества записей в таблице вы можете использовать следующие команды:

Поясните, в чем разница между выражениями HAVING и WHERE?

  • Реализовано в строковых операциях;
  • Относится к отдельной строке;
  • Используется для выборки конкретных данных из определенных строк, согласно заданным условиям;
  • Не может содержать агрегатные функции;
  • Может использоваться с SELECT, UPDATE и DELETE;
  • Выражение GROUP BY идет после выражения WHERE;
  • Реализовано в столбцовых операциях;
  • Относится к суммированной строке или группам;
  • Используется для выборки всех данных и отделения тех из них, которые соответствуют заданным условиям;
  • Может содержать агрегатные функции;
  • Не может использоваться без оператора SELECT;
  • Выражение GROUP BY идет перед выражением HAVING;

Как бы вы нашли вторую по величине зарплату?

Расскажите, чем отличаются SQL и PL/SQL?

  • SQL это структурированный язык запросов к базам данных.
  • SQL это отдельный запрос, который используется для выполнения команд DML и DDL.
  • SQL это декларативный язык, ориентированный на данные.
  • Используется главным образом для манипуляций с данными.
  • Предоставляет возможность взаимодействия с сервером базы данных.
  • Не может содержать в себе код PL/SQL.
  • Это язык программирования для баз данных, использующий SQL.
  • PL/SQL это блок кодов, используемый для написания всей процедуры или функции.
  • PL/SQL это процедурный язык, ориентированный на приложение.
  • Используется для создания приложения.
  • Не предоставляет возможности взаимодействия с сервером базы данных.
  • Может содержать SQL, поскольку сам является расширением SQL.

Как вы понимаете символьные функции?

Символьные функции используются для манипуляций с символами. К ним относятся:

UPPER

Возвращает строку в верхнем регистре. Синтаксис:

LOWER

Возвращает строку в нижнем регистре. Синтаксис:

CONCAT

Используется для конкатениции (объединения) двух строк. Синтаксис:

LENGTH

Используется для получения длины строки. Синтаксис:

Что такое AUTO_INCREMENT?

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

По умолчанию значение AUTO_INCREMENT начинается с 1 и увеличивается на 1 при каждом добавлении новой записи.

Для чего используется ключевое слово ORDER BY?

Для сортировки данных в порядке возрастания (ASC) или убывания (DESC). Пример использования:

Выбираются пользователи, которые будут отсортированы по имени в порядке убывания. Дополните ответ на этот вопрос по SQL тем, что без указания DESC данные были бы отсортированы по умолчанию — в порядке возрастания:

Для чего нужен оператор UNION?

Он используется для объединения полученных данных из двух или более запросов, которые должны иметь одинаковое количество столбцов с одинаковыми типами данных и расположенных в том же порядке. Пример использования:

Как работают подстановочные знаки?

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

Какими бывают подстановочные знаки?

  • % — заменить ноль или более символов;
  • _ — заменить один символ.

Данный запрос позволяет найти данные всех пользователей, имена которых содержат в себе «test».

А в этом случае имена искомых пользователей начинаются на «t», после содержат какой-либо символ и «est» в конце.

Что делают псевдонимы Aliases?

SQL-псевдонимы нужны для того, чтобы дать временное имя таблице или столбцу. Это нужно, когда в запросе есть таблицы или столбцы с неоднозначными именами. В этом случае для удобства в составлении запроса используются псевдонимы. SQL-псевдоним существует только на время запроса. Пример:

Для чего нужен оператор INSERT INTO SELECT?

Данный оператор копирует данные из одной таблицы и вставляет их в другую, при этом типы данных в обеих таблицах должны соответствовать. Пример использования:

Как выбрать записи с нечётными id?

SQL запрос для выбора записей с нечётными id должен выглядеть следующим образом:

Если остаток от деления id на 2 равен нулю, перед нами чётное значение, и наоборот.

Как найти дубли в поле email?

Функция COUNT() возвращает количество строк из поля email. Оператор HAVING работает почти так же, как и WHERE, вот только применяется не для всех столбцов, а для набора, созданного оператором GROUP BY.

При выборке из таблицы прибавьте к дате 1 день.

Функция DATE_ADD() прибавляет к дате заданный промежуток времени. Синтаксис выглядит следующим образом:

Выберите только уникальные имена.

SELECT DISTINCT возвращает разные значения, даже если в выбранном столбце есть дубли.

Найдите в таблице среднюю зарплату работников.

Функция AVG() применяется только к числовым типам данных и возвращает среднее значение по столбцу.

А теперь получите список сотрудников с зарплатой выше средней.

Даны таблицы workers и departments. Найдите все департаменты без единого сотрудника.

Замените в таблице зарплату работника на 1000, если она равна 900, и на 1500 в остальных случаях.

Замена значений — одна из наиболее часто встречаемых задач по SQL. Решить её не сложно:

Оператор UPDATE используется для изменения существующих записей. Но ответы на подобные вопросы с собеседований по SQL должны быть более развёрнутыми. Уточните, что после UPDATE следует указать, какие записи должны быть обновлены. В противном случае обновятся все записи в таблице.

В нашем примере условие задаётся через оператор CASE: если текущая зарплата равна 900, изменяем её на 1000, в остальных случаях — на 1500.

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

Функция CONCAT() используется для конкатенации (объединения) строк, неявно преобразуя при этом любые типы данных в строки.

Переименуйте таблицу.

ALTER TABLE first_table RENAME second_table;

С помощью оператора ALTER TABLE можно добавлять, удалять, изменять столбцы, а также изменять название таблицы.

Что вернет условие 2 <> NULL?

Сравнение с NULL — это, наверное, первый подводный камень, на который натыкаются люди при работе с базой данных. Вопреки привычной логике условие:

возвращает ложь (FALSE), как впрочем и условие:

Дело здесь в том, что тип значения NULL в SQL имеет несколько другой оттенок значения, чем в прикладных языках программирования. Если в С-подобных языках NULL значит отсутствие какого-то значения, то в SQL он значит лишь то, что мы не знаем этого значения. По этой причине любое сравнение с NULL возвращает ложь.

Возвращаясь к сути вопроса, мы не можем сказать «Два не равно NULL» потому, что мы не знаем значения справа от знака неравенства, а там как раз может оказаться двойка.

Что вернет условие 3 NOT IN (1, 2, NULL)?

Здесь та же история, что и в предыдущем случае. Условие:

возвращает ложь (FALSE), как и условие:

Причина этого заключается в особенностях работы оператора IN. Проверяя, что определенное значение входит в коллекцию, оператор IN просто сравнивает это значение с каждым элементом коллекции.

это то же самое, что и

В случае с NOT IN условие:

это то же самое, что и

Как мы знаем из предыдущего примера, 3 <> NULL возвращает ложь, а значит и все условие:

тоже будет ложным.

Почему не выполнится этот запрос?

Запрос не выполнится из-за обращения к псевдониму year_of_birth в выражении WHERE. Дело в том, что псевдонимы полей в SQL используются для форматирования данных уже полученных из базы. Поэтому их можно использовать только в выражениях, которые отвечают за оформление результата, таких как GROUP BY, ORDER BY и HAVING. В выражениях, отвечающих за получение данных, таких как WHERE, нужно использовать оригинальные имена полей.

Имеет ли значение порядок колонок в составном индексе?

это не то же самое, что

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *