Пример — использование IS NOT NULL с оператором DELETE
Далее давайте рассмотрим пример использования условия IS NULL в запросе DELETE.
В этом примере у нас есть таблица orders и следующими данными:
order_id | customer_id | order_date |
---|---|---|
1 | 7000 | 2019/06/18 |
2 | 5000 | 2019/06/18 |
3 | 8000 | 2019/06/19 |
4 | 4000 | 2019/06/20 |
5 | NULL | 2019/07/01 |
Введите следующий запрос DELETE:
PgSQL
DELETE FROM orders
WHERE customer_id IS NOT NULL;
1 2 |
DELETEFROMorders WHEREcustomer_idISNOT NULL; |
Будет удалено 4 записи. Снова выберите данные из таблицы orders:
PgSQL
SELECT *
FROM orders;
1 2 |
SELECT* FROMorders; |
Вот результаты, которые вы получите:
order_id | customer_id | order_date |
---|---|---|
5 | NULL | 2019/07/01 |
В этом примере будут удалены все записи из таблицы orders, где customer_id не содержит значения NULL.
Решения
MySQL
MySQL функция IFNULL() позволяет возвращать альтернативное значение, если выражение равно нулю:
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
или мы можем использовать функцию COALESCE(), например:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
SQL Server
SQL Server функция ISNULL() позволяет возвращать альтернативное значение, если выражение равно нулю:
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
MS Access
MS Access функция IsNull() возвращает TRUE (-1), если выражение имеет нулевое значение, в противном случае FALSE (0):
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Oracle
Oracle функция NVL() достигает того же результата:
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
Преимущества и недостатки
Преимущества
- Независимость от конкретной СУБД
Несмотря на наличие диалектов и различий в синтаксисе, в большинстве своём тексты SQL-запросов, содержащие DDL и DML, могут быть достаточно легко перенесены из одной СУБД в другую. Существуют системы, разработчики которых изначально ориентировались на применение по меньшей мере нескольких СУБД (например: система электронного документооборота Documentum может работать как с Oracle Database, так и с Microsoft SQL Server и DB2). Естественно, что при применении некоторых специфичных для реализации возможностей такой переносимости добиться уже очень трудно.
- Наличие стандартов
Наличие стандартов и набора тестов для выявления совместимости и соответствия конкретной реализации SQL общепринятому стандарту только способствует «стабилизации» языка
Правда, стоит обратить внимание, что сам по себе стандарт местами чересчур формализован и раздут в размерах (например, базовая часть стандарта SQL:2003 состоит из более чем 1300 страниц текста).
- Декларативность
С помощью SQL программист описывает только то, какие данные нужно извлечь или модифицировать. То, каким образом это сделать, решает СУБД непосредственно при обработке SQL-запроса. Однако не стоит думать, что это полностью универсальный принцип — программист описывает набор данных для выборки или модификации, однако ему при этом полезно представлять, как СУБД будет разбирать текст его запроса. Чем сложнее сконструирован запрос, тем больше он допускает вариантов написания, различных по скорости выполнения, но одинаковых по итоговому набору данных.
Недостатки
- Несоответствие реляционной модели данных
Создатели реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они указывают на следующие дефекты SQL с точки зрения реляционной теории:
- SQL разрешает в таблицах строки-дубликаты, что в рамках реляционной модели данных невозможно и недопустимо;
- SQL поддерживает неопределённые значения (NULL) и многозначную логику;
- SQL использует порядок колонок и ссылки на колонки по номерам;
- SQL разрешает колонки без имени и дублирующиеся имена колонок.
В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем манифесте они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.
- Сложность
Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.
- Отступления от стандартов
Несмотря на наличие международного стандарта ANSI SQL-92, многие разработчики СУБД вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.
- Сложность работы с иерархическими структурами
Ранее диалекты SQL большинства СУБД не предлагали способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения (например, в Oracle Database используется выражение CONNECT BY). В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В Microsoft SQL Server рекурсивные запросы (Recursive Common Table Expressions) появились лишь в версии 2005.
Символьные функции в языке sql
Начнем по порядку с самого простого. Первой рассмотрим строковую функцию ASCII, которая используется для определения ASCII-кода текстовых символов:
integer ASCII(str string)
Функция возвращает целое значение — ASCII-код первого левого символа строки str. В случае если строка str пустая возвращает 0 и NULL если строка str не существует.
Пример:
SELECT ASCII (‘t’);
Результат: 116
SELECT ASCII (‘test’);
Результат: 116
SELECT ASCII (1);
Результат: 49
Далее функция ORD, которая также определяет ASCII- код символов, но может обрабатывать также многобайтовые символы:
integer ORD(str string)
Если первый левый символ строки str многобайтовый, то возвращает его код в формате: ((первый байт ASCII- код)*256+(второй байт ASCII -код)). В случае если первый левый символ строки str не является многобайтовым, работает как функция ASCII — возвращает его ASCII-код.
Пример:
SELECT ORD (‘test’);
Результат: 116
Функция CHAR, тесно связанная с функцией ASCII и выполняет обратное действие:
string CHAR(int integer, …)
Функция CHAR возвращает строку символов по их ASCII-кодам. Если среди значений встречается значение NULL, то оно пропускается.
Пример:
SELECT CHAR ( 116, ‘101’, 115, ‘116’ );
Результат: ‘test’
SQL ISNULL function Examples
Simple String Evaluation example
In above query we used SQL ISNULL function to check given first argument expression is NULL or not, it starts evolution from first argument which is NULL so it checks for second argument that is a string ‘Hello’ so it will return ‘Hello’ as a replacement Value
Advertisement
OUTPUT:
SQL ISNULL function example with Integer arguments
In successive query also we apply SQL ISNULL function to check for NULLABLE value in first parameter which is NULL so it will return second parameter integer value of 100 as result
OUTPUT:
SQL ISNULL function example with NULL as Second Argument
In Previous query SQL ISNULL function is used to test NULL value in first argument, Having NULL value as second argument do not affect result, it will return value of first argument as ‘SQL functions’
OUTPUT:
SQL ISNULL function examples with column name as argument
Consider school database with two tables for examples of SQL ISNULL function
Advertisement
Result Table
Use SQL ISNULL function to check city column values for all students, if it is NULL than replace it with ‘Surat’
In above SQL query checks city column value using ISNULL function for NULL, and replace it with Surat.
OUTPUT:
MySQL Date Functions
Function | Description |
---|---|
ADDDATE | Adds a time/date interval to a date and then returns the date |
ADDTIME | Adds a time interval to a time/datetime and then returns the time/datetime |
CURDATE | Returns the current date |
CURRENT_DATE | Returns the current date |
CURRENT_TIME | Returns the current time |
CURRENT_TIMESTAMP | Returns the current date and time |
CURTIME | Returns the current time |
DATE | Extracts the date part from a datetime expression |
DATEDIFF | Returns the number of days between two date values |
DATE_ADD | Adds a time/date interval to a date and then returns the date |
DATE_FORMAT | Formats a date |
DATE_SUB | Subtracts a time/date interval from a date and then returns the date |
DAY | Returns the day of the month for a given date |
DAYNAME | Returns the weekday name for a given date |
DAYOFMONTH | Returns the day of the month for a given date |
DAYOFWEEK | Returns the weekday index for a given date |
DAYOFYEAR | Returns the day of the year for a given date |
EXTRACT | Extracts a part from a given date |
FROM_DAYS | Returns a date from a numeric datevalue |
HOUR | Returns the hour part for a given date |
LAST_DAY | Extracts the last day of the month for a given date |
LOCALTIME | Returns the current date and time |
LOCALTIMESTAMP | Returns the current date and time |
MAKEDATE | Creates and returns a date based on a year and a number of days value |
MAKETIME | Creates and returns a time based on an hour, minute, and second value |
MICROSECOND | Returns the microsecond part of a time/datetime |
MINUTE | Returns the minute part of a time/datetime |
MONTH | Returns the month part for a given date |
MONTHNAME | Returns the name of the month for a given date |
NOW | Returns the current date and time |
PERIOD_ADD | Adds a specified number of months to a period |
PERIOD_DIFF | Returns the difference between two periods |
QUARTER | Returns the quarter of the year for a given date value |
SECOND | Returns the seconds part of a time/datetime |
SEC_TO_TIME | Returns a time value based on the specified seconds |
STR_TO_DATE | Returns a date based on a string and a format |
SUBDATE | Subtracts a time/date interval from a date and then returns the date |
SUBTIME | Subtracts a time interval from a datetime and then returns the time/datetime |
SYSDATE | Returns the current date and time |
TIME | Extracts the time part from a given time/datetime |
TIME_FORMAT | Formats a time by a specified format |
TIME_TO_SEC | Converts a time value into seconds |
TIMEDIFF | Returns the difference between two time/datetime expressions |
TIMESTAMP | Returns a datetime value based on a date or datetime value |
TO_DAYS | Returns the number of days between a date and date «0000-00-00» |
WEEK | Returns the week number for a given date |
WEEKDAY | Returns the weekday number for a given date |
WEEKOFYEAR | Returns the week number for a given date |
YEAR | Returns the year part for a given date |
YEARWEEK | Returns the year and week number for a given date |
Создание, запуск и удаление простой процедуры
Для создания простой процедуры в клиенте mysql.exe можно выполнить следующие операторы:
DELIMITER // CREATE PROCEDURE Hello_World() BEGIN SELECT('Hello, world!'); END //
В данном примере первая строка задает последовательность символов, которая будет использоваться в качестве признака завершения ввода. Обычно для этого используется точка с запятой, однако, в приведенном выше примере точка с запятой уже используется в качестве разделителя операторов в теле функции.
Во второй строке следует оператор создания процедуры CREATE PROCEDURE, после которого указывается имя процедуры. Создаваемая процедура не имеет параметров, поэтому скобки после имени процедуры – пустые.
Далее следует конструкция BEGIN .. END, в которую должны быть заключены все операторы процедуры. Операторы разделяются символом точка с запятой.
Для запуска процедуры на выполнение можно использовать команду CALL:
CALL Hello_World;
Для удаления процедуры можно использовать команду DROP PROCEDURE:
DROP PROCEDURE Hello_World;
Функция mysqli connect: соединение с MySQL
Перед началом работы с данными внутри MySQL, нужно открыть соединение с сервером СУБД.
В PHP это делается с помощью стандартной функции . Функция возвращает результат — ресурс соединения. Данный ресурс используется для всех следующих операций с MySQL.
Но чтобы выполнить соединение с сервером, необходимо знать как минимум три параметра:
- Адрес сервера СУБД;
- Логин;
- Пароль.
Если вы следовали стандартной процедуре установки MySQL или используете OpenServer, то адресом сервера будет , логином — . При использовании OpenServer пароль для подключения — это пустая строка ‘’, а при самостоятельной установке MySQL пароль вы задавали в одном из шагов мастера установки.
Базовый синтаксис функции :
Проверка соединения
Первое, что нужно сделать после соединения с СУБД — это выполнить проверку, что оно было успешным.
Эта проверка нужна, чтобы исключить ошибку при подключении к БД. Неверные параметры подключения, неправильная настройка или высокая нагрузка заставит MySQL отвеграть новые подключения. Все эти ситуации приведут к невозможности соединения, поэтому программист должен проверить успешность подключения к серверу, прежде чем выполнять следующие действия.
Соединение с MySQL устанавливается один раз в сценарии, а затем используется при всех запросах к БД.
Результатом выполнения функции будет значение специального типа — ресурс.
Если подключение к MySQL не удалось, то функция вместо ресурса вернет логическое значение типа «ложь» — .
Хорошей практикой будет всегда проверять значение результа выполнения этой функции и сравнивать его с ложью.
Соединение с MySQL и проверка на ошибки:
Функция просто возвращает текстовое описание последней ошибки MySQL.
Установка кодировки
Первым делом после установки соединения крайне желательно явно задать кодировку, которая будет использоваться при обмене данными с MySQL. Если этого не сделать, то вместо записей со значениями, написанными кириллицей, можно получить последовательность из знаков вопроса: ‘?????????????????’.
Вызови эту функцию сразу после успешной установки соединения:
SQL Server ISNULL Function overview
We can replace NULL values with a specific value using the SQL Server ISNULL Function. The syntax for the SQL ISNULL function is as follow.
SQL Server ISNULL (expression, replacement)
- Expression: In this parameter, we specify the expression in which we need to check NULL values
- Replacement: We want to replace the NULL with a specific value. We need to specify replacement value here
The SQL Server ISNULL function returns the replacement value if the first parameter expression evaluates to NULL. SQL Server converts the data type of replacement to data type of expression. Let’s explore SQL ISNULL with examples.
Example 1: SQL Server ISNULL function in an argument
In this example, SQL ISNULL function returns the second argument value because the first argument is NULL:
1 | SELECTISNULL(NULL,100)result; |
In the following examples, we can see the following.
- If the first argument is NULL, it returns the value of the second argument.
- If the first argument is NOT NULL, it returns the first argument value as output.
1 |
SELECTISNULL(NULL,’SQLServer’)result; SELECTISNULL(‘SQLShack’,’SQLServer’)result; |
Example 2: SQL Server ISNULL to replace a value in existing column values
At the beginning of this article, we created the Employee table and inserted NULL values in it. We can use SQL ISNULL to replace existing NULL values with a specific value.
For example, we want to return Employee salary 10,000 if it is NULL in the Employee table. In the following query, we used SQL ISNULL function to replace the value.
1 |
SELECTEmployeeid, ISNULL(EmployeeSalary,10000)EmployeeSalary FROMEmployee; |
Let’s update the NULL value in the Employee table using the following update statement.
1 | UpdateEmployeesetEmployeeSalary=65656whereEmployeeID=2 |
We do not have any NULL value in the table now; therefore if we run the query with SQL Server ISNULL, it returns actual values of the rows.
Example 3: SQL Server ISNULL with aggregate functions
We can use SQL ISNULL with aggregate functions such as SUM, AVG as well. Suppose we want to perform sum of EmployeeSalary present in Employee table. If EmployeeSalary is NULL, it should be replaced with 10000 before adding the salaries.
Before we move, update the EmployeeSalary as NULL for EmployeeID 2 using the following query.
1 | UpdateEmployeesetEmployeeSalary=NULLwhereEmployeeID=2 |
In the following query, we replaced the NULL value with value 10000 first and then performed SUM on it. You can visualize it with the following screenshot.
1 |
SELECTSUM(ISNULL(EmployeeSalary,10000)) FROMEmployee; |
Similarly, we can use SQL ISNULL function to replace NULL values and calculate the average value with AVG() function.
1 |
SELECTAVG(ISNULL(EmployeeSalary,10000)) FROMEmployee; |
Example 4: Difference between SQL Server ISNULL with IS NULL
You might confuse between SQL Server ISNULL and IS NULL. We use IS NULL to identify NULL values in a table.
For example, if we want to identify records in the employee table with NULL values in the Salary column, we can use IS NULL in where clause.
1 |
SELECT* FROMEmployee WHEREEmployeeSalaryISNULL; |
In the following screenshot, we cannot use SQL Server ISNULL to find NULL values. We use it to replace NULL values with a specific value. In the second part, we can see the employee having a NULL salary.
Example 5: SQL Server ISNULL to replace the NULL value with a custom message
Consider the example in which we have NULL values in DeliveryAddressLine2 column. We want to print a message in if the actual values from DeliveryAddressLine2 have NULL values.
1 |
Select , , , ISNULL(,’Address Same as DeliveryAddressLine1′)ASDeliveryAddressLine2, fromcustomers |
You can see the message in DeliveryAddressLine2 column.
Solutions
MySQL
The MySQL IFNULL() function lets you
return an alternative value if an expression is NULL:
SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products;
or we can use the COALESCE() function, like this:
SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products;
SQL Server
The SQL Server ISNULL() function lets
you return an alternative value when an expression is NULL:
SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products;
MS Access
The MS Access IsNull() function returns
TRUE (-1) if the expression is a null value, otherwise FALSE (0):
SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products;
Oracle
The Oracle NVL() function achieves the same result:
SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products;
❮ Previous
Next ❯
Sort in Descending Order With NULL Values First
Using the Comparison Operator:
Similar to the operator, we can rely on the fact that returns when expression is NOT NULL, and otherwise.
Query:
SELECT * FROM user ORDER BY date_login IS NOT NULL, date_login DESC
Using is equivalent to , so either one could be used.
The same query could also be rewritten using like so:
SELECT * FROM user ORDER BY date_login IS NULL DESC, date_login DESC
Expected Result:
+----+--------+------------+ | id | name | date_login | +----+--------+------------+ | 2 | john | NULL | | 1 | NULL | 2017-03-12 | | 4 | zayne | 2017-03-02 | | 3 | david | 2016-12-24 | +----+--------+------------+
Using Function:
Query:
SELECT * FROM user ORDER BY COALESCE(name, 'zz') DESC
By simply sorting the result of the function in descending order, we make sure values appear first and all other values that appear right after are in descending order.
Expected Result:
+----+--------+------------+ | id | name | date_login | +----+--------+------------+ | 1 | NULL | 2017-03-12 | | 4 | zayne | 2017-03-02 | | 2 | john | NULL | | 3 | david | 2016-12-24 | +----+--------+------------+
Introduction
We define the following parameters while designing a table in SQL Server
- Data types for a particular column
- Allow NULL or Not Null values in SQL Server
1 |
CREATETABLEtable_name column1datatype, column2datatype, … |
If we do not provide any value for column allow NULL values, SQL Server assumes NULL as default value.
1 |
CREATETABLEEmployee EmployeeNameVARCHAR(50)NOT NULL, EmployeeSalaryINTNULL ); |
Let’s insert a few records in the Employee table.
1 |
INSERTINTOEmployee
EmployeeSalary
55645 INSERTINTOEmployee(EmployeeName) VALUES(‘Rajendra’); |
View the records in the table, and we can see a NULL value against EmployeeID 2 because we did not insert any value for this column.
We might have a requirement to replace NULL values with a particular value while viewing the records. We do not want to update values in the table. We can do this using SQL ISNULL Function. Let’s explore this in the upcoming section.
Демо база данных
В этом уроке мы будем использовать хорошо известный пример базы данных Northwind.
Ниже приведен выбор из таблицы «Customers»:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
И выбор из таблицы «Orders»:
OrderID | CustomerID | EmployeeID | OrderDate | ShipperID |
---|---|---|---|---|
10308 | 2 | 7 | 1996-09-18 | 3 |
10309 | 37 | 3 | 1996-09-19 | 1 |
10310 | 77 | 8 | 1996-09-20 | 2 |
Функции для работы с текстом
Хранение длинного текста в вашей базе данных влияет и на производительсноть системы и на требования к объему дискового пространства. Таким образом, рекомендуется сжимать длинный текст с помощью функции compress, а для использования — проводить обратное преобразование с помощью функции uncompress.
SELECT LENGTH(COMPRESS(REPEAT('A', 1000000))); -- OUTPUT: ~1000
Как вы видите, 1 миллион символов A ’сжимается в строку размером примерно в 1000 позиций.
REGEXP()
Да! REGEXP доступен в запросах MySQL, в представлении не нуждается.
id |
name |
---|---|
1 |
Samsung Widescreen 1080p |
2 |
Geforce GT 8800 |
3 |
Mini Tv |
4 |
Audio System |
5 |
HTC PRO 2 |
SELECT id FROM table WHERE name REGEXP ''; -- OUTPUT: 1, 2, 5
С помощью запроса, описанного выше выделяются id элементов, которые имеют числа в имени. Хотя пример является очень простым, но можно представить возможности использования REGEXP в запросах..
Оператор OR в MySQL
Оператор (ИЛИ) в MySQL объединяет два логических выражения и возвращает , когда любое из этих условий выполняется.
Ниже показан синтаксис оператора OR:
логическое_выражение_1 OR логическое_выражение_2
И , и являются булевым типом выражения, которое возвращает , или .
В следующей таблице показаны результаты оператора OR при различных комбинациях с , и .
TRUE | FALSE | NULL | |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
Оценка короткого замыкания оператора OR в MySQL
MySQL использует оценку короткого замыкания также и для оператора OR (ИЛИ). Другими словами, MySQL перестает оценивать оставшиеся части оператора, когда он может определить результат.
Давайте рассмотрим следующий пример запроса:
SELECT 1 = 1 OR 1 / 0;
Поскольку выражение всегда возвращает , MySQL не будет оценивать выражение . Если же это произойдет, он выдаст ошибку из-за ошибки деления на ноль.
Приоритет оператора OR в MySQL
Когда вы используете более одного логического оператора в выражении, MySQL всегда оценивает операторы после операторов . Это называется приоритет оператора, который определяет порядок оценки операторов. MySQL сначала оценивает оператор с более высоким приоритетом.
Давайте рассмотрим следующий пример:
SELECT true OR false AND false;
Как это работает:
- Во-первых, MySQL оценивает оператор , поэтому выражение возвращает .
- Во-вторых, MySQL вычисляет оператор , поэтому выражение возвращает .
Чтобы изменить порядок оценки, используйте круглые скобки, например так:
SELECT (true OR false) AND false;
Как это работает:
- Во-первых, MySQL оценивает выражение в скобках и возвращает
- Во-вторых, MySQL оценивает оставшуюся часть оператора, и возвращает .
Примеры использования оператора OR в MySQL
В следующем запросе оператор используется для поиска автомобилей, которые выпускаются или в Германии, или в США:
SELECT cars, country FROM cars WHERE country = 'Germany' OR country = 'USA';
В результате этого запроса вы получите значения базы данных по автомобилях, которые выпускаются либо в Германии, либо в США.
В результате следующего запроса вы получите значения базы данных по автомобилях, которые выпускаются либо в Германии, либо в США, а также имеют цену более 20 тыс. долларов.
SELECT cars, country, carPrice FROM cars WHERE(country = 'Germany' OR country = 'USA') AND carPrice > 20000;
Из сегодняшней практической статьи вы узнали, как использовать операторы и в MySQL, чтобы объединять несколько логических выражений для фильтрации результатов в базе данных.
-
1401
-
54
-
Опубликовано 05/12/2019
-
MySQL, Уроки программирования
Строковые функции
Функция | Описание |
ASCII |
Возвращает числовой код, который представляет конкретный символ |
CHAR_LENGTH |
Возвращает длину указанной строки (в символах) |
CHARACTER_LENGTH |
Возвращает длину указанной строки (в символах) |
CONCAT |
Объединяет два или более выражения вместе |
CONCAT_WS |
Объединяет два или более выражения вместе и добавляет разделитель между ними |
FIELD |
Возвращает позицию значения в списке значений |
FIND_IN_SET |
Возвращает позицию строки в списке строк |
FORMAT |
Форматирует число как формат «#, ###. ##», округляя его до определенного количества знаков после запятой |
INSERT |
Вставляет подстроку в строку в указанной позиции для определенного количества символов |
INSTR |
Возвращает позицию первого вхождения строки в другую строку |
LCASE |
Преобразует строку в нижний регистр |
LEFT |
Извлекает подстроку из строки (начиная слева) |
LENGTH |
Возвращает длину указанной строки (в байтах) |
LOCATE |
Возвращает позицию первого вхождения подстроки в строку |
LOWER |
Преобразует строку в нижний регистр |
LPAD |
Возвращает строку, которая добавлена в левую сторону с указанной строкой до определенной длины |
LTRIM |
Удаляет ведущие пробелы из строки |
MID |
Извлекает подстроку из строки (начиная с любой позиции) |
POSITION |
Возвращает позицию первого вхождения подстроки в строку |
REPEAT |
Повторяет строку определенное количество раз |
REPLACE |
Заменяет все вхождения указанной строки |
REVERSE |
Отменяет строку и возвращает результат |
RIGHT |
Извлекает подстроку из строки (начиная справа) |
RPAD |
Возвращает строку с правой строкой с определенной строкой до определенной длины |
RTRIM |
Удаляет конечные пробелы из строки |
SPACE |
Возвращает строку с заданным количеством пробелов |
STRCMP |
Проверяет, одинаковы ли две строки |
SUBSTR |
Извлекает подстроку из строки (начиная с любой позиции) |
SUBSTRING |
Извлекает подстроку из строки (начиная с любой позиции) |
SUBSTRING_INDEX |
Возвращает подстроку string и перед integer вхождений delimiter |
TRIM |
Удаляет начальные и конечные пробелы из строки |
UCASE |
Преобразует строку в верхний регистр |
UPPER |
Преобразует строку в верхний регистр |
Подведем итоги
Конструкция/Блок | Порядок выполнения | Выполняемая функция |
---|---|---|
SELECT возвращаемые выражения | 4 | Возврат данных полученных запросом |
FROM источник | В нашем случае это пока все строки таблицы | |
WHERE условие выборки из источника | 1 | Отбираются только строки, проходящие по условию |
GROUP BY выражения группировки | 2 | Создание групп по указанному выражению группировки. Расчет агрегированных значений по этим группам, используемых в SELECT либо HAVING блоках |
HAVING фильтр по сгруппированным данным | 3 | Фильтрация, накладываемая на сгруппированные данные |
ORDER BY выражение сортировки результата | 5 | Сортировка данных по указанному выражению |
SalaryAmount |
---|
5000 |
SalaryAmount |
---|
2000 |
2500 |
5000 |