T-SQL - szybki przewodnik

W latach siedemdziesiątych produkt o nazwie „SEQUEL”, ustrukturyzowany angielski język zapytań, opracowany przez IBM, a później SEQUEL został przemianowany na „SQL”, co oznacza Structured Query Language.

W 1986 roku SQL został zatwierdzony przez ANSI (Amerykański Narodowy Instytut Normalizacyjny), aw 1987 roku został zatwierdzony przez ISO (Międzynarodowa Organizacja Normalizacyjna).

SQL to język zapytań strukturalnych, który jest wspólnym językiem baz danych dla wszystkich produktów RDBMS. Różni dostawcy produktów RDBMS opracowali własny język baz danych, rozszerzając SQL dla ich własnych produktów RDBMS.

T-SQL to skrót od Transact Structure Query Language, który jest produktem firmy Microsoft i stanowi rozszerzenie języka SQL.

Przykład

Serwer MS SQL - SQL \ T-SQL

ORACLE - SQL \ PL-SQL

Typ danych SQL Server to atrybut, który określa typy danych dowolnego obiektu. Każda kolumna, zmienna i wyrażenie ma powiązany typ danych w SQL Server. Te typy danych mogą być używane podczas tworzenia tabel. Możesz wybrać określony typ danych dla kolumny tabeli w oparciu o swoje wymagania.

SQL Server oferuje siedem kategorii, w tym inne kategorie typów danych do użycia.

Dokładne typy liczbowe

Rodzaj Od Do
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
kawałek 0 1
dziesiętny -10 ^ 38 +1 10 ^ 38 –1
numeryczny -10 ^ 38 +1 10 ^ 38 –1
pieniądze -922,337,203,685,477,5808 +922,337,203,685,477,5807
małe pieniądze -214,748,3648 +214,748,3647

Liczbowe i dziesiętne to typy danych o stałej precyzji i skali, które są funkcjonalnie równoważne.

Przybliżone typy liczbowe

Rodzaj Od Do
Pływak -1,79E + 308 1,79E + 308
Real -3,40E + 38 3,40E + 38

Typy daty i godziny

Rodzaj Od Do

datetime(Dokładność 3,33 milisekundy)

1 stycznia 1753 31 grudnia 9999

smalldatetime(Dokładność 1 minuty)

1 sty 1900 6 czerwca 2079

date(Dokładność 1 dnia. Wprowadzona w SQL Server 2008)

1 stycznia 0001 31 grudnia 9999

datetimeoffset(Dokładność 100 nanosekund. Wprowadzona w SQL Server 2008)

1 stycznia 0001 31 grudnia 9999

datetime2(Dokładność 100 nanosekund. Wprowadzono w SQL Server 2008)

1 stycznia 0001 31 grudnia 9999

time(Dokładność 100 nanosekund. Wprowadzono w SQL Server 2008)

00: 00: 00.0000000 23: 59: 59,9999999

Ciągi znaków

Sr.No Typ i opis
1

char

Dane ze znakami innymi niż Unicode o stałej długości i maksymalnej długości 8 000 znaków.

2

varchar

Dane inne niż Unicode o zmiennej długości, zawierające maksymalnie 8 000 znaków.

3

Varchar (max)

Dane o zmiennej długości inne niż Unicode o maksymalnej długości 231 znaków (wprowadzone w SQL Server 2005).

4

text

Dane inne niż Unicode o zmiennej długości, o maksymalnej długości 2 147 483 647 znaków

Ciągi znaków Unicode

Sr.No Typ i opis
1

nchar

Dane Unicode o stałej długości i maksymalnej długości 4000 znaków.

2

nvarchar

Dane Unicode o zmiennej długości i maksymalnej długości 4000 znaków.

3

Nvarchar (max)

Dane Unicode o zmiennej długości o maksymalnej długości 2 30 znaków (wprowadzone w SQL Server 2005).

4

ntext

Dane Unicode o zmiennej długości i maksymalnej długości 1 073 741 823 znaków.

Ciągi binarne

Sr.No Typ i opis
1

binary

Dane binarne o stałej długości i maksymalnej długości 8 000 bajtów.

2

varbinary

Dane binarne o zmiennej długości i maksymalnej długości 8 000 bajtów.

3

varbinary(max)

Dane binarne o zmiennej długości o maksymalnej długości 2 31 bajtów (wprowadzone w SQL Server 2005).

4

image

Dane binarne o zmiennej długości o maksymalnej długości 2 147 483 647 bajtów.

Inne typy danych

  • sql_variant - Przechowuje wartości różnych typów danych obsługiwanych przez SQL Server, z wyjątkiem tekstu, ntext i datownika.

  • timestamp - Przechowuje unikalny numer w całej bazie danych, który jest aktualizowany za każdym razem, gdy aktualizowany jest wiersz.

  • uniqueidentifier - Przechowuje unikatowy identyfikator globalny (GUID).

  • xml- Przechowuje dane XML. Wystąpienia XML można przechowywać w kolumnie lub zmiennej (wprowadzone w SQL Server 2005).

  • cursor - odniesienie do kursora.

  • table - Przechowuje zestaw wyników do późniejszego przetwarzania.

  • hierarchyid - Zmienna długość, systemowy typ danych używany do reprezentowania pozycji w hierarchii (wprowadzony w SQL Server 2008).

Tworzenie podstawowej tabeli obejmuje nazwanie tabeli i zdefiniowanie jej kolumn oraz typu danych każdej kolumny.

Serwer SQL CREATE TABLE instrukcja służy do tworzenia nowej tabeli.

Składnia

Poniżej przedstawiono podstawową składnię instrukcji CREATE TABLE -

CREATE TABLE table_name( 
   column1 datatype, 
   column2 datatype, 
   column3 datatype, 
   ..... 
   columnN datatype, 
   PRIMARY KEY( one or more columns ));

