Учебники

T-SQL — Краткое руководство

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 значения.