T-SQL — Обзор
В 1970-х годах продукт под названием «SEQUEL», язык структурированного английского запроса, разработанный IBM, а затем SEQUEL, был переименован в «SQL», что означает «язык структурированных запросов».
В 1986 году SQL был одобрен ANSI (Американский национальный институт стандартов), а в 1987 году — ISO (Международная организация стандартов).
SQL — это язык структурных запросов, который является общим языком баз данных для всех продуктов СУБД. Различные поставщики СУБД разработали свой собственный язык баз данных, расширив SQL для своих собственных СУБД.
T-SQL расшифровывается как Transact Structure Query Language, который является продуктом Microsoft и является расширением языка SQL.
пример
MS SQL Server — SQL \ T-SQL
ORACLE — SQL \ PL-SQL
T-SQL — типы данных
Тип данных SQL Server — это атрибут, который определяет типы данных любого объекта. Каждый столбец, переменная и выражение имеют связанный тип данных в SQL Server. Эти типы данных можно использовать при создании таблиц. Вы можете выбрать конкретный тип данных для столбца таблицы в зависимости от ваших требований.
SQL Server предлагает семь категорий, включая другие категории типов данных для использования.
Точные числовые типы
Тип | От | к |
---|---|---|
BIGINT | -9.223.372.036.854.775.808 | 9.223.372.036.854.775.807 |
ИНТ | -2147483648 | 2147483647 |
SMALLINT | -32768 | 32767 |
TINYINT | 0 | 255 |
немного | 0 | 1 |
десятичный | -10 ^ 38 +1 | 10 ^ 38 –1 |
числовой | -10 ^ 38 +1 | 10 ^ 38 –1 |
Деньги | -922,337,203,685,477.5808 | +922,337,203,685,477.5807 |
smallmoney | -214,748.3648 | +214,748.3647 |
Числовые и десятичные значения являются типами данных с фиксированной точностью и масштабом и функционально эквивалентны.
Приблизительные числовые типы
Тип | От | к |
---|---|---|
терка | -1,79E + 308 | 1,79E + 308 |
реальный | -3.40E + 38 | 3.40E + 38 |
Типы даты и времени
Тип | От | к |
---|---|---|
datetime (точность 3.33 миллисекунды) |
1 января 1753 г. | 31 декабря 9999 г. |
smalldatetime (с точностью до 1 минуты) |
1 января 1900 г. | 6 июня 2079 г. |
дата (с точностью до 1 дня. Представлено в SQL Server 2008) |
1 января 0001 | 31 декабря 9999 г. |
datetimeoffset (точность 100 наносекунд. Представлено в SQL Server 2008) |
1 января 0001 | 31 декабря 9999 г. |
datetime2 (точность 100 наносекунд. Представлено в SQL Server 2008 ) |
1 января 0001 | 31 декабря 9999 г. |
время (точность 100 наносекунд. Представлено в SQL Server 2008 ) |
00: 00: 00,0000000 | 23: 59: 59,9999999 |
datetime (точность 3.33 миллисекунды)
smalldatetime (с точностью до 1 минуты)
дата (с точностью до 1 дня. Представлено в SQL Server 2008)
datetimeoffset (точность 100 наносекунд. Представлено в SQL Server 2008)
datetime2 (точность 100 наносекунд. Представлено в SQL Server 2008 )
время (точность 100 наносекунд. Представлено в SQL Server 2008 )
Строки символов
Sr.No | Тип и описание |
---|---|
1 |
голец Не символьные данные Unicode фиксированной длины с максимальной длиной 8000 символов. |
2 |
VARCHAR Данные не-Unicode переменной длины, содержащие не более 8000 символов. |
3 |
Varchar (макс) Данные переменной длины, отличные от Unicode, с максимальной длиной 231 символ (введено в SQL Server 2005). |
4 |
текст Данные не-Unicode переменной длины с максимальной длиной 2 147 483 647 символов |
голец
Не символьные данные Unicode фиксированной длины с максимальной длиной 8000 символов.
VARCHAR
Данные не-Unicode переменной длины, содержащие не более 8000 символов.
Varchar (макс)
Данные переменной длины, отличные от Unicode, с максимальной длиной 231 символ (введено в SQL Server 2005).
текст
Данные не-Unicode переменной длины с максимальной длиной 2 147 483 647 символов
Строки символов Unicode
Sr.No | Тип и описание |
---|---|
1 |
NCHAR Данные Unicode фиксированной длины с максимальной длиной 4000 символов. |
2 |
NVARCHAR Данные Unicode переменной длины с максимальной длиной 4000 символов. |
3 |
Нварчар (макс) Данные Unicode переменной длины с максимальной длиной 2 30 символов (введено в SQL Server 2005). |
4 |
NTEXT Данные Unicode переменной длины с максимальной длиной 1 073 741 823 символа. |
NCHAR
Данные Unicode фиксированной длины с максимальной длиной 4000 символов.
NVARCHAR
Данные Unicode переменной длины с максимальной длиной 4000 символов.
Нварчар (макс)
Данные Unicode переменной длины с максимальной длиной 2 30 символов (введено в SQL Server 2005).
NTEXT
Данные Unicode переменной длины с максимальной длиной 1 073 741 823 символа.
Двоичные строки
Sr.No | Тип и описание |
---|---|
1 |
двоичный Двоичные данные фиксированной длины с максимальной длиной 8000 байт. |
2 |
VARBINARY Двоичные данные переменной длины с максимальной длиной 8000 байтов. |
3 |
VARBINARY (макс) Двоичные данные переменной длины с максимальной длиной 2 31 байт (введено в SQL Server 2005). |
4 |
образ Двоичные данные переменной длины с максимальной длиной 2 147 483 647 байт. |
двоичный
Двоичные данные фиксированной длины с максимальной длиной 8000 байт.
VARBINARY
Двоичные данные переменной длины с максимальной длиной 8000 байтов.
VARBINARY (макс)
Двоичные данные переменной длины с максимальной длиной 2 31 байт (введено в SQL Server 2005).
образ
Двоичные данные переменной длины с максимальной длиной 2 147 483 647 байт.
Другие типы данных
-
sql_variant — хранит значения различных типов данных, поддерживаемых SQL Server, кроме text, ntext и timestamp.
-
отметка времени — хранит уникальный для всей базы данных номер, который обновляется каждый раз при обновлении строки.
-
uniqueidentifier — хранит глобальный уникальный идентификатор (GUID).
-
xml — хранит данные XML. Вы можете хранить экземпляры XML в столбце или переменной (введено в SQL Server 2005).
-
курсор — ссылка на курсор.
-
таблица — хранит набор результатов для последующей обработки.
-
ierarchyid — переменная длина, системный тип данных, используемый для представления положения в иерархии (введено в SQL Server 2008).
sql_variant — хранит значения различных типов данных, поддерживаемых SQL Server, кроме text, ntext и timestamp.
отметка времени — хранит уникальный для всей базы данных номер, который обновляется каждый раз при обновлении строки.
uniqueidentifier — хранит глобальный уникальный идентификатор (GUID).
xml — хранит данные XML. Вы можете хранить экземпляры XML в столбце или переменной (введено в SQL Server 2005).
курсор — ссылка на курсор.
таблица — хранит набор результатов для последующей обработки.
ierarchyid — переменная длина, системный тип данных, используемый для представления положения в иерархии (введено в SQL Server 2008).
T-SQL — создание таблиц
Создание базовой таблицы включает в себя наименование таблицы и определение ее столбцов и типа данных каждого столбца.
Инструкция SQL Server CREATE TABLE используется для создания новой таблицы.
Синтаксис
Ниже приведен основной синтаксис оператора CREATE TABLE:
CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ));
CREATE TABLE — это ключевое слово, сообщающее системе баз данных, что вы хотите сделать. В этом случае вы хотите создать новую таблицу. Уникальное имя или идентификатор таблицы следует за оператором CREATE TABLE. Затем в скобках указывается список, определяющий каждый столбец таблицы и тип данных. Синтаксис становится более понятным для следующего примера.
Копия существующей таблицы может быть создана с использованием комбинации оператора CREATE TABLE и оператора SELECT. Вы можете проверить полную информацию в Создать таблицу, используя другую таблицу.
пример
В этом примере давайте создадим таблицу CUSTOMERS с ID в качестве первичного ключа, а NOT NULL — это ограничения, показывающие, что эти поля не могут быть NULL при создании записей в этой таблице.
CREATE TABLE CUSTOMERS( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25) , SALARY DECIMAL (18, 2), PRIMARY KEY (ID));
Вы можете проверить, была ли ваша таблица создана успешно, просмотрев сообщение, отображаемое сервером SQL, в противном случае вы можете использовать следующую команду:
exec sp_columns CUSTOMERS
Приведенная выше команда производит следующий вывод.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0 NULL NULL 4 NULL NULL 1 NO 56 TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0 NULL NULL 12 NULL 20 2 NO 39 TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0 NULL NULL 4 NULL NULL 3 NO 56 TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1 NULL NULL 1 NULL 25 4 YES 39 TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1 NULL NULL 3 NULL NULL 5 YES 106
Теперь вы можете видеть, что таблица CUSTOMERS доступна в вашей базе данных, которую вы можете использовать для хранения необходимой информации, связанной с клиентами.
T-SQL — удаленные таблицы
Оператор DROP TABLE SQL Server используется для удаления определения таблицы и всех данных, индексов, триггеров, ограничений и спецификаций разрешений для этой таблицы.
Примечание. При использовании этой команды необходимо соблюдать осторожность, поскольку после удаления таблицы вся доступная в ней информация также будет потеряна навсегда.
Синтаксис
Ниже приведен основной синтаксис оператора DROP TABLE:
DROP TABLE table_name;
пример
Давайте сначала проверим таблицу CUSTOMERS, а затем удалим ее из базы данных —
Exec sp_columns CUSTOMERS;
Приведенная выше команда показывает следующую таблицу.
TABLE_QUALIFIER TABLE_OWNER TABLE_NAME COLUMN_NAME DATA_TYPE TYPE_NAME PRECISION LENGTH SCALE RADIX NULLABLE REMARKS COLUMN_DEF SQL_DATA_TYPE SQL_DATETIME_SUB CHAR_OCTET_LENGTH ORDINAL_POSITION IS_NULLABLE SS_DATA_TYPE TestDB dbo CUSTOMERS ID 4 int 10 4 0 10 0 NULL NULL 4 NULL NULL 1 NO 56 TestDB dbo CUSTOMERS NAME 12 varchar 20 20 NULL NULL 0 NULL NULL 12 NULL 20 2 NO 39 TestDB dbo CUSTOMERS AGE 4 int 10 4 0 10 0 NULL NULL 4 NULL NULL 3 NO 56 TestDB dbo CUSTOMERS ADDRESS 1 char 25 25 NULL NULL 1 NULL NULL 1 NULL 25 4 YES 39 TestDB dbo CUSTOMERS SALARY 3 decimal 18 20 2 10 1 NULL NULL 3 NULL NULL 5 YES 106
Таблица CUSTOMERS доступна в базе данных, поэтому давайте ее отбросим. Ниже приведена команда для того же.
DROP TABLE CUSTOMERS; Command(s) completed successfully.
С помощью приведенной выше команды вы не получите никаких строк.
Exec sp_columns CUSTOMERS; No rows\data will be displayed
T-SQL — оператор INSERT
Оператор INSERT INTO SQL Server используется для добавления новых строк данных в таблицу в базе данных.
Синтаксис
Ниже приведены два основных синтаксиса оператора INSERT INTO.
INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)] VALUES (value1, value2, value3,...valueN);
Где column1, column2, … columnN — это имена столбцов в таблице, в которые вы хотите вставить данные.
Вам не нужно указывать имя столбца (-ов) в запросе SQL, если вы добавляете значения для всех столбцов таблицы. Но убедитесь, что порядок значений в том же порядке, что и столбцы в таблице. Ниже приведен синтаксис SQL INSERT INTO —
INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);
пример
Следующие операторы создадут шесть записей в таблице CUSTOMERS —
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 ); INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (6, 'Komal', 22, 'MP', 4500.00 );
Синтаксис
Вы можете создать запись в таблице CUSTOMERS, используя второй синтаксис следующим образом:
INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );
Все приведенные выше операторы приведут к следующим записям в таблице CUSTOMERS —
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Заполните одну таблицу, используя другую таблицу
Вы можете заполнить данные в таблице с помощью оператора SELECT для другой таблицы, при условии, что в другой таблице есть набор полей, которые необходимы для заполнения первой таблицы. Ниже приводится синтаксис —
INSERT INTO first_table_name SELECT column1, column2, ...columnN FROM second_table_name [WHERE condition];
T-SQL — оператор SELECT
Оператор SQL Server SELECT используется для извлечения данных из таблицы базы данных, которая возвращает данные в форме таблицы результатов. Эти таблицы результатов называются наборами результатов .
Синтаксис
Ниже приведен основной синтаксис оператора SELECT —
SELECT column1, column2, columnN FROM table_name;
Где, column1, column2 … это поля таблицы, значения которых вы хотите получить. Если вы хотите получить все поля, доступные в этом поле, вы можете использовать следующий синтаксис:
SELECT * FROM table_name;
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который извлекает поля ID, Имя и Зарплата клиентов, доступных в таблице CUSTOMERS —
SELECT ID, NAME, SALARY FROM CUSTOMERS;
Приведенная выше команда выдаст следующий вывод.
ID NAME SALARY 1 Ramesh 2000.00 2 Khilan 1500.00 3 kaushik 2000.00 4 Chaitali 6500.00 5 Hardik 8500.00 6 Komal 4500.00 7 Muffy 10000.00
Если вы хотите получить все поля таблицы CUSTOMERS, используйте следующий запрос:
SELECT * FROM CUSTOMERS;
Выше будет производить следующий вывод.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
T-SQL — оператор UPDATE
Запрос SQL Server UPDATE используется для изменения существующих записей в таблице.
Вы можете использовать предложение WHERE с запросом UPDATE для обновления выбранных строк, в противном случае все строки будут затронуты.
Синтаксис
Ниже приведен основной синтаксис запроса UPDATE с предложением WHERE.
UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];
Вы можете объединить N условий с помощью операторов И или ИЛИ.
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который обновил бы АДРЕС для клиента с идентификатором 6 —
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Таблица CUSTOMERS теперь будет иметь следующие записи —
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 Pune 4500.00 7 Muffy 24 Indore 10000.00
Если вы хотите изменить все значения столбцов ADDRESS и SALARY в таблице CUSTOMERS, вам не нужно использовать предложение WHERE. ОБНОВЛЕНИЕ запроса будет следующим:
UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00;
Таблица CUSTOMERS теперь будет иметь следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Pune 1000.00 2 Khilan 25 Pune 1000.00 3 kaushik 23 Pune 1000.00 4 Chaitali 25 Pune 1000.00 5 Hardik 27 Pune 1000.00 6 Komal 22 Pune 1000.00 7 Muffy 24 Pune 1000.00
T-SQL — УДАЛИТЬ Заявление
Запрос SQL Server DELETE используется для удаления существующих записей из таблицы.
Вы должны использовать предложение WHERE с запросом DELETE, чтобы удалить выбранные строки, в противном случае все записи будут удалены.
Синтаксис
Ниже приведен основной синтаксис запроса DELETE с предложением WHERE.
DELETE FROM table_name WHERE [condition];
Вы можете объединить N условий с помощью операторов И или ИЛИ.
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который УДАЛИТ клиента, чей идентификатор 6 —
DELETE FROM CUSTOMERS WHERE ID = 6;
Таблица CUSTOMERS теперь будет иметь следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 7 Muffy 24 Indore 10000.00
Если вы хотите УДАЛИТЬ все записи из таблицы CUSTOMERS, вам не нужно использовать предложение WHERE. УДАЛИТЬ запрос будет следующим:
DELETE FROM CUSTOMERS;
Таблица CUSTOMERS теперь не будет иметь никакой записи.
T-SQL — предложение WHERE
Предложение MS SQL Server WHERE используется для указания условия при извлечении данных из одной таблицы или объединении с несколькими таблицами.
Если данное условие выполняется, только тогда оно возвращает конкретное значение из таблицы. Вы должны будете использовать предложение WHERE для фильтрации записей и извлечения только необходимых записей.
Предложение WHERE используется не только в операторе SELECT, но также в операторе UPDATE, DELETE и т. Д., Что мы рассмотрим в последующих главах.
Синтаксис
Ниже приведен основной синтаксис оператора SELECT с предложением WHERE —
SELECT column1, column2, columnN FROM table_name WHERE [condition]
Вы можете указать условие, используя сравнение или логические операторы, такие как>, <, =, LIKE, NOT и т. Д. Следующий пример прояснит эту концепцию.
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда представляет собой пример, который извлекает поля ID, Name и Salary из таблицы CUSTOMERS, где заработная плата превышает 2000.
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000;
Приведенная выше команда выдаст следующий вывод.
ID NAME SALARY 4 Chaitali 6500.00 5 Hardik 8500.00 6 Komal 4500.00 7 Muffy 10000.00
Следующая команда является примером, который извлекает поля ID, Имя и Зарплата из таблицы CUSTOMERS для клиента с именем «Hardik». Важно отметить, что все строки следует указывать в одинарных кавычках (»), тогда как числовые значения следует указывать без кавычек, как в примере выше —
SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE NAME = 'Hardik';
Приведенная выше команда выдаст следующий вывод.
ID NAME SALARY 5 Hardik 8500.00
T-SQL — предложение LIKE
Предложение MS SQL Server LIKE используется для сравнения значения с аналогичными значениями с использованием подстановочных операторов. В сочетании с оператором LIKE используются два подстановочных знака:
- Знак процента (%)
- Подчеркивание (_)
Знак процента представляет собой ноль, один или несколько символов. Подчеркивание представляет собой одно число или символ. Символы могут использоваться в комбинациях.
Синтаксис
Ниже приведен основной синтаксис% и _.
SELECT *\column-list FROM table_name WHERE column LIKE 'XXXX%' or SELECT *\column-list FROM table_name WHERE column LIKE '%XXXX%' or SELECT *\column-list FROM table_name WHERE column LIKE 'XXXX_' or SELECT *\column-list FROM table_name WHERE column LIKE '_XXXX' or SELECT *\column-list FROM table_name WHERE column LIKE '_XXXX_'
Вы можете объединить N условий с помощью операторов И или ИЛИ. XXXX может быть любым числовым или строковым значением.
пример
Ниже приведен ряд примеров, показывающих, где часть WHERE имеет другое предложение LIKE с операторами «%» и «_».
Sr.No | Заявление и описание |
---|---|
1 |
Где заработная плата, как «200%» Находит любые значения, которые начинаются с 200 |
2 |
ГДЕ НАЛОГОВАЯ НРАВИТСЯ «% 200%» Находит любые значения, которые имеют 200 в любой позиции |
3 |
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_00%’ Находит любые значения, которые имеют 00 во второй и третьей позиции |
4 |
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘2 _% _%’ Находит любые значения, которые начинаются с 2 и имеют длину не менее 3 символов |
5 |
ГДЕ НАГРАДНАЯ НРАВИТСЯ ‘% 2’ Находит любые значения, которые заканчиваются на 2 |
6 |
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_2% 3’ Находит любые значения, которые имеют 2 во второй позиции и заканчиваются на 3 |
7 |
Где заработная плата, как «2___3» Находит любые значения в пятизначном числе, которые начинаются с 2 и заканчиваются на 3 |
Где заработная плата, как «200%»
Находит любые значения, которые начинаются с 200
ГДЕ НАЛОГОВАЯ НРАВИТСЯ «% 200%»
Находит любые значения, которые имеют 200 в любой позиции
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_00%’
Находит любые значения, которые имеют 00 во второй и третьей позиции
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘2 _% _%’
Находит любые значения, которые начинаются с 2 и имеют длину не менее 3 символов
ГДЕ НАГРАДНАЯ НРАВИТСЯ ‘% 2’
Находит любые значения, которые заканчиваются на 2
ГДЕ НАЛОГОВАЯ НРАВИТСЯ ‘_2% 3’
Находит любые значения, которые имеют 2 во второй позиции и заканчиваются на 3
Где заработная плата, как «2___3»
Находит любые значения в пятизначном числе, которые начинаются с 2 и заканчиваются на 3
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который будет отображать все записи из таблицы CUSTOMERS, где SALARY начинается с 200.
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';
Приведенная выше команда выдаст следующий вывод.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 3 kaushik 23 Kota 2000.00
T-SQL — предложение ORDER BY
Предложение MS SQL Server ORDER BY используется для сортировки данных в порядке возрастания или убывания на основе одного или нескольких столбцов. В некоторых запросах на сортировку базы данных по умолчанию в порядке возрастания.
Синтаксис
Ниже приведен основной синтаксис предложения ORDER BY.
SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];
Вы можете использовать более одного столбца в предложении ORDER BY. Убедитесь, что любой столбец, который вы используете для сортировки, должен быть в списке столбцов.
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который сортирует результат в порядке возрастания по ИМЯ и ЗАПИСЬ.
SELECT * FROM CUSTOMERS ORDER BY NAME, SALARY
Приведенная выше команда выдаст следующий вывод.
ID NAME AGE ADDRESS SALARY 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 3 kaushik 23 Kota 2000.00 2 Khilan 25 Delhi 1500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00 1 Ramesh 32 Ahmedabad 2000.00
Следующая команда является примером, который сортирует результат в порядке убывания по ИМЯ.
SELECT * FROM CUSTOMERS ORDER BY NAME DESC
Приведенная выше команда даст следующий результат —
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 7 Muffy 24 Indore 10000.00 6 Komal 22 MP 4500.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 5 Hardik 27 Bhopal 8500.00 4 Chaitali 25 Mumbai 6500.00
T-SQL — предложение GROUP BY
Предложение SQL Server GROUP BY используется совместно с оператором SELECT для организации идентичных данных в группы.
Предложение GROUP BY следует за предложением WHERE в инструкции SELECT и предшествует предложению ORDER BY.
Синтаксис
Ниже приведен основной синтаксис предложения GROUP BY. Предложение GROUP BY должно соответствовать условиям в предложении WHERE и должно предшествовать предложению ORDER BY, если оно используется.
SELECT column1, column2 FROM table_name WHERE [ conditions ] GROUP BY column1, column2 ORDER BY column1, column2
пример
Предположим, что таблица CUSTOMERS содержит следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Если вы хотите узнать общую сумму заработной платы по каждому клиенту, то следующим будет запрос GROUP BY.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS GROUP BY NAME;
Приведенная выше команда выдаст следующий вывод.
NAME sum of salary Chaitali 6500.00 Hardik 8500.00 kaushik 2000.00 Khilan 1500.00 Komal 4500.00 Muffy 10000.00 Ramesh 2000.00
Давайте теперь рассмотрим следующую таблицу CUSTOMERS, имеющую следующие записи с повторяющимися именами.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Если мы хотим узнать общую сумму заработной платы по каждому клиенту, то следующим будет запрос GROUP BY.
SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS GROUP BY NAME
Приведенная выше команда выдаст следующий вывод.
NAME sum of salary Hardik 8500.00 kaushik 8500.00 Komal 4500.00 Muffy 10000.00 Ramesh 3500.00
T-SQL — предложение DISTINCT
Ключевое слово DISTINCT для MS SQL Server используется вместе с оператором SELECT, чтобы исключить все дублирующиеся записи и извлечь только уникальные записи.
Может возникнуть ситуация, когда в таблице несколько повторяющихся записей. При получении таких записей имеет смысл выбирать только уникальные записи, а не дублировать записи.
Синтаксис
Ниже приведен основной синтаксис ключевого слова DISTINCT для устранения дублирующихся записей.
SELECT DISTINCT column1, column2,.....columnN FROM table_name WHERE [condition]
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Давайте посмотрим, как следующий запрос SELECT возвращает дубликаты записей заработной платы.
SELECT SALARY FROM CUSTOMERS
ORDER BY SALARY
Приведенная выше команда выдаст следующий вывод, где зарплата 2000 появляется дважды, что является дубликатом записи из исходной таблицы.
SALARY 1500.00 2000.00 2000.00 4500.00 6500.00 8500.00 10000.00
Давайте теперь используем ключевое слово DISTINCT с вышеупомянутым запросом SELECT и посмотрим результат.
SELECT DISTINCT SALARY FROM CUSTOMERS
ORDER BY SALARY
Приведенная выше команда производит следующий вывод, где у нас нет повторяющихся записей.
SALARY 1500.00 2000.00 4500.00 6500.00 8500.00 10000.00
T-SQL — Соединение таблиц
Предложение MS SQL Server Joins используется для объединения записей из двух или более таблиц в базе данных. JOIN — это средство для объединения полей из двух таблиц с использованием значений, общих для каждой.
Рассмотрим следующие две таблицы: (а) таблица CUSTOMERS выглядит следующим образом —
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
(б) Другая таблица — это ЗАКАЗЫ в следующем порядке:
OID DATE CUSTOMER_ID AMOUNT 100 2009-10-08 00:00:00.000 3 1500.00 101 2009-11-20 00:00:00.000 2 1560.00 102 2009-10-08 00:00:00.000 3 3000.00 103 2008-05-20 00:00:00.000 4 2060.00
Давайте объединим эти две таблицы в нашем операторе SELECT следующим образом:
SELECT ID, NAME, AGE, AMOUNT FROM CUSTOMERS, ORDERS WHERE CUSTOMERS.ID = ORDERS.CUSTOMER_ID OR SELECT A.ID, A.NAME, A.AGE, B.AMOUNT FROM CUSTOMERS A inner join ORDERS B on A.ID = B.Customer_ID
Приведенная выше команда выдаст следующий вывод.
ID NAME AGE AMOUNT 2 Khilan 25 1560.00 3 kaushik 23 1500.00 3 kaushik 23 3000.00 4 Chaitali 25 2060.00
Заметно, что соединение выполняется в предложении WHERE. Для объединения таблиц можно использовать несколько операторов, например =, <,>, <>, <=,> =,! =, BETWEEN, LIKE и NOT; все они могут быть использованы для объединения таблиц. Однако наиболее распространенным оператором является символ равенства.
MS SQL Server Типы соединения —
В MS SQL Server доступны разные типы объединений —
-
INNER JOIN — возвращает строки, если в обеих таблицах есть совпадение.
-
LEFT JOIN — возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
-
RIGHT JOIN — возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
-
FULL JOIN — возвращает строки, если в одной из таблиц есть совпадение.
-
SELF JOIN — используется для соединения таблицы с самим собой, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе MS SQL Server.
-
CARTESIAN JOIN — Возвращает декартово произведение наборов записей из двух или более объединенных таблиц.
INNER JOIN — возвращает строки, если в обеих таблицах есть совпадение.
LEFT JOIN — возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
RIGHT JOIN — возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
FULL JOIN — возвращает строки, если в одной из таблиц есть совпадение.
SELF JOIN — используется для соединения таблицы с самим собой, как если бы эта таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе MS SQL Server.
CARTESIAN JOIN — Возвращает декартово произведение наборов записей из двух или более объединенных таблиц.
T-SQL — подзапросы
Подзапрос или Внутренний запрос или Вложенный запрос — это запрос в другом запросе SQL Server, встроенный в предложение WHERE. Подзапрос используется для возврата данных, которые будут использоваться в основном запросе в качестве условия для дальнейшего ограничения данных, подлежащих извлечению.
Подзапросы могут использоваться с операторами SELECT, INSERT, UPDATE и DELETE вместе с такими операторами, как =, <,>,> =, <=, IN, BETWEEN и т. Д.
Есть несколько правил, которым должны следовать подзапросы:
-
Вы должны заключить подзапрос в скобки.
-
Подзапрос должен включать в себя предложение SELECT и предложение FROM.
-
Подзапрос может включать необязательные предложения WHERE, GROUP BY и HAVING.
-
Подзапрос не может включать предложения COMPUTE или FOR BROWSE.
-
Вы можете включить предложение ORDER BY, только если включено предложение TOP.
-
Вы можете вкладывать подзапросы до 32 уровней.
Вы должны заключить подзапрос в скобки.
Подзапрос должен включать в себя предложение SELECT и предложение FROM.
Подзапрос может включать необязательные предложения WHERE, GROUP BY и HAVING.
Подзапрос не может включать предложения COMPUTE или FOR BROWSE.
Вы можете включить предложение ORDER BY, только если включено предложение TOP.
Вы можете вкладывать подзапросы до 32 уровней.
Подзапросы с оператором SELECT
Синтаксис
Подзапросы чаще всего используются с оператором SELECT. Ниже приведен основной синтаксис.
SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR (SELECT column_name [, column_name ] FROM table1 [, table2 ] [WHERE])
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Давайте применим следующий подзапрос с оператором SELECT.
SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
Приведенная выше команда выдаст следующий вывод.
ID NAME AGE ADDRESS SALARY 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 7 Muffy 24 Indore 10000.00
Подзапросы с оператором INSERT
Подзапросы также могут использоваться с операторами INSERT. Оператор INSERT использует данные, возвращенные из подзапроса, для вставки в другую таблицу. Выбранные данные в подзапросе могут быть изменены с помощью любой символьной, даты или числовой функции.
Синтаксис
Ниже приведен основной синтаксис.
INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]
пример
Рассмотрим таблицу CUSTOMERS_BKP с такой же структурой, что и таблица CUSTOMERS. Ниже приведен синтаксис для копирования полной таблицы CUSTOMERS в CUSTOMERS_BKP.
INSERT INTO CUSTOMERS_BKP SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS)
Подзапросы с оператором UPDATE
Подзапрос может использоваться вместе с оператором UPDATE. Можно использовать один или несколько столбцов в таблице при использовании подзапроса с оператором UPDATE.
Синтаксис
Ниже приведен основной синтаксис.
UPDATE table SET column_name = new_value [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
пример
Предположим, у нас есть таблица CUSTOMERS_BKP, которая является резервной копией таблицы CUSTOMERS.
Следующий пример команды обновляет SALARY в таблице CUSTOMERS в 0,25 раза для всех клиентов, чей возраст больше или равен 27.
UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )
Это повлияет на две строки, и, наконец, таблица CUSTOMERS будет иметь следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 500.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 2125.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Подзапросы с оператором DELETE
Подзапрос может использоваться вместе с оператором DELETE, как и любые другие операторы, упомянутые выше.
Синтаксис
Ниже приведен основной синтаксис.
DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
пример
Предположим, у нас есть таблица CUSTOMERS_BKP, которая является резервной копией таблицы CUSTOMERS.
В следующем примере команды удаляются записи из таблицы CUSTOMERS для всех клиентов, чей возраст больше или равен 27.
DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )
Это повлияет на две строки, и, наконец, таблица CUSTOMERS будет иметь следующие записи.
ID NAME AGE ADDRESS SALARY 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
T-SQL — хранимые процедуры
Хранимая процедура MS SQL Server используется для экономии времени на написание кода снова и снова путем его сохранения в базе данных, а также для получения требуемого результата путем передачи параметров.
Синтаксис
Ниже приведен основной синтаксис создания хранимой процедуры.
Create procedure <procedure_Name> As Begin <SQL Statement> End Go
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующая команда является примером, который извлекает все записи из таблицы CUSTOMERS в базе данных Testdb.
CREATE PROCEDURE SelectCustomerstabledata AS SELECT * FROM Testdb.Customers GO
Приведенная выше команда выдаст следующий вывод.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
T-SQL — Транзакции
Транзакция — это единица работы, выполняемая с базой данных. Транзакции — это единицы или последовательности работы, выполняемые в логическом порядке, либо вручную пользователем, либо автоматически какой-либо программой базы данных.
Транзакция — это распространение одного или нескольких изменений в базе данных. Например, если вы создаете запись или обновляете запись, или удаляете запись из таблицы, то вы выполняете транзакцию для таблицы. Важно контролировать транзакции для обеспечения целостности данных и обработки ошибок базы данных.
Практически вы объедините множество SQL-запросов в группу и выполните все их вместе как часть транзакции.
Свойства сделок
Транзакции имеют следующие четыре стандартных свойства, обычно обозначаемых аббревиатурой ACID —
-
Атомарность — гарантирует, что все операции внутри рабочего блока успешно завершены; в противном случае транзакция прерывается в точке сбоя, а предыдущие операции возвращаются в прежнее состояние.
-
Согласованность — Гарантирует, что база данных корректно меняет состояние после успешно принятой транзакции.
-
Изоляция — позволяет транзакциям работать независимо друг от друга и быть прозрачными друг для друга.
-
Долговечность — Гарантирует, что результат или результат совершенной транзакции сохраняется в случае сбоя системы.
Атомарность — гарантирует, что все операции внутри рабочего блока успешно завершены; в противном случае транзакция прерывается в точке сбоя, а предыдущие операции возвращаются в прежнее состояние.
Согласованность — Гарантирует, что база данных корректно меняет состояние после успешно принятой транзакции.
Изоляция — позволяет транзакциям работать независимо друг от друга и быть прозрачными друг для друга.
Долговечность — Гарантирует, что результат или результат совершенной транзакции сохраняется в случае сбоя системы.
Контроль транзакций
Для управления транзакциями используются следующие команды:
-
COMMIT — сохранить изменения.
-
ROLLBACK — откат изменений.
-
SAVEPOINT — Создает точки в группах транзакций, в которых выполняется ROLLBACK.
-
SET TRANSACTION — помещает имя в транзакцию.
COMMIT — сохранить изменения.
ROLLBACK — откат изменений.
SAVEPOINT — Создает точки в группах транзакций, в которых выполняется ROLLBACK.
SET TRANSACTION — помещает имя в транзакцию.
Команды управления транзакциями используются только с командами DML INSERT, UPDATE и DELETE. Их нельзя использовать при создании таблиц или их удалении, поскольку эти операции автоматически фиксируются в базе данных.
Чтобы использовать команды управления транзакциями в MS SQL Server, мы должны начинать транзакцию с команды ‘begin trans’ или начинать транзакцию, в противном случае эти команды не будут работать.
Команда COMMIT
Команда COMMIT — это команда транзакций, используемая для сохранения изменений, вызванных транзакцией, в базу данных. Эта команда сохраняет все транзакции в базе данных с момента последней команды COMMIT или ROLLBACK.
Синтаксис
Ниже приведен синтаксис команды COMMIT.
COMMIT;
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
В следующем примере команды удаляются записи из таблицы, имеющие возраст = 25, а затем фиксируются изменения в базе данных.
Begin Tran DELETE FROM CUSTOMERS WHERE AGE = 25 COMMIT
В результате две строки из таблицы будут удалены, и инструкция SELECT выдаст следующий результат.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 3 kaushik 23 Kota 2000.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Команда ROLLBACK
Команда ROLLBACK — это команда транзакций, используемая для отмены транзакций, которые еще не были сохранены в базе данных. Эта команда может использоваться только для отмены транзакций с момента выполнения последней команды COMMIT или ROLLBACK.
Синтаксис
Ниже приведен синтаксис команды ROLLBACK.
ROLLBACK
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Следующий пример команды удалит записи из таблицы, имеющие возраст = 25, а затем откатит изменения в базе данных.
Begin Tran DELETE FROM CUSTOMERS WHERE AGE = 25; ROLLBACK
В результате операция удаления не повлияет на таблицу, а инструкция SELECT выдаст следующий результат.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Команда SAVEPOINT
SAVEPOINT — это точка в транзакции, когда вы можете откатить транзакцию до определенной точки без отката всей транзакции.
Синтаксис
Ниже приведен синтаксис команды SAVEPOINT.
SAVE TRANSACTION SAVEPOINT_NAME
Эта команда служит только для создания SAVEPOINT среди операторов транзакций. Команда ROLLBACK используется для отмены группы транзакций.
Ниже приведен синтаксис отката к SAVEPOINT.
ROLLBACK TO SAVEPOINT_NAME
В следующем примере мы удалим три разные записи из таблицы CUSTOMERS. Нам придется создавать SAVEPOINT перед каждым удалением, чтобы мы могли в любой момент выполнить ROLLBACK для любого SAVEPOINT, чтобы вернуть соответствующие данные в исходное состояние.
пример
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи:
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Ниже приводится серия операций —
Begin Tran SAVE Transaction SP1 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 1 1 row deleted. SAVE Transaction SP2 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 2 1 row deleted. SAVE Transaction SP3 Savepoint created. DELETE FROM CUSTOMERS WHERE ID = 3 1 row deleted.
Три удаления уже произошли, однако мы передумали и решили откатиться к SAVEPOINT, которую мы определили как SP2. Поскольку SP2 был создан после первого удаления, последние два удаления отменены —
ROLLBACK Transaction SP2 Rollback complete.
Обратите внимание, что произошло только первое удаление, так как мы вернулись к SP2.
SELECT * FROM CUSTOMERS
6 строк выбрано.
ID NAME AGE ADDRESS SALARY 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Команда SET TRANSACTION
Команда SET TRANSACTION может использоваться для запуска транзакции базы данных. Эта команда используется для указания признаков для следующей транзакции.
Синтаксис
Ниже приводится синтаксис для SET TRANSACTION.
SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>
T-SQL — индексы
Индексы — это специальные таблицы поиска, которые поисковая система базы данных может использовать для ускорения поиска данных. Проще говоря, индекс — это указатель на данные в таблице. Индекс в базе данных очень похож на индекс в конце книги.
Например, если вы хотите сослаться на все страницы в книге, в которых обсуждается определенная тема, вы сначала обращаетесь к индексу, который перечисляет все темы в алфавитном порядке, а затем ссылается на один или несколько конкретных номеров страниц.
Индекс помогает ускорить запросы SELECT и предложения WHERE, но замедляет ввод данных с помощью операторов UPDATE и INSERT. Индексы могут быть созданы или удалены без влияния на данные.
Создание индекса включает в себя инструкцию CREATE INDEX, которая позволяет указать имя индекса, указать таблицу и столбец или столбцы для индексации и указать, находится ли индекс в порядке возрастания или убывания.
Индексы также могут быть уникальными, подобно ограничению UNIQUE, в том смысле, что индекс предотвращает дублирование записей в столбце или комбинации столбцов, для которых существует индекс.
Команда CREATE INDEX
Ниже приведен основной синтаксис CREATE INDEX.
Синтаксис
CREATE INDEX index_name ON table_name
Одноколонные индексы
Индекс с одним столбцом — это индекс, который создается на основе только одного столбца таблицы. Ниже приведен основной синтаксис.
Синтаксис
CREATE INDEX index_name ON table_name (column_name)
пример
CREATE INDEX singlecolumnindex ON customers (ID)
Уникальные индексы
Уникальные индексы используются не только для производительности, но и для целостности данных. Уникальный индекс не позволяет вставлять повторяющиеся значения в таблицу. Ниже приведен основной синтаксис.
Синтаксис
CREATE UNIQUE INDEX index_name on table_name (column_name)
пример
CREATE UNIQUE INDEX uniqueindex on customers (NAME)
Композитные индексы
Составной индекс — это индекс двух или более столбцов таблицы. Ниже приведен основной синтаксис.
Синтаксис
CREATE INDEX index_name on table_name (column1, column2)
пример
CREATE INDEX compositeindex on customers (NAME, ID)
Независимо от того, хотите ли вы создать индекс из одного столбца или составной индекс, примите во внимание столбцы, которые вы можете использовать очень часто в предложении WHERE запроса в качестве условий фильтра.
Если используется только один столбец, то должен быть выбран индекс из одного столбца. Если в предложении WHERE в качестве фильтров часто используются два или более столбца, наилучшим выбором будет составной индекс.
Неявные индексы
Неявные индексы — это индексы, которые автоматически создаются сервером базы данных при создании объекта. Индексы автоматически создаются для ограничений первичного ключа и уникальных ограничений.
Команда DROP INDEX
Индекс можно удалить с помощью команды MS SQL SERVER DROP. При отбрасывании индекса следует соблюдать осторожность, поскольку производительность может быть замедлена или улучшена.
Синтаксис
Ниже приведен основной синтаксис.
DROP INDEX tablename.index_name
Когда избегать индексов?
Хотя индексы предназначены для повышения производительности баз данных, бывают случаи, когда их следует избегать. Следующие рекомендации указывают, когда следует пересмотреть использование индекса:
-
Индексы не должны использоваться на маленьких столах.
-
Таблицы с частыми крупными пакетными обновлениями или операциями вставки не должны индексироваться.
-
Индексы не должны использоваться для столбцов, которые содержат большое количество значений NULL.
-
Столбцы, которыми часто манипулируют, не должны индексироваться.
Индексы не должны использоваться на маленьких столах.
Таблицы с частыми крупными пакетными обновлениями или операциями вставки не должны индексироваться.
Индексы не должны использоваться для столбцов, которые содержат большое количество значений NULL.
Столбцы, которыми часто манипулируют, не должны индексироваться.
T-SQL — Функции
MS SQL Server имеет много встроенных функций для выполнения обработки строковых или числовых данных. Ниже приведен список всех полезных встроенных функций SQL —
-
Функция СЧЕТА SQL Server — агрегатная функция СЧЕТА SQL Server используется для подсчета количества строк в таблице базы данных.
-
Функция SQL Server MAX — Функция агрегата SQL Server MAX позволяет выбрать максимальное (максимальное) значение для определенного столбца.
-
Функция SQL Server MIN — агрегатная функция SQL Server MIN позволяет выбрать минимальное (минимальное) значение для определенного столбца.
-
Функция SQL Server AVG — Функция агрегирования SQL Server AVG выбирает среднее значение для определенного столбца таблицы.
-
Функция SQL Server SUM — агрегатная функция SQL Server SUM позволяет выбрать итоговое значение для числового столбца.
-
Функция SQL Server SQRT — используется для создания квадратного корня из заданного числа.
-
Функция SQL Server RAND — используется для генерации случайного числа с помощью команды SQL.
-
Функция CONCAT для SQL Server — используется для объединения нескольких параметров в один параметр.
-
Числовые функции SQL Server — полный список функций SQL, необходимых для работы с числами в SQL.
-
Строковые функции SQL Server — полный список функций SQL, необходимых для работы со строками в SQL.
Функция СЧЕТА SQL Server — агрегатная функция СЧЕТА SQL Server используется для подсчета количества строк в таблице базы данных.
Функция SQL Server MAX — Функция агрегата SQL Server MAX позволяет выбрать максимальное (максимальное) значение для определенного столбца.
Функция SQL Server MIN — агрегатная функция SQL Server MIN позволяет выбрать минимальное (минимальное) значение для определенного столбца.
Функция SQL Server AVG — Функция агрегирования SQL Server AVG выбирает среднее значение для определенного столбца таблицы.
Функция SQL Server SUM — агрегатная функция SQL Server SUM позволяет выбрать итоговое значение для числового столбца.
Функция SQL Server SQRT — используется для создания квадратного корня из заданного числа.
Функция SQL Server RAND — используется для генерации случайного числа с помощью команды SQL.
Функция CONCAT для SQL Server — используется для объединения нескольких параметров в один параметр.
Числовые функции SQL Server — полный список функций SQL, необходимых для работы с числами в SQL.
Строковые функции SQL Server — полный список функций SQL, необходимых для работы со строками в SQL.
T-SQL — Строковые функции
Строковые функции MS SQL Server могут применяться к строковому значению или возвращать строковое значение или числовые данные.
Ниже приведен список функций String с примерами.
ASCII ()
Значение кода Ascii будет выводиться для символьного выражения.
пример
Следующий запрос даст значение кода Ascii для данного символа.
Select ASCII ('word')
СИМВОЛ ()
Символ будет выводиться для заданного кода или целого числа Ascii.
пример
Следующий запрос даст символ для данного целого числа.
Select CHAR(97)
NCHAR ()
Символ Unicode будет выводиться для данного целого числа.
пример
Следующий запрос даст символ Unicode для данного целого числа.
Select NCHAR(300)
CHARINDEX ()
Начальная позиция для заданного поискового выражения будет отображаться в заданном строковом выражении.
пример
Следующий запрос даст начальную позицию символа «G» для данного строкового выражения «KING».
Select CHARINDEX('G', 'KING')
ОСТАВИЛ()
Левая часть данной строки, пока указанное количество символов не будет выводиться для данной строки.
пример
Следующий запрос выдаст строку «WORL», как указано 4 числа символов для данной строки «WORLD».
Select LEFT('WORLD', 4)
ПРАВО()
Правая часть данной строки до тех пор, пока указанное количество символов не будет выводиться для данной строки.
пример
Следующий запрос выдаст строку ‘DIA’ как упомянутое количество символов для данной строки ‘INDIA’.
Select RIGHT('INDIA', 3)
SUBSTRING ()
Часть строки, основанная на значении начальной позиции и значении длины, будет выводиться для данной строки.
пример
Следующие запросы будут давать строки «WOR», «DIA», «ING», как мы упоминали (1,3), (3,3) и (2,3), в качестве значений начала и длины соответственно для данных строк «WORLD» , «Индия» и «Король».
Select SUBSTRING ('WORLD', 1,3) Select SUBSTRING ('INDIA', 3,3) Select SUBSTRING ('KING', 2,3)
LEN ()
Количество символов будет выводиться для данного строкового выражения.
пример
Следующий запрос даст 5 для строкового выражения ‘HELLO’.
Select LEN('HELLO')
НИЖНИЙ ()
Строчная строчная строка будет выводиться для данных данной строки.
пример
Следующий запрос выдаст «sqlserver» для символьных данных «SQLServer».
Select LOWER('SQLServer')
ВЕРХНИЙ ()
Прописная строка будет выводиться для данных данной строки.
пример
Следующий запрос выдаст SQLSERVER для символьных данных SqlServer.
Select UPPER('SqlServer')
LTRIM ()
Строковое выражение будет выводиться для заданных строковых данных после удаления начальных пробелов.
пример
Следующий запрос даст «МИР» для символьных данных «МИР».
Select LTRIM(' WORLD')
RTRIM ()
Строковое выражение будет выводиться для заданных строковых данных после удаления конечных пробелов.
пример
Следующий запрос даст «ИНДИЯ» для символьных данных «ИНДИЯ».
Select RTRIM('INDIA ')
REPLACE ()
Строковое выражение придет в качестве вывода для данных строковых данных после замены всех вхождений указанного символа указанным символом.
пример
Следующий запрос выдаст строку ‘KNDKA’ для данных строки ‘INDIA’.
Select REPLACE('INDIA', 'I', 'K')
REPLICATE ()
Повторное строковое выражение придет в качестве вывода для заданных строковых данных с указанным числом раз.
пример
Следующий запрос даст строку «WORLDWORLD» для данных строки «WORLD».
Select REPLICATE('WORLD', 2)
ЗАДНИЙ ХОД()
Обратное строковое выражение придет как выход для заданных строковых данных.
пример
Следующий запрос выдаст строку ‘DLROW’ для данных строки ‘WORLD’.
Select REVERSE('WORLD')
SOUNDEX ()
Возвращает четырехсимвольный код (SOUNDEX) для оценки сходства двух заданных строк.
пример
Следующий запрос даст ‘S530’ для строк ‘Smith’, ‘Smyth’.
Select SOUNDEX('Smith'), SOUNDEX('Smyth')
РАЗНИЦА ()
Целочисленное значение будет получено как результат заданных двух выражений.
пример
Следующий запрос даст 4 для выражений «Смит», «Смит».
Select Difference('Smith','Smyth')
Примечание. Если выходное значение равно 0, это указывает на слабое или полное отсутствие сходства между двумя выражениями.
ПРОСТРАНСТВО()
Строка будет выводиться с указанным количеством пробелов.
пример
Следующий запрос даст «Я люблю Индию».
Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'
ВЕЩЕСТВО ()
Строковое выражение придет в качестве вывода для данных строковых данных после замены начального символа до указанной длины указанным символом.
пример
Следующий запрос выдаст строку ‘AIJKFGH’ для данных строки ‘ABCDEFGH’ в соответствии с заданным начальным символом и длиной как 2 и 4 соответственно и ‘IJK’ в качестве указанной целевой строки.
Select STUFF('ABCDEFGH', 2,4,'IJK')
STR ()
Символьные данные поступят как выходные данные для данных числовых данных.
пример
Следующий запрос даст 187,37 для данного 187,369 на основе заданной длины как 6 и десятичной как 2.
Select STR(187.369,6,2)
UNICODE ()
Целочисленное значение придет как выход для первого символа данного выражения.
пример
Следующий запрос даст 82 для выражения ‘RAMA’.
Select UNICODE('RAMA')
QUOTENAME ()
Данная строка будет выводиться с указанным разделителем.
пример
Следующий запрос выдаст «RAMA» для данной строки «RAMA», так как мы указали двойную кавычку в качестве разделителя.
Select QUOTENAME('RAMA','"')
PATINDEX ()
Требуется начальная позиция первого вхождения из данного выражения, поскольку мы указали позицию «I».
пример
Следующий запрос даст 1 для «ИНДИИ».
Select PATINDEX('I%','INDIA')
ФОРМАТ()
Данное выражение будет выводиться в указанном формате.
пример
Следующий запрос даст «понедельник, 16 ноября 2015 г.» для функции getdate в соответствии с указанным форматом, где «D» обозначает название дня недели.
SELECT FORMAT ( getdate(), 'D')
CONCAT ()
Одна строка будет выводиться после объединения указанных значений параметров.
пример
Следующий запрос даст «A, B, C» для заданных параметров.
Select CONCAT('A',',','B',',','C')
T-SQL — функции даты
Ниже приведен список функций даты в MS SQL Server.
GETDATE ()
Он вернет текущую дату вместе со временем.
Синтаксис
Синтаксис для вышеуказанной функции —
GETDATE()
пример
Следующий запрос вернет текущую дату и время в MS SQL Server.
Select getdate() as currentdatetime
DATEPART ()
Он вернет часть даты или времени.
Синтаксис
Синтаксис для вышеуказанной функции —
DATEPART(datepart, datecolumnname)
пример
Пример 1. Следующий запрос вернет часть текущей даты в MS SQL Server.
Select datepart(day, getdate()) as currentdate
Пример 2. Следующий запрос вернет часть текущего месяца в MS SQL Server.
Select datepart(month, getdate()) as currentmonth
DATEADD ()
Он будет отображать дату и время путем сложения или вычитания даты и времени.
Синтаксис
Синтаксис для вышеуказанной функции —
DATEADD(datepart, number, datecolumnname)
пример
Следующий запрос вернет дату и время после 10 дней с текущей даты и времени в MS SQL Server.
Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime
DATEDIFF ()
Он будет отображать дату и время между двумя датами.
Синтаксис
Синтаксис для вышеуказанной функции —
DATEDIFF(datepart, startdate, enddate)
пример
Следующий запрос вернет разницу часов между 2015-11-16 и 2015-11-11 датами в MS SQL Server.
Select datediff(hour, 2015-11-16, 2015-11-11) as differencehoursbetween20151116and20151111
ПЕРЕРАБАТЫВАТЬ()
Он будет отображать дату и время в разных форматах.
Синтаксис
Синтаксис для вышеуказанной функции —
CONVERT(datatype, expression, style)
пример
Следующие запросы вернут дату и время в другом формате в MS SQL Server.
SELECT CONVERT(VARCHAR(19),GETDATE()) SELECT CONVERT(VARCHAR(10),GETDATE(),10) SELECT CONVERT(VARCHAR(10),GETDATE(),110)
T-SQL — Числовые функции
Числовые функции MS SQL Server могут быть применены к числовым данным и будут возвращать числовые данные.
Ниже приведен список числовых функций с примерами.
АБС ()
Абсолютное значение будет выходным для числового выражения.
пример
Следующий запрос даст абсолютное значение.
Select ABS(-22)
ACOS ()
Значение арккосинуса придет как выход для указанного числового выражения.
пример
Следующий запрос даст значение арккосинуса 0.
Select ACOS(0)
КАК В()
Значение синусоидальной дуги будет выводиться для указанного числового выражения.
пример
Следующий запрос даст значение арксинуса 0.
Select ASIN(0)
ЗАГАР()
Значение арктангенса будет выводиться для указанного числового выражения.
пример
Следующий запрос даст значение арктангенса 0.
Select ATAN(0)
ATN2 ()
Значение арктангенса во всех четырех квадрантах будет выводиться для указанного числового выражения.
пример
Следующий запрос даст значение арктангенса во всех четырех квадрантах 0.
Select ATN2(0, -1)
Рассмотрим таблицу CUSTOMERS, имеющую следующие записи.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
МЕЖДУ()
Если значения существуют между данными двумя выражениями, они будут получены в качестве выходных данных.
пример
Следующий запрос даст следующий вывод.
SELECT salary from customers where salary between 2000 and 8500
Выход
salary 2000.00 2000.00 6500.00 8500.00 4500.00
MIN ()
Минимальное значение придет как выход из данного выражения.
пример
Следующий запрос даст «1500,00» для данного выражения «зарплата» из таблицы клиентов.
Select MIN(salary)from CUSTOMERS
МАКСИМУМ()
Максимальное значение придет как выход из данного выражения.
пример
Следующий запрос выдаст «10000,00» для данного выражения «зарплата» из таблицы клиентов.
Select MAX(salary)from CUSTOMERS
SQRT ()
Квадратный корень данного числового выражения придет как выходной.
пример
Следующий запрос даст 2 для данного 4 числового выражения.
Select SQRT(4)
ЧИСЛО ПИ()
Значение PI придет как выходной.
пример
Следующий запрос даст 3.14159265358979 для значения PI.
Select PI()
ПОТОЛОК ()
Заданное значение будет получено как результат после округления десятичных дробей, которое является следующим самым высоким значением.
пример
Следующий запрос даст 124 для данного значения 123.25.
Select CEILING(123.25)
ЭТАЖ()
Заданное значение будет получено как результат после округления десятичных дробей, которые меньше или равны выражению.
пример
Следующий запрос даст 123 для данного значения 123.25.
Select FLOOR(123.25)
ЖУРНАЛ()
Натуральный логарифм данного выражения придет в качестве вывода.
пример
Следующий запрос даст 0 для данного 1 значения.