CREATE TABLE jest słowem kluczowym informującym system bazy danych, co chcesz zrobić. W takim przypadku chcesz utworzyć nową tabelę. Unikalna nazwa lub identyfikator tabeli następuje po instrukcji CREATE TABLE. Następnie w nawiasach pojawia się lista określająca każdą kolumnę w tabeli i jaki to typ danych. Poniższy przykład ułatwia zrozumienie składni.

Kopię istniejącej tabeli można utworzyć za pomocą kombinacji instrukcji CREATE TABLE i instrukcji SELECT. Pełne szczegóły można sprawdzić w sekcji Tworzenie tabeli przy użyciu innej tabeli.

Przykład

W tym przykładzie stwórzmy tabelę CUSTOMERS z ID jako kluczem podstawowym i NOT NULL są ograniczeniami pokazującymi, że te pola nie mogą mieć wartości NULL podczas tworzenia rekordów w tej tabeli -

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

Możesz sprawdzić, czy twoja tabela została pomyślnie utworzona, patrząc na komunikat wyświetlany przez serwer SQL, w przeciwnym razie możesz użyć następującego polecenia -

exec sp_columns CUSTOMERS

Powyższe polecenie daje następujący wynik.

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

Możesz teraz zobaczyć, że w Twojej bazie danych dostępna jest tabela CUSTOMERS, w której możesz przechowywać wymagane informacje dotyczące klientów.

Serwer SQL DROP TABLE Instrukcja służy do usuwania definicji tabeli i wszystkich danych, indeksów, wyzwalaczy, ograniczeń i specyfikacji uprawnień dla tej tabeli.

Note - Należy zachować ostrożność podczas korzystania z tego polecenia, ponieważ po usunięciu tabeli wszystkie informacje dostępne w tabeli również zostaną utracone na zawsze.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji DROP TABLE -

DROP TABLE table_name;

Przykład

Zweryfikujmy najpierw tabelę CUSTOMERS, a następnie usuniemy ją z bazy -

Exec sp_columns CUSTOMERS;

Powyższe polecenie pokazuje poniższą tabelę.

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

Tabela CUSTOMERS jest dostępna w bazie danych, więc zostawmy ją. Poniżej znajduje się polecenie dla tego samego.

DROP TABLE CUSTOMERS; 
Command(s) completed successfully.

Dzięki powyższemu poleceniu nie otrzymasz żadnych wierszy.

Exec sp_columns CUSTOMERS; 
No rows\data will be displayed

Serwer SQL INSERT INTO Instrukcja służy do dodawania nowych wierszy danych do tabeli w bazie danych.

Składnia

Poniżej przedstawiono dwie podstawowe składnie instrukcji INSERT INTO.

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]   
VALUES (value1, value2, value3,...valueN);

Gdzie kolumna1, kolumna2, ... kolumnaN to nazwy kolumn w tabeli, do których chcesz wstawić dane.

Nie musisz określać nazw kolumn w zapytaniu SQL, jeśli dodajesz wartości do wszystkich kolumn tabeli. Ale upewnij się, że kolejność wartości jest taka sama, jak kolejność kolumn w tabeli. Poniżej znajduje się składnia SQL INSERT INTO -

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

Przykład

Poniższe instrukcje utworzą sześć rekordów w tabeli 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 );

Składnia

Możesz utworzyć rekord w tabeli CUSTOMERS, używając drugiej składni w następujący sposób -

INSERT INTO CUSTOMERS VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

Wszystkie powyższe stwierdzenia dadzą następujące rekordy w tabeli 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

Wypełnij jedną tabelę, używając innej tabeli

Możesz wprowadzić dane do tabeli za pomocą instrukcji SELECT w innej tabeli, pod warunkiem, że inna tabela zawiera zestaw pól, które są wymagane do wypełnienia pierwszej tabeli. Poniżej znajduje się składnia -

INSERT INTO first_table_name  
   SELECT column1, column2, ...columnN  
      FROM second_table_name 
      [WHERE condition];

SQL Server SELECTinstrukcja służy do pobrania danych z tabeli bazy danych, która zwraca dane w postaci tabeli wynikowej. Te tabele wyników są nazywaneresult-sets.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji SELECT -

SELECT column1, column2, columnN FROM table_name;

Gdzie kolumna1, kolumna2 ... to pola tabeli, których wartości chcesz pobrać. Jeśli chcesz pobrać wszystkie pola dostępne w polu, możesz użyć następującej składni -

SELECT * FROM table_name;

Przykład

Rozważ tabelę CUSTOMERS zawierającą następujące rekordy -

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

Poniższe polecenie jest przykładem, które pobrałoby pola ID, Imię i Wynagrodzenie klientów dostępne w tabeli CUSTOMERS -

SELECT ID, NAME, SALARY FROM CUSTOMERS;

Powyższe polecenie wygeneruje następujący wynik.

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

Jeśli chcesz pobrać wszystkie pola tabeli CUSTOMERS, użyj następującego zapytania -

SELECT * FROM CUSTOMERS;

Powyższe da następujący wynik.

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

Serwer SQL UPDATE Zapytanie służy do modyfikowania istniejących rekordów w tabeli.

Możesz użyć klauzuli WHERE z zapytaniem UPDATE, aby zaktualizować wybrane wiersze, w przeciwnym razie wpłynie to na wszystkie wiersze.

Składnia

Poniżej znajduje się podstawowa składnia zapytania UPDATE z klauzulą ​​WHERE -

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

Możesz łączyć liczbę N warunków za pomocą operatorów AND lub OR.

Przykład

Rozważ tabelę CUSTOMERS zawierającą następujące rekordy -

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

Poniższe polecenie jest przykładem, które zaktualizowałoby ADRES dla klienta o identyfikatorze 6 -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune' 
WHERE ID = 6;

Tabela CUSTOMERS będzie teraz zawierała następujące rekordy -

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

Jeśli chcesz zmodyfikować wszystkie wartości kolumn ADDRESS i SALARY w tabeli CUSTOMERS, nie musisz używać klauzuli WHERE. Zapytanie UPDATE wyglądałoby następująco -

UPDATE CUSTOMERS 
SET ADDRESS = 'Pune', SALARY = 1000.00;

