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

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

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

SQL - это язык структурных запросов, который является общим языком баз данных для всех продуктов СУБД. Различные поставщики продуктов РСУБД разработали свой собственный язык баз данных, расширив SQL для своих собственных продуктов РСУБД.

T-SQL расшифровывается как Transact Structure Query Language, который является продуктом Microsoft и является расширением языка SQL.

пример

Сервер MS SQL - SQL \ T-SQL

ORACLE - SQL \ PL-SQL

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

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

Точные числовые типы

Тип Из Чтобы
Bigint -9 223 372 036 854 775 808 9 223 372 036 854 775 807
int -2 147 483 648 2 147 483 647
Smallint -32 768 32 767
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 миллисекунды)

01 янв. 1753 г. 31 декабря 9999 г.

smalldatetime(Точность 1 минута)

01 янв.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

Строки символов

Старший Нет Тип и описание
1

char

Символьные данные фиксированной длины, не относящиеся к Unicode, с максимальной длиной 8000 символов.

2

varchar

Данные переменной длины в формате, отличном от Unicode, до 8000 символов.

3

Varchar (max)

Данные переменной длины не в формате Unicode с максимальной длиной 231 символ (введено в SQL Server 2005).

4

text

Данные переменной длины не в Юникоде с максимальной длиной 2 147 483 647 символов

Строки символов Юникода

Старший Нет Тип и описание
1

nchar

Данные Unicode фиксированной длины с максимальной длиной 4000 символов.

2

nvarchar

Данные Unicode переменной длины с максимальной длиной 4000 символов.

3

Nvarchar (max)

Данные Unicode переменной длины с максимальной длиной 2 30 символов (введено в SQL Server 2005).

4

ntext

Данные Unicode переменной длины с максимальной длиной 1 073 741 823 символа.

Двоичные строки

Старший Нет Тип и описание
1

binary

Двоичные данные фиксированной длины с максимальной длиной 8000 байт.

2

varbinary

Двоичные данные переменной длины с максимальной длиной 8000 байт.

3

varbinary(max)

Двоичные данные переменной длины с максимальной длиной 2 31 байта (введены в SQL Server 2005).

4

image

Двоичные данные переменной длины с максимальной длиной 2 147 483 647 байт.

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

  • sql_variant - Хранит значения различных типов данных, поддерживаемых SQL Server, кроме текста, ntext и отметки времени.

  • timestamp - Хранит уникальный номер для всей базы данных, который обновляется каждый раз при обновлении строки.

  • uniqueidentifier - Хранит глобальный уникальный идентификатор (GUID).

  • xml- Хранит данные XML. Вы можете хранить экземпляры XML в столбце или переменной (введено в SQL Server 2005).

  • cursor - Ссылка на курсор.

  • table - Сохраняет набор результатов для последующей обработки.

  • hierarchyid - Системный тип данных переменной длины, используемый для представления позиции в иерархии (введено в SQL Server 2008).

Создание базовой таблицы включает в себя присвоение имени таблице и определение ее столбцов и типа данных каждого столбца.

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

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

Синтаксис

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

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];

SQL Server SELECTОператор используется для извлечения данных из таблицы базы данных, которая возвращает данные в виде таблицы результатов. Эти таблицы результатов называютсяresult-sets.

Синтаксис

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

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

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 будет следующим:

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

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 будет следующим:

DELETE FROM CUSTOMERS;

В таблице CUSTOMERS теперь не будет записей.

Сервер MS SQL 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, Name и Salary из таблицы CUSTOMERS для клиента с именем Hardik. Важно отметить, что все строки должны быть заключены в одинарные кавычки (''), тогда как числовые значения должны быть указаны без кавычек, как в приведенном выше примере:

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

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

ID  NAME     SALARY 
5   Hardik   8500.00

Сервер MS SQL 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 с операторами '%' и '_'.

Старший Нет Заявление и описание
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

Сервер MS SQL 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

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

Сервер MS SQL 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

Сервер MS SQL 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. Для объединения таблиц можно использовать несколько операторов, например =, <,>, <>, <=,> =,! =, BETWEEN, LIKE и NOT; все они могут использоваться для объединения таблиц. Однако наиболее распространенным оператором является символ равенства.

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

