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)