Tabela CUSTOMERS będzie teraz zawierała następujące rekordy.

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

Serwer SQL DELETE Zapytanie służy do usuwania istniejących rekordów z tabeli.

Musisz użyć klauzuli WHERE z zapytaniem DELETE, aby usunąć wybrane wiersze, w przeciwnym razie wszystkie rekordy zostaną usunięte.

Składnia

Poniżej znajduje się podstawowa składnia zapytania DELETE z klauzulą ​​WHERE -

DELETE FROM table_name 
WHERE [condition];

Możesz łączyć liczbę N warunków za pomocą operatorów AND lub OR.

Przykład

Rozważ tabelę CUSTOMERS zawierającą następujące rekordy -

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

Poniższe polecenie jest przykładem, które spowoduje USUNIĘCIE klienta o identyfikatorze 6 -

DELETE FROM CUSTOMERS 
WHERE ID = 6;

Tabela CUSTOMERS będzie teraz zawierała następujące rekordy.

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

Jeśli chcesz usunąć wszystkie rekordy z tabeli CUSTOMERS, nie musisz używać klauzuli WHERE. Zapytanie DELETE wyglądałoby następująco -

DELETE FROM CUSTOMERS;

Tabela CUSTOMERS nie będzie miała teraz żadnego rekordu.

Serwer MS SQL WHERE clause is used to specify a condition while fetching the data from single table or joining with multiple tables.

If the given condition is satisfied, only then it returns a specific value from the table. You will have to use WHERE clause to filter the records and fetch only necessary records.

The WHERE clause is not only used in SELECT statement, but it is also used in UPDATE, DELETE statement, etc., which we would examine in subsequent chapters.

Syntax

Following is the basic syntax of SELECT statement with WHERE clause −

SELECT column1, column2, columnN  
FROM table_name 
WHERE [condition]

You can specify a condition using comparison or logical operators like >, <, =, LIKE, NOT, etc. The following example will make this concept clear.

Example

Consider the CUSTOMERS table having the following records −

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

Following command is an example which would fetch ID, Name and Salary fields from the CUSTOMERS table where salary is greater than 2000.

SELECT ID, NAME, SALARY  
FROM CUSTOMERS 
WHERE SALARY > 2000;

The above command will produce the following output.

ID  NAME       SALARY 
4   Chaitali   6500.00 
5   Hardik     8500.00 
6   Komal      4500.00 
7   Muffy      10000.00

Following command is an example, which would fetch ID, Name and Salary fields from the CUSTOMERS table for a customer with the name ‘Hardik’. It is important to note that all the strings should be given inside single quotes ('') whereas numeric values should be given without any quote as in the above example −

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

The above command will produce the following output.

ID  NAME     SALARY 
5   Hardik   8500.00

The MS SQL Server LIKE clause is used to compare a value to similar values using wildcard operators. There are two wildcards used in conjunction with the LIKE operator −

  • The percent sign (%)
  • The underscore (_)

The percent sign represents zero, one, or multiple characters. The underscore represents a single number or character. The symbols can be used in combinations.

Syntax

Following is the basic syntax of % and _.

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_'

You can combine N number of conditions using AND or OR operators. XXXX could be any numeric or string value.

Example

Following are a number of examples showing WHERE part having different LIKE clause with '%' and '_' operators.

Sr.No Statement & Description
1

WHERE SALARY LIKE '200%'

Finds any values that start with 200

2

WHERE SALARY LIKE '%200%'

Finds any values that have 200 in any position

3

WHERE SALARY LIKE '_00%'

Finds any values that have 00 in the second and third positions

4

WHERE SALARY LIKE '2_%_%'

Finds any values that start with 2 and are at least 3 characters in length

5

WHERE SALARY LIKE '%2'

Finds any values that end with 2

6

WHERE SALARY LIKE '_2%3'

Finds any values that have a 2 in the second position and end with a 3

7

WHERE SALARY LIKE '2___3'

Finds any values in a five-digit number that start with 2 and end with 3

Consider the CUSTOMERS table having the following records.

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

Following command is an example, which will display all the records from CUSTOMERS table where SALARY starts with 200.

SELECT * FROM CUSTOMERS 
WHERE SALARY LIKE '200%';

The above command will produce the following output.

ID   NAME     AGE     ADDRESS       SALARY 
1    Ramesh   32      Ahmedabad     2000.00 
3    kaushik  23      Kota          2000.00

The MS SQL Server ORDER BY clause is used to sort the data in ascending or descending order, based on one or more columns. Some database sort query results in ascending order by default.

Syntax

Following is the basic syntax of ORDER BY clause.

SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

You can use more than one column in the ORDER BY clause. Make sure whatever column you are using to sort, that column should be in column-list.

Example

Consider the CUSTOMERS table having the following records −

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

Following command is an example, which would sort the result in ascending order by NAME and SALARY.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME, SALARY

The above command will produce the following output.

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

Following command is an example, which would sort the result in descending order by NAME.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME DESC

The above command will produce the following result −

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

The SQL Server GROUP BY clause is used in collaboration with the SELECT statement to arrange identical data into groups.

The GROUP BY clause follows the WHERE clause in a SELECT statement and precedes the ORDER BY clause.

Syntax

Following is the basic syntax of GROUP BY clause. The GROUP BY clause must follow the conditions in the WHERE clause and must precede the ORDER BY clause if one is used.

SELECT column1, column2 
FROM table_name 
WHERE [ conditions ] 
GROUP BY column1, column2 
ORDER BY column1, column2

Example

Consider the CUSTOMERS table is having the following records −

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

If you want to know the total amount of salary on each customer, then following will be the GROUP BY query.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME;

The above command will produce the following output.

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

Let us now consider the following CUSTOMERS table having the following records with duplicate names.

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

If we want to know the total amount of salary on each customer, then following will be GROUP BY query.

SELECT NAME, SUM(SALARY) as [sum of salary] FROM CUSTOMERS 
   GROUP BY NAME

The above command will produce the following output.