В MS SQL Server доступны различные типы объединений -

  • INNER JOIN - Возвращает строки при совпадении в обеих таблицах.

  • LEFT JOIN - Возвращает все строки из левой таблицы, даже если в правой таблице нет совпадений.

  • RIGHT JOIN - Возвращает все строки из правой таблицы, даже если в левой таблице нет совпадений.

  • FULL JOIN - Возвращает строки при совпадении в одной из таблиц.

  • SELF JOIN - Используется для присоединения таблицы к самой себе, как если бы таблица была двумя таблицами, временно переименовывая хотя бы одну таблицу в операторе MS SQL Server.

  • CARTESIAN JOIN - Возвращает декартово произведение наборов записей из двух или более объединенных таблиц.

А sub-query или же Inner query или же Nested queryявляется запросом в другом запросе SQL Server и встроенным в предложение WHERE. Подзапрос используется для возврата данных, которые будут использоваться в основном запросе в качестве условия для дальнейшего ограничения извлекаемых данных.

Подзапросы можно использовать с операторами SELECT, INSERT, UPDATE и DELETE вместе с такими операторами, как =, <,>,> =, <=, IN, BETWEEN и т. Д.

Есть несколько правил, которым должны следовать подзапросы:

  • Вы должны заключить подзапрос в круглые скобки.

  • Подзапрос должен включать предложение 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

Сервер MS SQL Stored procedure используется для экономии времени на написание кода снова и снова, сохраняя его в базе данных, а также для получения требуемого вывода путем передачи параметров.

Синтаксис

Ниже приведен основной синтаксис создания хранимой процедуры.

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

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

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

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

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

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

  • Atomicity- Гарантирует, что все операции в рамках единицы работы завершены успешно; в противном случае транзакция прерывается в момент сбоя, а предыдущие операции возвращаются в исходное состояние.

  • Consistency - Гарантирует, что база данных правильно меняет состояние после успешно зафиксированной транзакции.

  • Isolation - Позволяет транзакциям работать независимо и прозрачно друг для друга.

  • Durability - Гарантирует сохранение результата или эффекта зафиксированной транзакции в случае сбоя системы.

Контроль транзакций

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

  • COMMIT - Чтобы сохранить изменения.

  • ROLLBACK - Откатить изменения.

  • SAVEPOINT - Создает точки в группах транзакций для ОТКАТА.

  • SET TRANSACTION - Добавляет имя в транзакцию.

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

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

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>

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

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

Индекс помогает ускорить запросы SELECT и предложения WHERE, но замедляет ввод данных с помощью операторов UPDATE и INSERT. Индексы можно создавать или удалять, не влияя на данные.

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

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

СОЗДАТЬ ИНДЕКС, команда

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

  • Столбцы, которыми часто манипулируют, не следует индексировать.

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

  • SQL Server COUNT Function - Агрегатная функция SQL Server COUNT используется для подсчета количества строк в таблице базы данных.

  • SQL Server MAX Function - Агрегатная функция SQL Server MAX позволяет выбрать наивысшее (максимальное) значение для определенного столбца.

  • SQL Server MIN Function - Агрегатная функция SQL Server MIN позволяет выбрать наименьшее (минимальное) значение для определенного столбца.

  • SQL Server AVG Function - Агрегатная функция SQL Server AVG выбирает среднее значение для определенного столбца таблицы.

  • SQL Server SUM Function - Агрегатная функция SQL Server SUM позволяет выбрать сумму для числового столбца.

  • SQL Server SQRT Function - Используется для получения квадратного корня из заданного числа.

  • SQL Server RAND Function - Используется для генерации случайного числа с помощью команды SQL.

  • SQL Server CONCAT Function - Используется для объединения нескольких параметров в один параметр.

  • SQL Server Numeric Functions - Полный список функций SQL, необходимых для работы с числами в SQL.

  • SQL Server String Functions - Полный список функций SQL, необходимых для работы со строками в SQL.

Строковые функции MS SQL Server могут применяться к строковому значению или возвращать строковое значение или числовые данные.

Ниже приводится список строковых функций с примерами.

ASCII ()

Значение кода Ascii будет выводиться для символьного выражения.

пример

Следующий запрос даст значение кода Ascii для данного символа.

Select ASCII ('word')

СИМВОЛ ()

