T-SQL

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:30, 12 сентября 2018.
T-SQL
T SQL.PNG
Разработчики: Sybase,Microsoft
Выпущена: February 2014, 14 (14-02-2014)
Состояние разработки: Активное
Операционная система: Кроссплатформенность
Локализация: Английский язык
Тип ПО: Proprietary extension
Лицензия: патент
Веб-сайт www.microsoft.com

Transact-SQL ( T-SQL ) - это процедурное расширение Microsoft и Sybase для SQL (структурированный язык запросов), используемый для взаимодействия с реляционными базами данных . T-SQL расширяет стандарт SQL для включения процедурного программирования, локальных переменных , различных вспомогательных функций для обработки строк, обработки даты, математики, а также изменений в операторах DELETE и UPDATE [Источник 1] .

Transact-SQL занимает центральное место в использовании Microsoft SQL Server . Все приложения, которые обмениваются данными с экземпляром SQL Server, делают это путем отправки операторов Transact-SQL на сервер, независимо от пользовательского интерфейса приложения.

Хранимые процедуры в SQL Server - это исполняемые серверные процедуры. Преимуществом хранимых процедур является возможность передачи параметров.

Содержание

История

В 1970-х годах продукт под названием «SEQUEL», структурированный английский язык запросов, разработанный IBM, а затем SEQUEL был переименован в «SQL», который обозначает Structured Query Language[Источник 2] .

В 1986 году SQL был одобрен ANSI (Американским национальным институтом стандартов), а в 1987 году он был одобрен Международной организацией по стандартизации (ISO).

SQL - это язык запросов структуры, который является общим языком базы данных для всех продуктов RDBMS. Различные производители продуктов RDBMS разработали собственный язык баз данных, расширив SQL для своих продуктов RDBMS[Источник 3]..


Типы данных

Тип данных SQL Server - это атрибут, который задает типы данных любого объекта. Каждый столбец, переменная и выражение имеет связанный тип данных в SQL Server. Эти типы данных могут использоваться при создании таблиц. Вы можете выбрать конкретный тип данных для столбца таблицы на основе вашего требования.

SQL Server предлагает семь категорий, включая другую категорию типов данных для использования.[Источник 4]

Точные числовые типы
Тип От До
bigint -9,223,372,036,854,775,808 9,223,372,036,854,775,807
smallint -32,768 32,768
tinyint 0 255
bit 0 1
decimal -10^38 +1 10^38 –1
numeric -10^38 +1 10^38 -1
money -922,337,203,685,477.5808 +922,337,203,685,477.5807
smallmoney -214,748.3648 +214,748.3647


Числовые и десятичные - это фиксированные типы точности и масштаба, которые являются функционально эквивалентными.


Приблизительные числовые типы
Тип От До
Float -1.79E + 308 1.79E + 308
Real -3.40E + 38 3.40E + 38


Типы даты и времени
Тип От До
datetime(точность 3,33 миллисекунды) 1 января 1753 г. 31 декабря, 9999
smalldatetime(точность 1 минута) 1 января 1900 года 6 июня, 2079
date(точность на 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
time(точность 100 наносекунд. Представлена ​​в SQL Server 2008 ) 00: 00: 00,0000000 23: 59: 59,9999999

Другие типы данных

  • sql_variant - Сохраняет значения различных типов данных, поддерживаемых SQL Server, за исключением текста, ntext и timestamp.
  • timestamp - Сохраняет уникальный номер базы данных, который обновляется каждый раз, когда строка обновляется.
  • uniqueidentifier - хранит глобально уникальный идентификатор (GUID).
  • xml - Хранит данные XML. Вы можете хранить экземпляры XML в столбце или переменной (Представлено в SQL Server 2005).
  • cursor - Ссылка на курсор.
  • table - Сохраняет набор результатов для последующей обработки.
  • hierarchyid - переменная длина, системный тип данных, используемый для представления позиции в иерархии (введен в SQL Server 2008).

Cоздание таблиц

Создание базовой таблицы включает в себя именование таблицы и определение ее столбцов и типа данных каждого столбца. Оператор 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 с идентификатором в качестве первичного ключа, а 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 доступна в вашей базе данных, которую вы можете использовать для хранения необходимой информации, связанной с клиентами.

Удаление

Оператор SQL Server DROP TABLE используется для удаления определения таблицы и всех данных, индексов, триггеров, ограничений и спецификаций разрешений для этой таблицы.

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

Синтаксис

Ниже приведен основной синтаксис оператора 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

INSERT

Оператор SQL Server INSERT INTO используется для добавления новых строк данных в таблицу в базе данных.

Синтаксис

Ниже приведены два основных синтаксиса инструкции 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];