NAME        sum of salary 
Hardik      8500.00 
kaushik     8500.00 
Komal       4500.00 
Muffy       10000.00 
Ramesh      3500.00

The MS SQL Server DISTINCT keyword is used in conjunction with SELECT statement to eliminate all the duplicate records and fetching only unique records.

There may be a situation when you have multiple duplicate records in a table. While fetching such records, it makes more sense to fetch only unique records instead of fetching duplicate records.

Syntax

Following is the basic syntax of DISTINCT keyword to eliminate duplicate records.

SELECT DISTINCT column1, column2,.....columnN  
FROM table_name 
WHERE [condition]

Example

Consider the CUSTOMERS table having the following records.

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

Let us see how the following SELECT query returns duplicate salary records.

SELECT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

The above command will produce the following output where salary 2000 comes twice which is a duplicate record from the original table.

SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Let us now use DISTINCT keyword with the above SELECT query and see the result.

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

The above command produces the following output where we do not have any duplicate entry.

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

The MS SQL Server Joins clause is used to combine records from two or more tables in a database. A JOIN is a means for combining fields from two tables by using values common to each.

Consider the following two tables, (a) CUSTOMERS table is as follows −

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) Another table is ORDERS as follows −

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

Let us join these two tables in our SELECT statement as follows −

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

The above command will produce the following output.

ID   NAME      AGE    AMOUNT 
2    Khilan    25     1560.00 
3    kaushik   23     1500.00 
3    kaushik   23     3000.00 
4    Chaitali  25     2060.00

It is noticeable that the join is performed in the WHERE clause. Several operators can be used to join tables, such as =, <, >, <>, <=, >=, !=, BETWEEN, LIKE, and NOT; they can all be used to join tables. However, the most common operator is the equal symbol.

MS SQL Server Join Types −

There are different types of joins available in MS SQL Server −

  • INNER JOIN − Returns rows when there is a match in both tables.

  • LEFT JOIN − Returns all rows from the left table, even if there are no matches in the right table.

  • RIGHT JOIN − Returns all rows from the right table, even if there are no matches in the left table.

  • FULL JOIN − Returns rows when there is a match in one of the tables.

  • SELF JOIN − This is used to join a table to itself as if the table were two tables, temporarily renaming at least one table in the MS SQL Server statement.

  • CARTESIAN JOIN − Returns the Cartesian product of the sets of records from the two or more joined tables.

A sub-query or Inner query or Nested query is a query within another SQL Server query and embedded within the WHERE clause. A sub query is used to return data that will be used in the main query as a condition to further restrict the data to be retrieved.

Sub queries can be used with the SELECT, INSERT, UPDATE, and DELETE statements along with the operators like =, <, >, >=, <=, IN, BETWEEN, etc.

There are a few rules that sub queries must follow −

  • You must enclose a subquery in parenthesis.

  • A subquery must include a SELECT clause and a FROM clause.

  • A subquery can include optional WHERE, GROUP BY, and HAVING clauses.

  • A subquery cannot include COMPUTE or FOR BROWSE clauses.

  • You can include an ORDER BY clause only when a TOP clause is included.

  • You can nest sub queries up to 32 levels.

Subqueries with SELECT Statement

Syntax

Subqueries are most frequently used with the SELECT statement. Following is the basic syntax.

SELECT column_name [, column_name ] 
FROM   table1 [, table2 ] 
WHERE  column_name OPERATOR 
   (SELECT column_name [, column_name ] 
   FROM table1 [, table2 ] 
   [WHERE])

Example

Consider the CUSTOMERS table having the following records.

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

Let us apply the following subquery with SELECT statement.

SELECT *  
   FROM CUSTOMERS
   WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)

The above command will produce the following output.

ID  NAME       AGE       ADDRESS          SALARY 
4   Chaitali   25        Mumbai           6500.00 
5   Hardik     27        Bhopal           8500.00 
7   Muffy      24        Indore           10000.00

Subqueries with INSERT Statement

Sub queries also can be used with INSERT statements. The INSERT statement uses the data returned from the subquery to insert into another table. The selected data in the subquery can be modified with any of the character, date, or number functions.

Syntax

Following is the basic syntax.

INSERT INTO table_name [ (column1 [, column2 ]) ] 
   SELECT [ *|column1 [, column2 ] 
   FROM table1 [, table2 ] 
   [ WHERE VALUE OPERATOR ]

Example

Consider a table CUSTOMERS_BKP with similar structure as CUSTOMERS table. Following is the syntax to copy complete CUSTOMERS table into CUSTOMERS_BKP.

INSERT INTO CUSTOMERS_BKP 
   SELECT * FROM CUSTOMERS  
   WHERE ID IN (SELECT ID FROM CUSTOMERS)

Subqueries with UPDATE Statement

The subquery can be used in conjunction with the UPDATE statement. Either single or multiple columns in a table can be updated when using a subquery with the UPDATE statement.

Syntax

Following is the basic syntax.

UPDATE table 
SET column_name = new_value 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ]

Example

Let us assume we have CUSTOMERS_BKP table available which is backup of CUSTOMERS table.

Following command example updates SALARY by 0.25 times in CUSTOMERS table for all the customers whose AGE is greater than or equal to 27.

UPDATE CUSTOMERS 
   SET SALARY = SALARY * 0.25 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )

This will impact two rows and finally CUSTOMERS table will have the following records.

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

Subqueries with DELETE Statement

The subquery can be used in conjunction with the DELETE statement like with any other statements mentioned above.

Syntax

Following is the basic syntax.

DELETE FROM TABLE_NAME 
[ WHERE OPERATOR [ VALUE ] 
   (SELECT COLUMN_NAME 
   FROM TABLE_NAME) 
   [ WHERE) ]

Example

Let us assume we have CUSTOMERS_BKP table available which is backup of CUSTOMERS table.

Following command example deletes records from CUSTOMERS table for all the customers whose AGE is greater than or equal to 27.

DELETE FROM CUSTOMERS 
   WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )

This would impact two rows and finally CUSTOMERS table will have the following records.

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