Символ будет выводиться для данного кода Ascii или целого числа.

пример

Следующий запрос выдаст символ для данного целого числа.

Select CHAR(97)

NCHAR ()

Символ Unicode будет выводиться для данного целого числа.

пример

Следующий запрос выдаст символ Юникода для данного целого числа.

Select NCHAR(300)

CHARINDEX ()

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

пример

Следующий запрос даст начальную позицию символа «G» для данного строкового выражения «KING».

Select CHARINDEX('G', 'KING')

СЛЕВА()

Левая часть данной строки до указанного количества символов будет выводиться для данной строки.

пример

Следующий запрос выдаст строку «МИР», как указано, 4 символа для данной строки «МИР».

Select LEFT('WORLD', 4)

ПРАВИЛЬНО()

Правая часть данной строки до указанного количества символов будет выводиться для данной строки.

пример

Следующий запрос даст строку «DIA», как указано, 3 числа символов для данной строки «INDIA».

Select RIGHT('INDIA', 3)

ПОДСТАВКА ()

Часть строки, основанная на значении начальной позиции и значении длины, будет выводиться для данной строки.

пример

Следующие запросы дадут строки '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   ')

ЗАМЕНИТЬ ()

Строковое выражение будет выводиться для заданных строковых данных после замены всех вхождений указанного символа указанным символом.

пример

Следующий запрос выдаст строку KNDKA для строковых данных INDIA.

Select REPLACE('INDIA', 'I', 'K')

REPLICATE ()

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

пример

Следующий запрос выдаст строку WORLDWORLD для строковых данных WORLD.

Select REPLICATE('WORLD', 2)

ОБЕСПЕЧИТЬ РЕГРЕСС()

Обратное строковое выражение будет выводиться для заданных строковых данных.

пример

Следующий запрос даст строку «DLROW» для строковых данных «МИР».

Select REVERSE('WORLD')

SOUNDEX ()

Возвращает четырехсимвольный (SOUNDEX) код для оценки сходства двух заданных строк.

пример

Следующий запрос выдаст "S530" для строк "Smith", "Smyth".

Select SOUNDEX('Smith'), SOUNDEX('Smyth')

РАЗНИЦА ()

Целочисленное значение будет выводом данных двух выражений.

пример

Следующий запрос даст 4 для выражений "Смит" и "Смит".

Select Difference('Smith','Smyth')

Note - Если выходное значение равно 0, это указывает на слабое сходство или отсутствие сходства между двумя выражениями.

ПРОСТРАНСТВО()

Строка будет выводиться с указанным количеством пробелов.

пример

Следующий запрос даст ответ «Я ЛЮБЛЮ ИНДИЮ».

Select 'I'+space(1)+'LOVE'+space(1)+'INDIA'

STUFF ()

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

пример

Следующий запрос выдаст строку 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','"')

ПАТИНДЕКС ()

Требуется начальная позиция первого вхождения из данного выражения, поскольку мы указали позицию «I».

пример

Следующий запрос даст 1 для «ИНДИЯ».

Select PATINDEX('I%','INDIA')

ФОРМАТ()

Данное выражение будет выводиться в указанном формате.

пример

Следующий запрос выдаст для функции getdate значение «Monday, 16 November 2015» в соответствии с указанным форматом, где «D» относится к имени дня недели.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

После объединения заданных значений параметров на выходе будет одна строка.

пример

Следующий запрос выдаст «A, B, C» для заданных параметров.

Select CONCAT('A',',','B',',','C')

Ниже приведен список функций даты в MS SQL Server.

GETDATE ()

Он вернет текущую дату вместе со временем.

Синтаксис

Синтаксис для указанной выше функции -

GETDATE()

пример

Следующий запрос вернет текущую дату вместе со временем в MS SQL Server.

Select getdate() as currentdatetime

DATEPART ()

Он вернет часть даты или времени.

Синтаксис

Синтаксис для указанной выше функции -

DATEPART(datepart, datecolumnname)

пример

Example 1 - Следующий запрос вернет часть текущей даты в MS SQL Server.

Select datepart(day, getdate()) as currentdate

Example 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(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)

Числовые функции 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

МИН ()

Минимальное значение будет получено как результат данного выражения.

пример

Следующий запрос даст "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.

Select LOG(1)