Инструкция 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, Name и Salary для клиентов, доступных в таблице 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

Инструкция UPDATE

SQL UPDATE Query используется для изменения существующих записей в таблице.

Вы можете использовать предложение WHERE с запросом UPDATE для обновления выбранных строк, иначе все строки будут затронуты.

Синтаксис

Ниже приведен основной синтаксис запроса UPDATE с предложением WHERE


UPDATE table_name 
SET column1 = value1, column2 = value2...., columnN = valueN 
WHERE [condition];

Вы можете комбинировать N количество условий с помощью операторов AND или OR.

Пример

Рассмотрим таблицу 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

Следующей командой является пример, который обновит ADDRESS для клиента с идентификатором 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 будет следующим:

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

Инструкция DELETE

SQL DELETE Query используется для удаления существующих записей из таблицы.

Вы должны использовать предложение WHERE с запросом DELETE для удаления выбранных строк, иначе все записи будут удалены.

Синтаксис

Ниже приведен основной синтаксис запроса DELETE с предложением WHERE

DELETE FROM table_name 
WHERE [condition];

Вы можете комбинировать N количество условий с помощью операторов AND или OR.

Пример

Рассмотрим таблицу 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 будет выглядеть следующим образом:

DELETE FROM CUSTOMERS;

Таблица CUSTOMERS теперь не будет иметь никакой записи.

Условие WHERE

Условие WHERE в MS SQL Server используется для указания условия при извлечении данных из одной таблицы или присоединения к нескольким таблицам.

Если заданное условие выполняется, только тогда оно возвращает определенное значение из таблицы. Вам нужно будет использовать предложение 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, Name и Salary из таблицы CUSTOMERS для клиента с именем «Hardik». Важно отметить, что все строки должны быть указаны внутри одинарных кавычек (), тогда как числовые значения должны указываться без каких-либо котировок, как в приведенном выше примере

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE NAME = 'Hardik';

Вышеуказанная команда выдаст следующий результат.

ID  NAME     SALARY 
5   Hardik   8500.00

Условие LIKE

Условие LIKE MS SQL Server используется для сравнения значения с аналогичными значениями с помощью подстановочных операторов. В сочетании с оператором 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 количество условий с помощью операторов AND или OR. XXXX может быть любым числовым или строковым значением.

Пример

Ниже приведен ряд примеров, показывающих, что часть WHERE имеет разные предложения LIKE с операторами «%» и «_».

Типы даты и времени
Sr.No Запрос и описание Описание
1 WHERE SALARY LIKE '200%' Находит любые значения, начинающиеся с 200
2 WHERE SALARY LIKE '%200%' Находит любые значения, которые имеют 200 в любом положении
3 WHERE SALARY LIKE '_00%' Находит любые значения, которые имеют 00 во второй и третьей позициях
4 WHERE SALARY LIKE '2_%_%' Находит любые значения, начинающиеся с 2 и длиной не менее 3 символов
5 WHERE SALARY LIKE '%2' Находит любые значения, заканчивающиеся на 2
6 WHERE SALARY LIKE '_2%3' Находит любые значения, которые имеют 2 во второй позиции и заканчиваются 3
7 WHERE SALARY LIKE '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

Условие ORDER BY

Условие 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

Следующая команда - пример, который сортирует результат в порядке возрастания по NAME и SALARY.


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

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

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

Условие GROUP BY

Условие 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

Если мы хотим узнать общую сумму зарплаты для каждого клиента, то следующим будет запрос 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

Условие DISTINCT

Ключевое слово MS SQL Server DISTINCT используется совместно с оператором 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

Объединение таблиц

Условие Joins используется для объединения записей из двух или более таблиц в базе данных. JOIN - это средство для объединения полей из двух таблиц с использованием значений, общих для каждого.

Рассмотрим следующие две таблицы: (a) Таблица 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

(b) Другая таблица - ЗАКАЗЫ:

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. Для объединения таблиц можно использовать несколько операторов, таких как:,,,,,,,,, все они могут использоваться для объединения таблиц. Однако наиболее распространенным оператором является символ равенства.

Типы соединений MS SQL Server -