The MS SQL Server Stored procedure is used to save time to write code again and again by storing the same in database and also get the required output by passing parameters.

Syntax

Following is the basic syntax of Stored procedure creation.

Create procedure <procedure_Name> 
As 
Begin 
<SQL Statement> 
End 
Go

Example

Consider the CUSTOMERS table having the following records.

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

Following command is an example which would fetch all records from the CUSTOMERS table in Testdb database.

CREATE PROCEDURE SelectCustomerstabledata 
AS 
SELECT * FROM Testdb.Customers 
GO

The above command will produce the following output.

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

A transaction is a unit of work that is performed against a database. Transactions are units or sequences of work accomplished in a logical order, whether in a manual fashion by a user or automatically by some sort of a database program.

A transaction is the propagation of one or more changes to the database. For example, if you are creating a record or updating a record or deleting a record from the table, then you are performing a transaction on the table. It is important to control transactions to ensure data integrity and to handle database errors.

Practically, you will club many SQL queries into a group and you will execute all of them together as a part of a transaction.

Properties of Transactions

Transactions have the following four standard properties, usually referred to by the acronym ACID −

  • Atomicity − Ensures that all operations within the work unit are completed successfully; otherwise, the transaction is aborted at the point of failure, and previous operations are rolled back to their former state.

  • Consistency − Ensures that the database properly changes state upon a successfully committed transaction.

  • Isolation − Enables transactions to operate independently of and transparent to each other.

  • Durability − Ensures that the result or effect of a committed transaction persists in case of a system failure.

Transaction Control

There are following commands used to control transactions −

  • COMMIT − To save the changes.

  • ROLLBACK − To roll back the changes.

  • SAVEPOINT − Creates points within groups of transactions in which to ROLLBACK.

  • SET TRANSACTION − Places a name on a transaction.

Transactional control commands are only used with the DML commands INSERT, UPDATE and DELETE only. They cannot be used while creating tables or dropping them because these operations are automatically committed in the database.

In order to use transactional control commands in MS SQL Server, we have to begin transaction with ‘begin tran’ or begin transaction command otherwise these commands will not work.

COMMIT Command

The COMMIT command is the transactional command used to save changes invoked by a transaction to the database. This command saves all transactions to the database since the last COMMIT or ROLLBACK command.

Syntax

Following is the syntax for COMMIT command.

COMMIT;

Example

Consider the CUSTOMERS table having the following records.

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

Following command example will delete records from the table having age = 25 and then COMMIT the changes in the database.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT

As a result, two rows from the table would be deleted and SELECT statement will produce the following output.

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

Polecenie ROLLBACK

Polecenie ROLLBACK jest poleceniem transakcyjnym używanym do cofania transakcji, które nie zostały jeszcze zapisane w bazie danych. Tego polecenia można używać tylko do cofania transakcji od czasu wydania ostatniego polecenia COMMIT lub ROLLBACK.

Składnia

Poniżej przedstawiono składnię polecenia ROLLBACK.

ROLLBACK

Przykład

Rozważmy tabelę CUSTOMERS zawierającą następujące rekordy.

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

Poniższy przykład polecenia usunie rekordy z tabeli mającej wiek = 25, a następnie ROLLBACK zmiany w bazie danych.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

W rezultacie operacja usuwania nie wpłynie na tabelę, a instrukcja SELECT da następujący wynik.

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

Polecenie SAVEPOINT

SAVEPOINT to punkt w transakcji, w którym można cofnąć transakcję do określonego punktu bez cofania całej transakcji.

Składnia

Poniżej przedstawiono składnię polecenia SAVEPOINT.

SAVE TRANSACTION SAVEPOINT_NAME

To polecenie służy tylko do tworzenia SAVEPOINT wśród instrukcji transakcyjnych. Polecenie ROLLBACK służy do cofania grupy transakcji.

Poniżej znajduje się składnia cofania do SAVEPOINT.

ROLLBACK TO SAVEPOINT_NAME

W poniższym przykładzie usuniemy trzy różne rekordy z tabeli CUSTOMERS. Będziemy musieli utworzyć SAVEPOINT przed każdym usunięciem, abyśmy mogli ROLLBACK do dowolnego SAVEPOINT w dowolnym momencie, aby przywrócić odpowiednie dane do ich pierwotnego stanu.

Przykład

Rozważ tabelę CUSTOMERS zawierającą następujące rekordy -

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

Poniżej przedstawiono serię operacji -

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.

Te trzy usunięcia miały miejsce, jednak zmieniliśmy zdanie i zdecydowaliśmy się ROLLBACK do SAVEPOINT, który zidentyfikowaliśmy jako SP2. Ponieważ dodatek SP2 został utworzony po pierwszym usunięciu, ostatnie dwa usunięcia są cofane -

ROLLBACK Transaction SP2 
Rollback complete.

Zauważ, że tylko pierwsze usunięcie miało miejsce od czasu przywrócenia wersji SP2.

SELECT * FROM CUSTOMERS

Wybrano 6 rzędów.

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

Polecenie USTAW TRANSAKCJĘ

Do zainicjowania transakcji bazy danych można użyć polecenia SET TRANSACTION. To polecenie służy do określania charakterystyk dla następującej transakcji.

Składnia

Poniżej znajduje się składnia SET TRANSACTION.

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

Indexesto specjalne tabele wyszukiwania, których wyszukiwarka bazy danych może użyć do przyspieszenia pobierania danych. Mówiąc najprościej, plikindexjest wskaźnikiem do danych w tabeli. Indeks w bazie danych jest bardzo podobny do indeksu na końcu książki.

Na przykład, jeśli chcesz odwołać się do wszystkich stron w książce, które omawiają określony temat, najpierw odwołujesz się do indeksu, który zawiera listę wszystkich tematów alfabetycznie, a następnie odsyła się do jednego lub kilku określonych numerów stron.

Indeks pomaga przyspieszyć zapytania SELECT i klauzule WHERE, ale spowalnia wprowadzanie danych dzięki instrukcjom UPDATE i INSERT. Indeksy można tworzyć lub usuwać bez wpływu na dane.

