Содержание
- 1 SQL References
- 2 Фильтрация. WHERE
- 3 ПримерыExamples
- 4 RemarksRemarks
- 5 Примеры:Examples:
- 5.1 В.C. Совместное использование DISTINCT и SELECTUsing DISTINCT with SELECT
- 5.2 Г.D. Использование GROUP BYUsing GROUP BY
- 5.3 Д.E. Использование GROUP BY с несколькими группамиUsing GROUP BY with multiple groups
- 5.4 Е.F. Использование GROUP BY и WHEREUsing GROUP BY and WHERE
- 5.5 Ж.G. Использование GROUP BY с выражениемUsing GROUP BY with an expression
- 5.6 З.H. Использование GROUP BY с ORDER BYUsing GROUP BY with ORDER BY
- 5.7 И.I. Использование предложения HAVINGUsing the HAVING clause
- 6 Функции CASE и IIF
- 7 Установка MS SQL Server 2017
- 8 Логический порядок обработки инструкции SELECTLogical Processing Order of the SELECT statement
- 9 SQL Server Math/Numeric Functions
- 10 SQL Server String Functions
- 11 UNION
- 12 РазрешенияPermissions
SQL References
SQL Keywords ADD ADD CONSTRAINT ALTER ALTER COLUMN ALTER TABLE ALL AND ANY AS ASC BACKUP DATABASE BETWEEN CASE CHECK COLUMN CONSTRAINT CREATE CREATE DATABASE CREATE INDEX CREATE OR REPLACE VIEW CREATE TABLE CREATE PROCEDURE CREATE UNIQUE INDEX CREATE VIEW DATABASE DEFAULT DELETE DESC DISTINCT DROP DROP COLUMN DROP CONSTRAINT DROP DATABASE DROP DEFAULT DROP INDEX DROP TABLE DROP VIEW EXEC EXISTS FOREIGN KEY FROM FULL OUTER JOIN GROUP BY HAVING IN INDEX INNER JOIN INSERT INTO INSERT INTO SELECT IS NULL IS NOT NULL JOIN LEFT JOIN LIKE LIMIT NOT NOT NULL OR ORDER BY OUTER JOIN PRIMARY KEY PROCEDURE RIGHT JOIN ROWNUM SELECT SELECT DISTINCT SELECT INTO SELECT TOP SET TABLE TOP TRUNCATE TABLE UNION UNION ALL UNIQUE UPDATE VALUES VIEW WHERE
MySQL Functions String Functions 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 TRIM UCASE UPPER
Numeric Functions ABS ACOS ASIN ATAN ATAN2 AVG CEIL CEILING COS COT COUNT DEGREES DIV EXP FLOOR GREATEST LEAST LN LOG LOG10 LOG2 MAX MIN MOD PI POW POWER RADIANS RAND ROUND SIGN SIN SQRT SUM TAN TRUNCATE
Date Functions ADDDATE ADDTIME CURDATE CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURTIME DATE DATEDIFF DATE_ADD DATE_FORMAT DATE_SUB DAY DAYNAME DAYOFMONTH DAYOFWEEK DAYOFYEAR EXTRACT FROM_DAYS HOUR LAST_DAY LOCALTIME LOCALTIMESTAMP MAKEDATE MAKETIME MICROSECOND MINUTE MONTH MONTHNAME NOW PERIOD_ADD PERIOD_DIFF QUARTER SECOND SEC_TO_TIME STR_TO_DATE SUBDATE SUBTIME SYSDATE TIME TIME_FORMAT TIME_TO_SEC TIMEDIFF TIMESTAMP TO_DAYS WEEK WEEKDAY WEEKOFYEAR YEAR YEARWEEK
Advanced Functions BIN BINARY CASE CAST COALESCE CONNECTION_ID CONV CONVERT CURRENT_USER DATABASE IF IFNULL ISNULL LAST_INSERT_ID NULLIF SESSION_USER SYSTEM_USER USER VERSION
SQL Server Functions String Functions ASCII CHAR CHARINDEX CONCAT Concat with + CONCAT_WS DATALENGTH DIFFERENCE FORMAT LEFT LEN LOWER LTRIM NCHAR PATINDEX QUOTENAME REPLACE REPLICATE REVERSE RIGHT RTRIM SOUNDEX SPACE STR STUFF SUBSTRING TRANSLATE TRIM UNICODE UPPER
Numeric Functions ABS ACOS ASIN ATAN ATN2 AVG CEILING COUNT COS COT DEGREES EXP FLOOR LOG LOG10 MAX MIN PI POWER RADIANS RAND ROUND SIGN SIN SQRT SQUARE SUM TAN
Date Functions CURRENT_TIMESTAMP DATEADD DATEDIFF DATEFROMPARTS DATENAME DATEPART DAY GETDATE GETUTCDATE ISDATE MONTH SYSDATETIME YEAR
Advanced Functions CAST COALESCE CONVERT CURRENT_USER IIF ISNULL ISNUMERIC NULLIF SESSION_USER SESSIONPROPERTY SYSTEM_USER USER_NAME
MS Access Functions String Functions Asc Chr Concat with & CurDir Format InStr InstrRev LCase Left Len LTrim Mid Replace Right RTrim Space Split Str StrComp StrConv StrReverse Trim UCase
Numeric Functions Abs Atn Avg Cos Count Exp Fix Format Int Max Min Randomize Rnd Round Sgn Sqr Sum Val
Date Functions Date DateAdd DateDiff DatePart DateSerial DateValue Day Format Hour Minute Month MonthName Now Second Time TimeSerial TimeValue Weekday WeekdayName Year
Other Functions CurrentUser Environ IsDate IsNull IsNumeric
SQL OperatorsSQL Data TypesSQL Quick Ref
Фильтрация. WHERE
Последнее обновление: 13.07.2017
Для фильтрации в команде SELECT применяется оператор WHERE. После этого оператора ставится условие, которому должна соответствовать строка:
WHERE условие
Если условие истинно, то строка попадает в результирующую выборку. В качестве можно использовать операции сравнения. Эти операции сравнивают два выражения. В T-SQL можно применять следующие операции сравнения:
=: сравнение на равенство (в отличие от си-подобных языков в T-SQL для сравнения на равенство используется один знак равно)
<>: сравнение на неравенство
<: меньше чем
>: больше чем
!<: не меньше чем
!>: не больше чем
<=: меньше чем или равно
>=: больше чем или равно
Например, найдем всех товары, производителем которых является компания Samsung:
SELECT * FROM Products WHERE Manufacturer = 'Samsung'
Стоит отметить, что в данном случае регистр не имеет значение, и мы могли бы использовать для поиска и строку «Samsung», и «SAMSUNG», и «samsung». Все эти варианты давали бы эквивалентный результат выборки.
Другой пример — найдем все товары, у которых цена больше 45000:
SELECT * FROM Products WHERE Price > 45000
В качестве условия могут использоваться и более сложные выражения. Например, найдем все товары, у которых совокупная стоимость больше 200 000:
SELECT * FROM Products WHERE Price * ProductCount > 200000
Логические операторы
Для объединения нескольких условий в одно могут использоваться логические операторы. В T-SQL имеются следующие логические операторы:
-
AND: операция логического И. Она объединяет два выражения:
выражение1 AND выражение2
Только если оба этих выражения одновременно истинны, то и общее условие оператора AND также будет истинно. То есть если и первое условие истинно, и второе.
-
OR: операция логического ИЛИ. Она также объединяет два выражения:
выражение1 OR выражение2
Если хотя бы одно из этих выражений истинно, то общее условие оператора OR также будет истинно. То есть если или первое условие истинно, или второе.
-
NOT: операция логического отрицания. Если выражение в этой операции ложно, то общее условие истинно.
NOT выражение
Если эти операторы встречаются в одном выражении, то сначала выполняется NOT, потом AND и в конце OR.
Например, выберем все товары, у которых производитель Samsung и одновременно цена больше 50000:
SELECT * FROM Products WHERE Manufacturer = 'Samsung' AND Price > 50000
Теперь изменим оператор на OR. То есть выберем все товары, у которых либо производитель Samsung, либо цена больше 50000:
SELECT * FROM Products WHERE Manufacturer = 'Samsung' OR Price > 50000
Применение оператора NOT — выберем все товары, у которых производитель не Samsung:
SELECT * FROM Products WHERE NOT Manufacturer = 'Samsung'
Но в большинстве случае вполне можно обойтись без оператора NOT. Так, в предыдущий пример мы можем переписать следующим образом:
SELECT * FROM Products WHERE Manufacturer <> 'Samsung'
Также в одной команде SELECT можно использовать сразу несколько операторов:
SELECT * FROM Products WHERE Manufacturer = 'Samsung' OR Price > 30000 AND ProductCount > 2
Так как оператор AND имеет более высокий приоритет, то сначала будет выполняться подвыражение , и только потом оператор OR. То есть здесь выбираются товары, которыех на складе больше 2 и у которых одновременно цена больше 30000, либо те товары, производителем которых является Samsung.
С помощью скобок мы также можем переопределить порядок операций:
SELECT * FROM Products WHERE (Manufacturer = 'Samsung' OR Price > 30000) AND ProductCount > 2
IS NULL
Ряд столбцов может допускать значение NULL. Это значение не эквивалентно пустой строке ». NULL представляет полное отсутствие какого-либо значения. И для проверки на наличие подобного значения применяется оператор IS NULL.
Например, выберем все товары, у которых не установлено поле ProductCount:
SELECT * FROM Products WHERE ProductCount IS NULL
Если, наоборот, необходимо получить строки, у которых поле ProductCount не равно NULL, то можно использовать оператор NOT:
SELECT * FROM Products WHERE ProductCount IS NOT NULL
НазадВперед
ПримерыExamples
В следующем примере операторы сравнения Equals () Not Equal To () используются для сравнения со значениями в таблице, которые равны или не равны .The following example uses the Equals () and Not Equal To () comparison operators to make comparisons with and non-null values in a table. Этот пример также демонстрирует, что использование конструкции не зависит от значения параметра .The example also shows that is not affected by the setting.
Теперь установите параметр ANSI_NULLS в значение ON и выполните тестирование.Now set ANSI_NULLS to ON and test.
Теперь установите параметр ANSI_NULLS в значение OFF и выполните тестирование.Now set ANSI_NULLS to OFF and test.
RemarksRemarks
Приоритеты выполнения логических операторов распределяются следующим образом: NOT (наивысший приоритет), AND, OR (низший приоритет).The order of precedence for the logical operators is NOT (highest), followed by AND, followed by OR. Для перераспределения указанных приоритетов в условии поиска используются скобки.Parentheses can be used to override this precedence in a search condition. Порядок выполнения логических операторов может меняться в зависимости от настроек оптимизатора запросов.The order of evaluation of logical operators can vary depending on choices made by the query optimizer. Дополнительные сведения о работе логических операторов с логическими значениями см. в статьях AND (Transact-SQL), OR (Transact-SQL) и NOT (Transact-SQL).For more information about how the logical operators operate on logic values, see AND (Transact-SQL), OR (Transact-SQL), and NOT (Transact-SQL).
Примеры:Examples:
В следующих примерах используется база данных AdventureWorksPDW2012AdventureWorksPDW2012.The following examples use the AdventureWorksPDW2012AdventureWorksPDW2012 database.
В этом разделе приведены три примера кода.This section shows three code examples. В ходе выполнения первого примера кода возвращаются все строки (предложение WHERE не указано), а также все столбцы (используется ) таблицы .This first code example returns all rows (no WHERE clause is specified) and all columns (using the ) from the table.
В этом примере для достижения такого же результата используется присвоение псевдонима таблице.This next example using table aliasing to achieve the same result.
В ходе выполнения данного примера кода возвращаются все строки (предложение WHERE не задано) и подмножества столбцов (, , ) таблицы базы данных .This example returns all rows (no WHERE clause is specified) and a subset of the columns (, , ) from the table in the database. Заголовок третьего столбца переименовывается в .The third column heading is renamed to .
Этот пример возвращает только строки для , имеющие , не равное NULL, и , равное «M» (состоит в браке).This example returns only the rows for that have an that is not NULL and a of ‘M’ (married).
В.C. Совместное использование DISTINCT и SELECTUsing DISTINCT with SELECT
В следующем примере используется для создания списка всех уникальных должностей в таблице .The following example uses to generate a list of all unique titles in the table.
Г.D. Использование GROUP BYUsing GROUP BY
В следующем примере вычисляется общий объем всех продаж за каждый день.The following example finds the total amount for all sales on each day.
Так как в запросе используется предложение , то выводится только одна строка, содержащая общий объем продаж по каждому дню.Because of the clause, only one row containing the sum of all sales is returned for each day.
Д.E. Использование GROUP BY с несколькими группамиUsing GROUP BY with multiple groups
В следующем примере вычисляются значения средней цены и суммы продаж через Интернет за каждый день, сгруппированные по дате заказа и ключу продвижения.The following example finds the average price and the sum of Internet sales for each day, grouped by order date and the promotion key.
Е.F. Использование GROUP BY и WHEREUsing GROUP BY and WHERE
В следующем примере после извлечения строк, содержащих даты заказов позднее 1 августа 2002 г., происходит их разделение на группы.The following example puts the results into groups after retrieving only the rows with order dates later than August 1, 2002.
Ж.G. Использование GROUP BY с выражениемUsing GROUP BY with an expression
В следующем примере производится группировка с помощью выражения.The following example groups by an expression. Группировку можно производить только с помощью выражения, не содержащего агрегатных функций.You can group by an expression if the expression does not include aggregate functions.
З.H. Использование GROUP BY с ORDER BYUsing GROUP BY with ORDER BY
В следующем примере вычисляется сумма продаж за день и выполняется поиск заказов по определенному дню.The following example finds the sum of sales per day, and orders by the day.
И.I. Использование предложения HAVINGUsing the HAVING clause
Для ограничения результатов поиска в этом запросе используется предложение .This query uses the clause to restrict results.
Функции CASE и IIF
Последнее обновление: 29.07.2017
CASE
Функция CASE проверяет значение некоторого выражение, и в зависимости от результата проверки может возвращать тот или иной результат.
CASE принимает следующую форму:
CASE выражение WHEN значение_1 THEN результат_1 WHEN значение_2 THEN результат_2 ................................. WHEN значение_N THEN результат_N END
Возьмем для примера следующую таблицу Products:
CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY, ProductName NVARCHAR(30) NOT NULL, Manufacturer NVARCHAR(20) NOT NULL, ProductCount INT DEFAULT 0, Price MONEY NOT NULL );
Выполним запрос к этой таблице и используем функцию CASE:
SELECT ProductName, Manufacturer, CASE ProductCount WHEN 1 THEN 'Товар заканчивается' WHEN 2 THEN 'Мало товара' WHEN 3 THEN 'Есть в наличии' ELSE 'Много товара' END AS EvaluateCount FROM Products
Здесь значения столбца ProductCount последовательно сравнивается со значениями после операторов WHEN. В зависимости от значения столбца ProductCount функция CASE будет возвращать одну из строк, которая идет после соответствующего оператора THEN. Для возвращаемого результата определен столбец EvaluateCount:
Также функция CASE может принимать еще одну форму:
CASE WHEN выражение_1 THEN результат_1 WHEN выражение_2 THEN результат_2 ................................. WHEN выражение_N THEN результат_N END
Например, применительно к таблице Products:
SELECT ProductName, Manufacturer, CASE WHEN Price > 50000 THEN 'Категория A' WHEN Price BETWEEN 40000 AND 50000 THEN 'Категория B' WHEN Price BETWEEN 30000 AND 40000 THEN 'Категория C' ELSE 'Категория D' END AS Category FROM Products
Фактически все то же самое, что и в предыдущем примере, только после CASE не указывается сравниваемое значение. А сами выражения сравнения стоят после оператора WHEN. И если выражение после оператора WHEN будет истинно, то возвращается значение, которое идет после соответствующего оператора THEN.
IIF
Функция IIF в зависимости от результата условного выражения возвращает одно из двух значений. Общая форма функции выглядит следующим образом:
IIF(условие, значение_1, значение_2)
Если условие в функции IIF истинно то возвращается значение_1, если ложно, то возвращается значение_2. Например:
SELECT ProductName, Manufacturer, IIF(ProductCount>3, 'Много товара', 'Мало товара') FROM Products
НазадВперед
Установка MS SQL Server 2017
Последнее обновление: 10.10.2017
MS SQL Server доступен в различных вариациях. Прежде всего, это MS SQL Server Enterprise — полный выпуск, нацеленный на использование в реальных проектах. Именно он используется на различных хостингах и серверах баз данных. Однако он доступен только в платной версии (не считая триального периода) и стоит довольно приличных денег.
Для простых приложений также может хватить и выпуска Express: он бесплатный. К тому же у него есть преимущество — его можно ставить в качестве реального сервера и использовать в реальных задачах, однако он имеет урезанный функционал по сравнению с полной версией.
И также есть MS SQL Server Developer Edition. Это полнофункциональный выпуск, который содержит весь функционал, что и полная версия MS SQL Server Enterprise, только нацелена только для нужд разработки. В то же время эта версия не может быть использована для развертывания в качестве реального сервера на реальных проектах. Однако для изучения всей механики MS SQL Server эта версия представляет оптимальный вариант, поэтому именно эту версию мы и будем использовать.
Оставим языком по умолчанию английский и загрузим все файл iso. Так как загружаемый файл имеет расширение .iso, то после загрузки распакуем его и запустим программу установщика. Нам отобразится окно мастера установки:
Здесь выберем первый пункт «New SQL Server stand-alone installation or add features to an existing installation». Далее с помощью последовательности шагов нам надо будет установить опции установки.
Прощелкаем до пункта «Product Key». На этом этапе надо ввести ключ, либо указать один из бесплатных выпусков. Здесь мы указываем выпуск «Developer» и переходим к новому шагу по кнопке Next.
Далее надо будет принять лицензионное соглашение. И затем прощелкаем до шага «Feature Selection». На этом этапе предлагается выбрать компоненты для установки. Здесь отметим все компоненты, учитывая при этом объем свободной памяти:
В зависимости от выбранных компонентов увеличивается количество этапов установки, где надо выполнить какие-либо настройки. В моем случае выбраны все компоненты. Поэтому в дальнейшем рассмотрим тот случай, если выбраны все компоненты.
Далее на шаге «Instance Configuration» нам надо будет указать название и ID запускаемой сущности SQL Server.
Для имени указываем опцию Default instance, а для ID устанавливаем MSSQLSERVER. Это будет то имя экземпляра, по которому мы сможем обращаться к серверу из внешних приложений.
Затем прощелкаем последующие два шага с опциями по умолчанию до «Database Engine Configuration». С помощью кнопки Add Current User здесь добавим текущего пользователя в качестве администратора для сервера.
На следующем шаге «Analysis Services Configuration» также добавим текущего пользователя в качестве администратора для функции Analysis Services:
На следующих двух шагах оставим настройки по умолчанию. И далее на шаге «Distributed Replay Controller» аналогично добавим текущего пользователя
На всех последующих шагах оставим настройки по умолчанию и на самом последнем экране для установки нажмем на кнопку Install:
Спустя некоторое время MS SQL Server будет установлен.
Итак, мы установили SQL Server 2017, при этому назначили для него идентификатор «MSSQLSERVER». Следует отметить, что перед подключением к нему, надо убедиться, что он запущен. Для этого можно открыть окно служб:
Если он не запущен, там же в панели служб мы его может запустить, и после этого мы сможем с ним работать.
НазадВперед
Логический порядок обработки инструкции SELECTLogical Processing Order of the SELECT statement
Следующие действия демонстрируют логический порядок обработки или порядок привязки инструкции SELECT.The following steps show the logical processing order, or binding order, for a SELECT statement. Этот порядок определяет, когда объекты, определенные в одном шаге, становятся доступными для предложений в последующих шагах.This order determines when the objects defined in one step are made available to the clauses in subsequent steps. Например, если обработчик запросов можно привязать (для доступа) к таблицам или представлениям, определенным в предложении FROM, эти объекты и их столбцы становятся доступными для всех последующих шагов.For example, if the query processor can bind to (access) the tables or views defined in the FROM clause, these objects and their columns are made available to all subsequent steps. И наоборот, поскольку предложение SELECT является шагом 8, любые псевдонимы столбцов или производных столбцов, определенные в этом предложении, не могут быть объектом для ссылки предыдущих предложений.Conversely, because the SELECT clause is step 8, any column aliases or derived columns defined in that clause cannot be referenced by preceding clauses. Вместе с тем к ним могут обращаться последующие предложения, например предложение ORDER BY.However, they can be referenced by subsequent clauses such as the ORDER BY clause. Фактическое физическое выполнение инструкции определяется обработчиком запросов и порядок из этого списка может значительно отличаться.The actual physical execution of the statement is determined by the query processor and the order may vary from this list.
- FROMFROM
- ONON
- JOINJOIN
- WHEREWHERE
- GROUP BYGROUP BY
- WITH CUBE или WITH ROLLUPWITH CUBE or WITH ROLLUP
- HAVINGHAVING
- SELECTSELECT
- DISTINCTDISTINCT
- ORDER BYORDER BY
- В началоTOP
Предупреждение
Как правило, применяется предыдущая последовательность.The preceding sequence is usually true. Однако в редких случаях может быть указана другая последовательность.However, there are uncommon cases where the sequence may differ.
Например, предположим, что в представлении есть кластеризованный индекс и представление исключает некоторые строки таблицы, а для списка столбцов SELECT представления используется инструкция CONVERT, которая изменяет тип данных с varchar на integer.For example, suppose you have a clustered index on a view, and the view excludes some table rows, and the view’s SELECT column list uses a CONVERT that changes a data type from varchar to integer. В этом случае CONVERT может выполняться до выполнения предложения WHERE.In this situation, the CONVERT may execute before the WHERE clause executes. Это нестандартное поведение.Uncommon indeed. Если это имеет значение в вашем случае, можно изменить представление, чтобы исключить использование другой последовательности.Often there is a way to modify your view to avoid the different sequence, if it matters in your case.
SQL Server Math/Numeric Functions
Function | Description |
---|---|
ABS | Returns the absolute value of a number |
ACOS | Returns the arc cosine of a number |
ASIN | Returns the arc sine of a number |
ATAN | Returns the arc tangent of a number |
ATN2 | Returns the arc tangent of two numbers |
AVG | Returns the average value of an expression |
CEILING | Returns the smallest integer value that is >= a number |
COUNT | Returns the number of records returned by a select query |
COS | Returns the cosine of a number |
COT | Returns the cotangent of a number |
DEGREES | Converts a value in radians to degrees |
EXP | Returns e raised to the power of a specified number |
FLOOR | Returns the largest integer value that is <= to a number |
LOG | Returns the natural logarithm of a number, or the logarithm of a number to a specified base |
LOG10 | Returns the natural logarithm of a number to base 10 |
MAX | Returns the maximum value in a set of values |
MIN | Returns the minimum value in a set of values |
PI | Returns the value of PI |
POWER | Returns the value of a number raised to the power of another number |
RADIANS | Converts a degree value into radians |
RAND | Returns a random number |
ROUND | Rounds a number to a specified number of decimal places |
SIGN | Returns the sign of a number |
SIN | Returns the sine of a number |
SQRT | Returns the square root of a number |
SQUARE | Returns the square of a number |
SUM | Calculates the sum of a set of values |
TAN | Returns the tangent of a number |
SQL Server String Functions
Function | Description |
---|---|
ASCII | Returns the ASCII value for the specific character |
CHAR | Returns the character based on the ASCII code |
CHARINDEX | Returns the position of a substring in a string |
CONCAT | Adds two or more strings together |
Concat with + | Adds two or more strings together |
CONCAT_WS | Adds two or more strings together with a separator |
DATALENGTH | Returns the number of bytes used to represent an expression |
DIFFERENCE | Compares two SOUNDEX values, and returns an integer value |
FORMAT | Formats a value with the specified format |
LEFT | Extracts a number of characters from a string (starting from left) |
LEN | Returns the length of a string |
LOWER | Converts a string to lower-case |
LTRIM | Removes leading spaces from a string |
NCHAR | Returns the Unicode character based on the number code |
PATINDEX | Returns the position of a pattern in a string |
QUOTENAME | Returns a Unicode string with delimiters added to make the string a valid SQL Server delimited identifier |
REPLACE | Replaces all occurrences of a substring within a string, with a new substring |
REPLICATE | Repeats a string a specified number of times |
REVERSE | Reverses a string and returns the result |
RIGHT | Extracts a number of characters from a string (starting from right) |
RTRIM | Removes trailing spaces from a string |
SOUNDEX | Returns a four-character code to evaluate the similarity of two strings |
SPACE | Returns a string of the specified number of space characters |
STR | Returns a number as string |
STUFF | Deletes a part of a string and then inserts another part into the string, starting at a specified position |
SUBSTRING | Extracts some characters from a string |
TRANSLATE | Returns the string from the first argument after the characters specified in the second argument are translated into the characters specified in the third argument. |
TRIM | Removes leading and trailing spaces (or other specified characters) from a string |
UNICODE | Returns the Unicode value for the first character of the input expression |
UPPER | Converts a string to upper-case |
UNION
Последнее обновление: 20.07.2017
Оператор UNION подобно inner join или outer join позволяет соединить две таблицы. Но в отличие от inner/outer join объединения соединяют не столбцы разных таблиц, а два однотипных набора в один. Формальный синтаксис объединения:
SELECT_выражение1 UNION SELECT_выражение2 SELECT_выражениеN]
Например, пусть в базе данных будут две отдельные таблицы для клиентов банка (таблица Customers) и для сотрудников банка (таблица Employees):
USE usersdb; CREATE TABLE Customers ( Id INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, AccountSum MONEY ); CREATE TABLE Employees ( Id INT IDENTITY PRIMARY KEY, FirstName NVARCHAR(20) NOT NULL, LastName NVARCHAR(20) NOT NULL, ); INSERT INTO Customers VALUES ('Tom', 'Smith', 2000), ('Sam', 'Brown', 3000), ('Mark', 'Adams', 2500), ('Paul', 'Ins', 4200), ('John', 'Smith', 2800), ('Tim', 'Cook', 2800) INSERT INTO Employees VALUES ('Homer', 'Simpson'), ('Tom', 'Smith'), ('Mark', 'Adams'), ('Nick', 'Svensson')
Здесь мы можем заметить, что обе таблицы, несмотря на наличие различных данных, могут характеризоваться двумя общими атрибутами — именем (FirstName) и фамилией (LastName). Выберем сразу всех клиентов банка и его сотрудников из обеих таблиц:
SELECT FirstName, LastName FROM Customers UNION SELECT FirstName, LastName FROM Employees
В данном случае из первой таблицы выбираются два значения — имя и фамилия клиента. Из второй таблицы Employees также выбираются два значения — имя и фамилия сотрудников. То есть при объединении количество выбираемых столбцов и их тип совпадают для обеих выборок.
При этом названия столбцов объединенной выборки будут совпадать с названия столбцов первой выборки. И если мы захотим при этом еще произвести сортировку, то в выражениях ORDER BY необходимо ориентироваться именно на названия столбцов первой выборки:
SELECT FirstName + ' ' +LastName AS FullName FROM Customers UNION SELECT FirstName + ' ' + LastName AS EmployeeName FROM Employees ORDER BY FullName DESC
В данном случае каждая выборка имеет по одному столбцу, который представляет объединение имени и фамилии клиента или сотрудника. Но в случае с клиентами столбец будет называться FullName, а в случае с сотрудниками — EmployeeName. Тем не менее для сортировки применяется название столбца из первой выборки и он же будет в результирующей выборке:
Если же в одной выборке больше столбцов, чем в другой, то они не смогут быть объединены. Например, в следующем случае объединение завершится с ошибкой:
SELECT FirstName, LastName, AccountSum FROM Customers UNION SELECT FirstName, LastName FROM Employees
Также соответствующие столбцы должны соответствовать по типу. Так, следующий пример завершится с ошибкой из-за не соответствия по типу данных:
SELECT FirstName, LastName FROM Customers UNION SELECT Id, LastName FROM Employees
В данном случае первый столбец первой выборки имеет тип NVARCHAR, то есть хранит строку. Первый столбец второй выборки — Id имеет тип INT, то есть хранит число.
Если оба объединяемых набора содержат в строках идентичные значения, то при объединении повторяющиеся строки удаляются. Например, в случае с таблицами Customers и Employees сотрудники банка могут быть одновременно его клиентами и содержаться в обеих таблицах. При объединении в примерах выше всех дублирующиеся строки удалялись. Если же необходимо при объединении сохранить все, в том числе повторяющиеся строки, то для этого необходимо использовать оператор ALL:
SELECT FirstName, LastName FROM Customers UNION ALL SELECT FirstName, LastName FROM Employees
Объединять выборки можно и из одной и той же таблицы. Например, в зависимости от суммы на счете клиента нам надо начислять ему определенные проценты:
SELECT FirstName, LastName, AccountSum + AccountSum * 0.1 AS TotalSum FROM Customers WHERE AccountSum < 3000 UNION SELECT FirstName, LastName, AccountSum + AccountSum * 0.3 AS TotalSum FROM Customers WHERE AccountSum >= 3000
В данном случае если сумма меньше 3000, то начисляются проценты в размере 10% от суммы на счете. Если на счете больше 3000, то проценты увеличиваются до 30%.
НазадВперед
РазрешенияPermissions
Для выборки данных требуется разрешение SELECT на таблицу или представление, которое может быть унаследовано из области более высокого уровня, например разрешение SELECT на схему или разрешение CONTROL на таблицу.Selecting data requires SELECT permission on the table or view, which could be inherited from a higher scope such as SELECT permission on the schema or CONTROL permission on the table. Или необходимо быть членом предопределенных ролей базы данных db_datareader или db_owner либо предопределенной роли сервера sysadmin.Or requires membership in the db_datareader or db_owner fixed database roles, or the sysadmin fixed server role. Для создания новой таблицы с помощью SELECTINTO также необходимы разрешение CREATETABLE и разрешение ALTERSCHEMA на схему, которой принадлежит новая таблица.Creating a new table using SELECTINTO also requires both the CREATETABLE permission, and the ALTERSCHEMA permission on the schema that owns the new table.
С этим читают
- Sql server express localdb
- Таблицы oracle
- Работа с датой и временем в mysql
- Identity (функция) (transact-sql)identity (function) (transact-sql)
- Download sql server management studio (ssms)
- Group by and having clause in sql
- Sql server: alter table statement
- Установка служб integration services (ssis)install integration services (ssis)
- In (transact-sql)in (transact-sql)
- Mysql — string functions