В MS SQL Server существуют различные типы соединений,

  • INNER JOIN - возвращает строки, когда в обеих таблицах есть совпадение.
  • LEFT JOIN - возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.
  • RIGHT JOIN - возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.
  • FULL JOIN - Возвращает строки, когда есть совпадение в одной из таблиц.
  • SELF JOIN. Используется для присоединения к таблице, как если бы таблица была двумя таблицами, временно переименовав хотя бы одну таблицу в выражении MS SQL Server.
  • CARTESIAN JOIN - Возвращает декартово произведение наборов записей из двух или более объединенных таблиц.

Вложенный запрос

Подзапрос или внутренний запрос или вложенный запрос является запросом в другом запросе SQL Server и заливал в ИНЕКЕ. Подзапрос используется для возврата данных, которые будут использоваться в основном запросе, в качестве условия для дальнейшего ограничения данных, которые будут извлечены.

Sub-запросы могут использоваться с операторами SELECT, INSERT, UPDATE и DELETE вместе с операторами типа =, <,>,> =, <=, IN, BETWEEN и т. Д.

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

  • Вы должны заключить подзапрос в скобках.
  • Подзапрос должен включать предложение SELECT и предложение FROM.
  • Подзапрос может включать необязательные предложения WHERE, GROUP BY и HAVING.
  • Подзапрос не может включать предложения COMPUTE или FOR BROW.
  • Вы можете включить предложение 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

Sub-запросы также могут использоваться с операторами 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 в 0,25 раза в таблице CUSTOMERS для всех клиентов, AGE которых больше или равно 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 для всех клиентов, AGE которых больше или равно 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

Хранимая процедура

Хранимая процедура 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

Транзакции

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

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

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

Свойства транзакций

Транзакции имеют следующие четыре стандартных свойства, обычно называемые аббревиатурой ACID -

  • Atomicity - Обеспечивает успешное завершение всех операций в рабочем модуле; в противном случае транзакция прерывается в момент сбоя, а предыдущие операции возвращаются в прежнее состояние.
  • Согласованность. Обеспечивает правильное изменение базы данных при успешной транзакции.
  • Изоляция. Позволяет транзакциям работать независимо друг от друга и прозрачно.
  • Долговечность. Обеспечивает, чтобы результат или эффект совершенной транзакции сохранялся в случае сбоя системы.

Управление транзакциями

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

  • COMMIT - сохранение изменений.
  • ROLLBACK - отменить изменения.
  • SAVEPOINT - создает точки в группах транзакций, в которых ROLLBACK.
  • SET TRANSACTION - помещает имя в транзакцию.

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

Чтобы использовать транзакционные команды управления в MS SQL Server, мы должны начать транзакцию с «begin tran» или начать команду транзакции, иначе эти команды не будут работать.

Команда 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, а затем COMMIT изменения в базе данных.

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, а затем ROLLBACK изменения в базе данных.

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.


Эти три удаления произошли, однако мы передумали и решили использовать ROLLBACK для 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 ISOLATION LEVEL <Isolationlevel_name>

Индексы

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

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

Индекс помогает ускорить запросы 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.
  • Столбцы, которые часто обрабатываются, не должны индексироваться.

Вывод

В ходе данной работы были рассмотрены основные особенности Transact-SQL, а также была продемонстрирована работа основных операторов и изучены типы данных. Был продемонстрирован процесс создания простой базы данных с помощью T-SQL.

На основе проделанной работы можно сделать вывод о том, что Transact-SQL, в отличии от SQL, имеет дополнительные возможности такие как:

  • управляющие операторы,
  • локальные и глобальные переменные,
  • различные дополнительные функции для обработки строк, дат, математики и т. п.,
  • поддержка аутентификации Microsoft Windows.

Весь этот функционал дает обширные возможности для разработчиков.

Источники

  1. "T-SQL" [2012—2017]. Дата обновления: 22.03.2017. https://ru.wikipedia.org/wiki/Transact-SQL(дата обращения: 21.05.2018)
  2. "Справочник по Transact-SQL" [2012—2017]. Дата обновления: 22.03.2017. https://docs.microsoft.com/ru-ru/sql/t-sql/language-reference?view=sql-server-2017 (дата обращения: 21.05.2018).
  3. Основы T-SQL [Электронный ресурс] — Дата обращения: 20.05.2018. Режим доступа: https://habr.com/post/149235/
  4. "Руководство по MS SQL Server 2017 " [2012—2017]. Дата обновления: 22.03.2017. https://metanit.com/sql/sqlserver/(дата обращения: 21.05.2018).