Tworzenie indeksu obejmuje instrukcję CREATE INDEX, która umożliwia nazwanie indeksu, określenie tabeli i kolumny do indeksowania oraz wskazanie, czy indeks jest w porządku rosnącym, czy malejącym.

Indeksy mogą być również unikatowe, podobnie jak w przypadku ograniczenia UNIQUE, ponieważ indeks zapobiega zduplikowanym wpisom w kolumnie lub kombinacji kolumn, w których znajduje się indeks.

UTWÓRZ INDEKS, polecenie

Poniżej znajduje się podstawowa składnia CREATE INDEX.

Składnia

CREATE INDEX index_name ON table_name

Indeksy jednokolumnowe

Indeks jednokolumnowy to taki, który jest tworzony na podstawie tylko jednej kolumny tabeli. Poniżej znajduje się podstawowa składnia.

Składnia

CREATE INDEX index_name 
ON table_name (column_name)

Przykład

CREATE INDEX singlecolumnindex 
ON customers (ID)

Unikalne indeksy

Unikalne indeksy służą nie tylko wydajności, ale także integralności danych. Unikalny indeks nie pozwala na wstawienie do tabeli żadnych zduplikowanych wartości. Poniżej znajduje się podstawowa składnia.

Składnia

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Przykład

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Indeksy złożone

Indeks złożony to indeks dwóch lub więcej kolumn tabeli. Poniżej znajduje się podstawowa składnia.

Składnia

CREATE INDEX index_name on table_name (column1, column2)

Przykład

CREATE INDEX compositeindex 
on customers (NAME, ID)

Niezależnie od tego, czy chcesz utworzyć indeks jednokolumnowy, czy indeks złożony, weź pod uwagę kolumny, których możesz często używać w klauzuli WHERE zapytania jako warunki filtru.

W przypadku użycia tylko jednej kolumny należy wybrać indeks jednokolumnowy. Jeśli w klauzuli WHERE są często używane dwie lub więcej kolumn jako filtry, najlepszym wyborem będzie indeks złożony.

Niejawne indeksy

Niejawne indeksy to indeksy, które są automatycznie tworzone przez serwer bazy danych podczas tworzenia obiektu. Indeksy są tworzone automatycznie dla ograniczeń klucza podstawowego i ograniczeń unikalności.

Polecenie DROP INDEX

Indeks można usunąć za pomocą polecenia MS SQL SERVER DROP. Należy zachować ostrożność podczas usuwania indeksu, ponieważ wydajność może zostać spowolniona lub poprawiona.

Składnia

Poniżej znajduje się podstawowa składnia.

DROP INDEX tablename.index_name

Kiedy unikać indeksów?

Chociaż indeksy mają na celu zwiększenie wydajności baz danych, czasami należy ich unikać. Poniższe wytyczne wskazują, kiedy należy ponownie rozważyć użycie indeksu -

  • Indeksów nie należy używać w przypadku małych tabel.

  • Tabele, które mają częste, duże operacje aktualizacji lub wstawiania, nie powinny być indeksowane.

  • Indeksów nie należy używać w kolumnach, które zawierają dużą liczbę wartości NULL.

  • Kolumny, które są często modyfikowane, nie powinny być indeksowane.

MS SQL Server ma wiele wbudowanych funkcji do przetwarzania danych tekstowych lub liczbowych. Poniżej znajduje się lista wszystkich przydatnych wbudowanych funkcji SQL -

  • SQL Server COUNT Function - Funkcja agregująca SQL Server COUNT służy do liczenia wierszy w tabeli bazy danych.

  • SQL Server MAX Function - Funkcja agregująca SQL Server MAX pozwala wybrać najwyższą (maksymalną) wartość dla określonej kolumny.

  • SQL Server MIN Function - Funkcja agregująca MIN programu SQL Server umożliwia wybranie najniższej (minimalnej) wartości dla określonej kolumny.

  • SQL Server AVG Function - Funkcja agregująca SQL Server AVG wybiera średnią wartość dla określonej kolumny tabeli.

  • SQL Server SUM Function - Funkcja agregująca SQL Server SUM umożliwia wybranie sumy dla kolumny liczbowej.

  • SQL Server SQRT Function - Służy do generowania pierwiastka kwadratowego z podanej liczby.

  • SQL Server RAND Function - Służy do generowania liczby losowej za pomocą polecenia SQL.

  • SQL Server CONCAT Function - Służy do łączenia wielu parametrów w jeden parametr.

  • SQL Server Numeric Functions - Pełna lista funkcji SQL wymaganych do manipulowania liczbami w SQL.

  • SQL Server String Functions - Pełna lista funkcji SQL wymaganych do manipulowania napisami w języku SQL.

Funkcje ciągów MS SQL Server mogą być stosowane do wartości łańcuchowych lub zwracają wartość łańcuchową lub dane liczbowe.

Poniżej znajduje się lista funkcji ciągów z przykładami.

ASCII ()

Wartość kodu Ascii pojawi się jako wyjście dla wyrażenia znakowego.

Przykład

Poniższe zapytanie zwróci wartość kodu Ascii dla danego znaku.

Select ASCII ('word')

ZWĘGLAĆ()

Znak pojawi się na wyjściu dla danego kodu Ascii lub liczby całkowitej.

Przykład

Poniższe zapytanie da znak dla podanej liczby całkowitej.

Select CHAR(97)

NCHAR ()

Znak Unicode pojawi się jako wyjście dla podanej liczby całkowitej.

Przykład

Następujące zapytanie poda znak Unicode dla danej liczby całkowitej.

Select NCHAR(300)

CHARINDEX ()

Pozycja początkowa dla danego wyrażenia wyszukiwania zostanie określona jako wyjście w podanym wyrażeniu łańcuchowym.

Przykład

Następujące zapytanie poda pozycję początkową znaku „G” dla danego wyrażenia łańcuchowego „KING”.

Select CHARINDEX('G', 'KING')

LEWO()

Lewa część podanego ciągu, dopóki określona liczba znaków nie pojawi się jako wyjście dla danego ciągu.

Przykład

Następujące zapytanie da ciąg „WORL”, jak wspomniano, 4 liczby znaków dla danego ciągu „WORLD”.

Select LEFT('WORLD', 4)

DOBRZE()

Prawa część podanego ciągu do określonej liczby znaków pojawi się na wyjściu dla danego ciągu.

Przykład

Następujące zapytanie da ciąg „DIA”, jak wspomniano, 3 liczby znaków dla danego ciągu „INDIA”.

Select RIGHT('INDIA', 3)

PODCIĄG ()

Część ciągu oparta na wartości pozycji początkowej i wartości długości będzie stanowić dane wyjściowe dla danego ciągu.

Przykład

Następujące zapytania dadzą ciągi „WOR”, „DIA”, „ING”, jak wspomnieliśmy (1,3), (3,3) i (2,3) jako wartości początkowe i długości odpowiednio dla danych ciągów „WORLD” , „INDIE” i „KING”.

Select SUBSTRING ('WORLD', 1,3) 
Select SUBSTRING ('INDIA', 3,3) 
Select SUBSTRING ('KING', 2,3)

DŁ ()

Liczba znaków pojawi się na wyjściu dla danego wyrażenia łańcuchowego.

Przykład

Następujące zapytanie da 5 dla wyrażenia tekstowego „HELLO”.

Select LEN('HELLO')

NIŻSZY()

Małe litery pojawią się jako dane wyjściowe dla danego ciągu danych.

Przykład

Następujące zapytanie zwróci „sqlserver” dla danych znakowych „SQLServer”.

Select LOWER('SQLServer')

GÓRNY()

Wielkie litery pojawią się jako dane wyjściowe dla danego ciągu danych.

Przykład

Następujące zapytanie zwróci „SQLSERVER” dla danych znakowych „SqlServer”.

Select UPPER('SqlServer')

LTRIM ()

Wyrażenie łańcuchowe pojawi się jako wyjście dla danego ciągu danych po usunięciu wiodących spacji.

Przykład

Następujące zapytanie da „WORLD” dla danych znakowych „WORLD”.

Select LTRIM('   WORLD')

RTRIM ()

Wyrażenie łańcuchowe pojawi się jako dane wyjściowe dla danego ciągu danych po usunięciu końcowych spacji.

Przykład

Poniższe zapytanie da „INDIE” dla danych znakowych „INDIE”.

Select RTRIM('INDIA   ')

ZASTĄPIĆ()

Wyrażenie łańcuchowe pojawi się jako wyjście dla danego ciągu danych po zastąpieniu wszystkich wystąpień określonego znaku określonym znakiem.

Przykład

Poniższe zapytanie da ciąg znaków „KNDKA” dla danych ciągu „INDIA”.

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

REPLIKA()

Wyrażenie ciągowe z powtórzeniem pojawi się jako dane wyjściowe dla danego ciągu danych z określoną liczbą razy.

Przykład

Następujące zapytanie zwróci ciąg „WORLDWORLD” dla danych ciągu „WORLD”.

Select REPLICATE('WORLD', 2)

ODWRÓCIĆ()

Odwrotne wyrażenie łańcuchowe pojawi się jako wyjście dla danego ciągu danych.

Przykład

Następujące zapytanie zwróci ciąg „DLROW” dla danych ciągu „WORLD”.

Select REVERSE('WORLD')

SOUNDEX ()

Zwraca czteroznakowy kod (SOUNDEX), aby ocenić podobieństwo dwóch podanych ciągów.

Przykład

Poniższe zapytanie zwróci „S530” dla ciągów znaków „Smith” i „Smyth”.

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

RÓŻNICA()

Wartość całkowita będzie wynikiem danych dwóch wyrażeń.

Przykład

Poniższe zapytanie da 4 dla wyrażeń „Smith”, „Smyth”.

Select Difference('Smith','Smyth')

Note - Jeśli wartość wyjściowa wynosi 0, oznacza to słabe podobieństwo lub brak podobieństwa między danymi 2 wyrażeniami.

PRZESTRZEŃ()

Jako wyjście pojawi się napis z określoną liczbą spacji.

Przykład

Następujące zapytanie da „I LOVE INDIA”.

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

RZECZY()

Wyrażenie łańcuchowe pojawi się jako dane wyjściowe dla danego ciągu danych po zastąpieniu od znaku początkowego do określonej długości określonym znakiem.

Przykład

Następujące zapytanie poda ciąg „AIJKFGH” dla danych ciągu „ABCDEFGH” zgodnie z podanym znakiem początkowym i długością odpowiednio 2 i 4 oraz „IJK” jako określony ciąg docelowy.

Select STUFF('ABCDEFGH', 2,4,'IJK')

STR ()

Dane znakowe pojawią się na wyjściu dla podanych danych liczbowych.

Przykład

Poniższe zapytanie da 187,37 dla podanych 187,369 na podstawie określonej długości jako 6 i dziesiętnej jako 2.

Select STR(187.369,6,2)

UNICODE ()

Wartość całkowita pojawi się na wyjściu dla pierwszego znaku danego wyrażenia.

Przykład

Następujące zapytanie da 82 wyrażenie „RAMA”.

Select UNICODE('RAMA')

QUOTENAME ()

Podany ciąg pojawi się jako wyjście z określonym ogranicznikiem.

Przykład

Następujące zapytanie zwróci „RAMA” dla danego ciągu „RAMA”, ponieważ jako separator podaliśmy podwójny cudzysłów.

Select QUOTENAME('RAMA','"')

PATINDEX ()

Wymagana jest pozycja początkowa pierwszego wystąpienia z podanego wyrażenia, tak jak podaliśmy pozycję „I”.

Przykład

Następujące zapytanie da 1 dla „INDII”.

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

FORMAT()

Podane wyrażenie pojawi się na wyjściu w określonym formacie.

Przykład

Następujące zapytanie zwróci „poniedziałek, 16 listopada 2015 r.” Dla funkcji getdate zgodnie z określonym formatem, gdzie „D” odnosi się do nazwy dnia tygodnia.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

Pojedynczy ciąg pojawi się jako wyjście po połączeniu podanych wartości parametrów.

Przykład

Następujące zapytanie zwróci „A, B, C” dla podanych parametrów.

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

Poniżej znajduje się lista funkcji daty w MS SQL Server.

GETDATE ()

Zwróci bieżącą datę wraz z czasem.

Składnia

Składnia powyższej funkcji -

GETDATE()

Przykład

Następujące zapytanie zwróci aktualną datę wraz z czasem w MS SQL Server.

Select getdate() as currentdatetime

DATEPART ()

Zwróci część daty lub godziny.

Składnia

Składnia powyższej funkcji -

DATEPART(datepart, datecolumnname)

Przykład

Example 1 - Poniższe zapytanie zwróci część aktualnej daty w MS SQL Server.

Select datepart(day, getdate()) as currentdate

Example 2 - Poniższe zapytanie zwróci część bieżącego miesiąca w MS SQL Server.

Select datepart(month, getdate()) as currentmonth

DATEADD ()

Wyświetli datę i godzinę, dodając lub odejmując datę i przedział czasu.

Składnia

Składnia powyższej funkcji -

DATEADD(datepart, number, datecolumnname)

Przykład

Następujące zapytanie zwróci datę i godzinę po 10 dniach od bieżącej daty i godziny w MS SQL Server.

Select dateadd(day, 10, getdate()) as after10daysdatetimefromcurrentdatetime

DATEDIFF ()

Wyświetli datę i godzinę między dwiema datami.

Składnia

Składnia powyższej funkcji -

DATEDIFF(datepart, startdate, enddate)

Przykład

Następujące zapytanie zwróci różnicę godzin między datami 2015-11-16 i 2015-11-11 w MS SQL Server.

Select datediff(hour, 2015-11-16, 2015-11-11) as 
differencehoursbetween20151116and20151111

KONWERTOWAĆ()

Wyświetli datę i godzinę w różnych formatach.

Składnia

Składnia powyższej funkcji -

CONVERT(datatype, expression, style)

Przykład

Następujące zapytania zwrócą datę i godzinę w innym formacie w MS SQL Server.

SELECT CONVERT(VARCHAR(19),GETDATE()) 
SELECT CONVERT(VARCHAR(10),GETDATE(),10) 
SELECT CONVERT(VARCHAR(10),GETDATE(),110)

Funkcje numeryczne MS SQL Server mogą być stosowane do danych liczbowych i zwracają dane liczbowe.

Poniżej znajduje się lista funkcji numerycznych z przykładami.

ABS ()

Wartość bezwzględna pojawi się jako wynik dla wyrażenia numerycznego.

Przykład

Następujące zapytanie poda wartość bezwzględną.

Select ABS(-22)

ACOS ()

Wartość Arc cosinus pojawi się na wyjściu dla określonego wyrażenia liczbowego.

Przykład

Poniższe zapytanie da wartość arcus cosinus równą 0.

Select ACOS(0)

JAK W()

Wartość sinus łuku pojawi się na wyjściu dla określonego wyrażenia liczbowego.

Przykład

Poniższe zapytanie da wartość arc sinus równą 0.

Select ASIN(0)

ATAN ()

Wartość stycznej łuku pojawi się na wyjściu dla określonego wyrażenia liczbowego.

Przykład

Poniższe zapytanie da wartość stycznej łuku równą 0.

Select ATAN(0)

ATN2 ()

Wartość stycznej łuku we wszystkich czterech kwadrantach będzie stanowić wynik dla określonego wyrażenia liczbowego.

Przykład

Poniższe zapytanie poda wartość stycznej łuku we wszystkich czterech ćwiartkach równej 0.

Select ATN2(0, -1)

Rozważmy tabelę CUSTOMERS zawierającą następujące rekordy.

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

POMIĘDZY()

Jeśli wartości istnieją między podanymi dwoma wyrażeniami, zostaną one przekazane jako dane wyjściowe.

Przykład

Następujące zapytanie da następujące dane wyjściowe.

SELECT salary from customers where salary between 2000 and 8500

Wynik

salary 
2000.00 
2000.00 
6500.00 
8500.00 
4500.00

MIN ()

Minimalna wartość będzie wynikać z danego wyrażenia.

Przykład

Następujące zapytanie da „1500,00” dla danego wyrażenia „wynagrodzenie” z tabeli klientów.

Select MIN(salary)from CUSTOMERS

MAX ()

Maksymalna wartość będzie wynikać z danego wyrażenia.

Przykład

Następujące zapytanie da „10000,00” dla danego wyrażenia „wynagrodzenie” z tabeli klientów.

Select MAX(salary)from CUSTOMERS

SQRT ()

Pierwiastek kwadratowy z podanego wyrażenia liczbowego zostanie wyświetlony jako wynik.

Przykład

Następujące zapytanie da 2 dla podanych 4 wyrażeń liczbowych.

Select SQRT(4)

LICZBA PI()

Wartość PI pojawi się jako wyjście.

Przykład

Następujące zapytanie da 3.14159265358979 dla wartości PI.

Select PI()

SUFIT()

Podana wartość pojawi się jako wynik po zaokrągleniu miejsc po przecinku, co stanowi kolejną najwyższą wartość.

Przykład

Poniższe zapytanie da 124 dla podanej wartości 123,25.

Select CEILING(123.25)

PODŁOGA()

Podana wartość zostanie wyprowadzona po zaokrągleniu miejsc po przecinku, które są mniejsze lub równe wyrażeniu.

Przykład

Następujące zapytanie da 123 dla podanej wartości 123,25.

Select FLOOR(123.25)

LOG()

Na wyjściu pojawi się logarytm naturalny podanego wyrażenia.

Przykład

Następujące zapytanie da 0 dla podanej wartości 1.

Select LOG(1)