T-SQL - Hướng dẫn nhanh

Vào năm 1970, sản phẩm có tên 'SEQUEL', ngôn ngữ truy vấn có cấu trúc bằng tiếng Anh, được phát triển bởi IBM và sau đó SEQUEL được đổi tên thành 'SQL', viết tắt của Structured Query Language.

Năm 1986, SQL được ANSI (Viện tiêu chuẩn quốc gia Hoa Kỳ) phê duyệt và năm 1987, nó được ISO (Tổ chức tiêu chuẩn quốc tế) chấp thuận.

SQL là một ngôn ngữ truy vấn cấu trúc là ngôn ngữ cơ sở dữ liệu chung cho tất cả các sản phẩm RDBMS. Các nhà cung cấp sản phẩm RDBMS khác nhau đã phát triển ngôn ngữ cơ sở dữ liệu của riêng họ bằng cách mở rộng SQL cho các sản phẩm RDBMS của riêng họ.

T-SQL là viết tắt của Transact Structure Query Language là một sản phẩm của Microsoft và là một phần mở rộng của SQL Language.

Thí dụ

MS SQL Server - SQL \ T-SQL

ORACLE - SQL \ PL-SQL

Kiểu dữ liệu SQL Server là một thuộc tính chỉ định kiểu dữ liệu của bất kỳ đối tượng nào. Mỗi cột, biến và biểu thức có kiểu dữ liệu liên quan trong SQL Server. Các kiểu dữ liệu này có thể được sử dụng trong khi tạo bảng. Bạn có thể chọn một kiểu dữ liệu cụ thể cho một cột trong bảng dựa trên yêu cầu của bạn.

SQL Server cung cấp bảy danh mục bao gồm danh mục kiểu dữ liệu khác để sử dụng.

Loại số chính xác

Kiểu Từ Đến
bigint -9.223.372.036.854.775.808 9.223.372.036.854.775.807
int -2.147.483.648 2.147.483.647
lửa -32.768 32.767
tí hon 0 255
bit 0 1
thập phân -10 ^ 38 +1 10 ^ 38 –1
số -10 ^ 38 +1 10 ^ 38 –1
tiền bạc -922.337.203.685.477.5808 +922.337.203.685.477.5807
tiền nhỏ -214.748,3648 +214.748.3647

Số và thập phân là các kiểu dữ liệu tỷ lệ và độ chính xác cố định và tương đương về mặt chức năng.

Các loại số gần đúng

Kiểu Từ Đến
Phao nổi -1,79E + 308 1,79E + 308
Thực tế -3.40E + 38 3,40E + 38

Loại ngày và giờ

Kiểu Từ Đến

datetime(Độ chính xác 3,33 mili giây)

1 tháng 1 năm 1753 Ngày 31 tháng 12 năm 9999

smalldatetime(Độ chính xác 1 phút)

1 tháng 1 năm 1900 6 tháng 6 năm 2079

date(Độ chính xác 1 ngày. Được giới thiệu trong SQL Server 2008)

1 tháng 1, 0001 Ngày 31 tháng 12 năm 9999

datetimeoffset(Độ chính xác 100 nano giây. Được giới thiệu trong SQL Server 2008)

1 tháng 1, 0001 Ngày 31 tháng 12 năm 9999

datetime2(Độ chính xác 100 nano giây. Được giới thiệu trong SQL Server 2008)

1 tháng 1, 0001 Ngày 31 tháng 12 năm 9999

time(Độ chính xác 100 nano giây. Được giới thiệu trong SQL Server 2008)

00: 00: 00.0000000 23: 59: 59.9999999

Chuỗi ký tự

Sr.No Loại & Mô tả
1

char

Dữ liệu ký tự không phải Unicode có độ dài cố định với độ dài tối đa là 8.000 ký tự.

2

varchar

Dữ liệu không phải Unicode có độ dài thay đổi với tối đa 8.000 ký tự.

3

Varchar (max)

Dữ liệu không phải Unicode có độ dài thay đổi với độ dài tối đa là 231 ký tự (Được giới thiệu trong SQL Server 2005).

4

text

Dữ liệu không phải Unicode có độ dài thay đổi với độ dài tối đa là 2.147.483.647 ký tự

Chuỗi ký tự Unicode

Sr.No Loại & Mô tả
1

nchar

Dữ liệu Unicode có độ dài cố định với độ dài tối đa là 4.000 ký tự.

2

nvarchar

Dữ liệu Unicode có độ dài thay đổi với độ dài tối đa là 4.000 ký tự.

3

Nvarchar (max)

Dữ liệu Unicode có độ dài thay đổi với độ dài tối đa là 2 30 ký tự (Được giới thiệu trong SQL Server 2005).

4

ntext

Dữ liệu Unicode có độ dài thay đổi với độ dài tối đa là 1.073.741.823 ký tự.

Chuỗi nhị phân

Sr.No Loại & Mô tả
1

binary

Dữ liệu nhị phân có độ dài cố định với độ dài tối đa là 8.000 byte.

2

varbinary

Dữ liệu nhị phân có độ dài thay đổi với độ dài tối đa là 8.000 byte.

3

varbinary(max)

Dữ liệu nhị phân có độ dài thay đổi với độ dài tối đa là 2 31 byte (Được giới thiệu trong SQL Server 2005).

4

image

Dữ liệu nhị phân có độ dài thay đổi với độ dài tối đa là 2.147.483.647 byte.

Các loại dữ liệu khác

  • sql_variant - Lưu trữ các giá trị của nhiều kiểu dữ liệu được SQL Server hỗ trợ, ngoại trừ văn bản, ntext và dấu thời gian.

  • timestamp - Lưu trữ một số duy nhất trên toàn cơ sở dữ liệu được cập nhật mỗi khi một hàng được cập nhật.

  • uniqueidentifier - Lưu trữ số nhận dạng duy nhất trên toàn cầu (GUID).

  • xml- Lưu trữ dữ liệu XML. Bạn có thể lưu trữ các phiên bản XML trong một cột hoặc một biến (Được giới thiệu trong SQL Server 2005).

  • cursor - Tham chiếu đến một con trỏ.

  • table - Lưu trữ một tập kết quả để xử lý sau này.

  • hierarchyid - Độ dài thay đổi, kiểu dữ liệu hệ thống được sử dụng để thể hiện vị trí trong hệ thống phân cấp (Được giới thiệu trong SQL Server 2008).

Tạo một bảng cơ bản bao gồm đặt tên cho bảng và xác định các cột của nó và kiểu dữ liệu của mỗi cột.

Máy chủ SQL CREATE TABLE câu lệnh được sử dụng để tạo một bảng mới.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh CREATE TABLE:

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

CREATE TABLE là từ khóa cho hệ thống cơ sở dữ liệu biết bạn muốn làm gì. Trong trường hợp này, bạn muốn tạo một bảng mới. Tên hoặc mã định danh duy nhất cho bảng tuân theo câu lệnh CREATE TABLE. Sau đó, trong dấu ngoặc là danh sách xác định từng cột trong bảng và kiểu dữ liệu đó là gì. Cú pháp trở nên rõ ràng hơn để hiểu với ví dụ sau.

Bản sao của bảng hiện có có thể được tạo bằng cách sử dụng kết hợp câu lệnh CREATE TABLE và câu lệnh SELECT. Bạn có thể kiểm tra chi tiết đầy đủ tại Tạo Bảng Sử dụng Bảng khác.

Thí dụ

Trong ví dụ này, hãy tạo một bảng CUSTOMERS với ID là khóa chính và KHÔNG ĐỦ là các ràng buộc cho thấy rằng các trường này không thể là NULL khi tạo bản ghi trong bảng này -

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

Bạn có thể xác minh xem bảng của mình đã được tạo thành công hay chưa bằng cách xem thông báo do máy chủ SQL hiển thị, nếu không, bạn có thể sử dụng lệnh sau:

exec sp_columns CUSTOMERS

Lệnh trên tạo ra kết quả sau.

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

Bây giờ bạn có thể thấy rằng bảng CUSTOMERS có sẵn trong cơ sở dữ liệu của bạn mà bạn có thể sử dụng để lưu trữ thông tin cần thiết liên quan đến khách hàng.

Máy chủ SQL DROP TABLE câu lệnh được sử dụng để loại bỏ một định nghĩa bảng và tất cả dữ liệu, chỉ mục, trình kích hoạt, ràng buộc và các đặc tả quyền cho bảng đó.

Note - Bạn phải cẩn thận khi sử dụng lệnh này vì một khi một bảng bị xóa thì tất cả thông tin có sẵn trong bảng cũng sẽ bị mất vĩnh viễn.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh DROP TABLE:

DROP TABLE table_name;

Thí dụ

Trước tiên hãy để chúng tôi xác minh bảng CUSTOMERS và sau đó chúng tôi sẽ xóa nó khỏi cơ sở dữ liệu -

Exec sp_columns CUSTOMERS;

Lệnh trên hiển thị bảng sau.

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

Bảng CUSTOMERS có sẵn trong cơ sở dữ liệu, vì vậy hãy để chúng tôi loại bỏ nó. Sau đây là lệnh cho tương tự.

DROP TABLE CUSTOMERS; 
Command(s) completed successfully.

Với lệnh trên, bạn sẽ không nhận được bất kỳ hàng nào.

Exec sp_columns CUSTOMERS; 
No rows\data will be displayed

Máy chủ SQL INSERT INTO câu lệnh được sử dụng để thêm các hàng dữ liệu mới vào một bảng trong cơ sở dữ liệu.

Cú pháp

Sau đây là hai cú pháp cơ bản của câu lệnh INSERT INTO.

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

Trong đó column1, column2, ... columnN là tên của các cột trong bảng mà bạn muốn chèn dữ liệu vào.

Bạn không cần chỉ định (các) tên cột trong truy vấn SQL nếu bạn đang thêm giá trị cho tất cả các cột của bảng. Nhưng đảm bảo thứ tự của các giá trị theo thứ tự như các cột trong bảng. Sau đây là cú pháp SQL INSERT INTO:

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

Thí dụ

Các câu lệnh sau sẽ tạo sáu bản ghi trong bảng 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 );

Cú pháp

Bạn có thể tạo bản ghi trong bảng CUSTOMERS bằng cú pháp thứ hai như sau:

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

Tất cả các câu lệnh trên sẽ tạo ra các bản ghi sau trong bảng 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

Điền vào một bảng bằng cách sử dụng một bảng khác

Bạn có thể điền dữ liệu vào một bảng thông qua câu lệnh SELECT trên một bảng khác với điều kiện một bảng khác có một tập hợp các trường, bắt buộc phải điền vào bảng đầu tiên. Sau đây là cú pháp:

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

Máy chủ SQL SELECTcâu lệnh được sử dụng để tìm nạp dữ liệu từ một bảng cơ sở dữ liệu trả về dữ liệu ở dạng bảng kết quả. Các bảng kết quả này được gọi làresult-sets.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh SELECT:

SELECT column1, column2, columnN FROM table_name;

Trong đó, column1, column2 ... là các trường của bảng có giá trị bạn muốn tìm nạp. Nếu bạn muốn tìm nạp tất cả các trường có sẵn trong trường, thì bạn có thể sử dụng cú pháp sau:

SELECT * FROM table_name;

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Lệnh sau là một ví dụ, sẽ lấy các trường ID, Tên và Mức lương của khách hàng có sẵn trong bảng CUSTOMERS -

SELECT ID, NAME, SALARY FROM CUSTOMERS;

Lệnh trên sẽ tạo ra kết quả sau.

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

Nếu bạn muốn tìm nạp tất cả các trường của bảng CUSTOMERS, hãy sử dụng truy vấn sau:

SELECT * FROM CUSTOMERS;

Ở trên sẽ tạo ra kết quả sau.

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

Máy chủ SQL UPDATE Truy vấn được sử dụng để sửa đổi các bản ghi hiện có trong bảng.

Bạn có thể sử dụng mệnh đề WHERE với truy vấn UPDATE để cập nhật các hàng đã chọn nếu không tất cả các hàng sẽ bị ảnh hưởng.

Cú pháp

Sau đây là cú pháp cơ bản của truy vấn UPDATE với mệnh đề WHERE -

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

Bạn có thể kết hợp N số điều kiện bằng cách sử dụng toán tử AND hoặc OR.

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Lệnh sau là một ví dụ, sẽ cập nhật ADDRESS cho khách hàng có ID là 6 -

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

Bảng CUSTOMERS bây giờ sẽ có các bản ghi sau:

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

Nếu bạn muốn sửa đổi tất cả các giá trị cột ĐỊA CHỈ và LƯƠNG trong bảng KHÁCH HÀNG, bạn không cần sử dụng mệnh đề WHERE. Truy vấn UPDATE sẽ như sau:

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

Bảng CUSTOMERS bây giờ sẽ có các bản ghi sau.

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

Máy chủ SQL DELETE Truy vấn được sử dụng để xóa các bản ghi hiện có khỏi bảng.

Bạn phải sử dụng mệnh đề WHERE với truy vấn DELETE để xóa các hàng đã chọn, nếu không tất cả các bản ghi sẽ bị xóa.

Cú pháp

Sau đây là cú pháp cơ bản của truy vấn DELETE với mệnh đề WHERE:

DELETE FROM table_name 
WHERE [condition];

Bạn có thể kết hợp N số điều kiện bằng cách sử dụng toán tử AND hoặc OR.

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Lệnh sau là một ví dụ, lệnh này sẽ XÓA một khách hàng có ID là 6 -

DELETE FROM CUSTOMERS 
WHERE ID = 6;

Bảng CUSTOMERS bây giờ sẽ có các bản ghi sau.

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

Nếu bạn muốn XÓA tất cả các bản ghi khỏi bảng CUSTOMERS, bạn không cần sử dụng mệnh đề WHERE. Truy vấn DELETE sẽ như sau:

DELETE FROM CUSTOMERS;

Bảng KHÁCH HÀNG bây giờ sẽ không có bất kỳ bản ghi nào.

Máy chủ MS SQL WHERE mệnh đề được sử dụng để chỉ định một điều kiện trong khi tìm nạp dữ liệu từ một bảng hoặc kết hợp với nhiều bảng.

Nếu điều kiện đã cho được thỏa mãn thì chỉ khi đó nó mới trả về một giá trị cụ thể từ bảng. Bạn sẽ phải sử dụng mệnh đề WHERE để lọc các bản ghi và chỉ tìm nạp các bản ghi cần thiết.

Mệnh đề WHERE không chỉ được sử dụng trong câu lệnh SELECT, mà nó còn được sử dụng trong câu lệnh UPDATE, DELETE, v.v., mà chúng ta sẽ xem xét trong các chương tiếp theo.

Cú pháp

Sau đây là cú pháp cơ bản của câu lệnh SELECT với mệnh đề WHERE:

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

Bạn có thể chỉ định một điều kiện bằng cách sử dụng các toán tử so sánh hoặc logic như>, <, =, LIKE, NOT, v.v. Ví dụ sau sẽ làm rõ khái niệm này.

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Lệnh sau là một ví dụ sẽ tìm nạp các trường ID, Tên và Lương từ bảng CUSTOMERS trong đó mức lương lớn hơn 2000.

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Lệnh sau là một ví dụ, sẽ lấy các trường ID, Tên và Lương từ bảng CUSTOMERS cho khách hàng có tên 'Hardik'. Điều quan trọng cần lưu ý là tất cả các chuỗi phải được đưa ra bên trong dấu nháy đơn ('') trong khi giá trị số nên được đưa ra mà không có bất kỳ dấu ngoặc kép nào như trong ví dụ trên -

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

Lệnh trên sẽ tạo ra kết quả sau.

ID  NAME     SALARY 
5   Hardik   8500.00

Máy chủ MS SQL LIKEmệnh đề được sử dụng để so sánh một giá trị với các giá trị tương tự bằng cách sử dụng các toán tử ký tự đại diện. Có hai ký tự đại diện được sử dụng cùng với toán tử LIKE -

  • Dấu phần trăm (%)
  • Dấu gạch dưới (_)

Dấu phần trăm đại diện cho không, một hoặc nhiều ký tự. Dấu gạch dưới thể hiện một số hoặc một ký tự. Các biểu tượng có thể được sử dụng kết hợp.

Cú pháp

Sau đây là cú pháp cơ bản của% và _.

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

Bạn có thể kết hợp N số điều kiện bằng cách sử dụng toán tử AND hoặc OR. XXXX có thể là bất kỳ giá trị số hoặc chuỗi nào.

Thí dụ

Sau đây là một số ví dụ cho thấy phần WHERE có mệnh đề LIKE khác với các toán tử '%' và '_'.

Sr.No Tuyên bố & Mô tả
1

WHERE SALARY LIKE '200%'

Tìm bất kỳ giá trị nào bắt đầu bằng 200

2

WHERE SALARY LIKE '%200%'

Tìm bất kỳ giá trị nào có 200 ở bất kỳ vị trí nào

3

WHERE SALARY LIKE '_00%'

Tìm bất kỳ giá trị nào có 00 ở vị trí thứ hai và thứ ba

4

WHERE SALARY LIKE '2_%_%'

Tìm bất kỳ giá trị nào bắt đầu bằng 2 và có độ dài ít nhất 3 ký tự

5

WHERE SALARY LIKE '%2'

Tìm bất kỳ giá trị nào kết thúc bằng 2

6

WHERE SALARY LIKE '_2%3'

Tìm bất kỳ giá trị nào có số 2 ở vị trí thứ hai và kết thúc bằng số 3

7

WHERE SALARY LIKE '2___3'

Tìm bất kỳ giá trị nào trong một số có năm chữ số bắt đầu bằng 2 và kết thúc bằng 3

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Lệnh sau là một ví dụ, sẽ hiển thị tất cả các bản ghi từ bảng CUSTOMERS trong đó SALARY bắt đầu bằng 200.

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Máy chủ MS SQL ORDERMệnh đề BY được sử dụng để sắp xếp dữ liệu theo thứ tự tăng dần hoặc giảm dần, dựa trên một hoặc nhiều cột. Một số kết quả truy vấn sắp xếp cơ sở dữ liệu theo thứ tự tăng dần theo mặc định.

Cú pháp

Sau đây là cú pháp cơ bản của mệnh đề ORDER BY.

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

Bạn có thể sử dụng nhiều cột trong mệnh đề ORDER BY. Đảm bảo rằng bất kỳ cột nào bạn đang sử dụng để sắp xếp, cột đó phải nằm trong danh sách cột.

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Lệnh sau là một ví dụ, sẽ sắp xếp kết quả theo thứ tự tăng dần theo TÊN và LƯƠNG.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME, SALARY

Lệnh trên sẽ tạo ra kết quả sau.

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

Lệnh sau là một ví dụ, sẽ sắp xếp kết quả theo thứ tự giảm dần theo NAME.

SELECT * FROM CUSTOMERS 
   ORDER BY NAME DESC

Lệnh trên sẽ cho kết quả sau:

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

Máy chủ SQL GROUP BY mệnh đề được sử dụng phối hợp với câu lệnh SELECT để sắp xếp dữ liệu giống nhau thành các nhóm.

Mệnh đề GROUP BY theo sau mệnh đề WHERE trong câu lệnh SELECT và đứng trước mệnh đề ORDER BY.

Cú pháp

Sau đây là cú pháp cơ bản của mệnh đề GROUP BY. Mệnh đề GROUP BY phải tuân theo các điều kiện trong mệnh đề WHERE và phải đứng trước mệnh đề ORDER BY nếu được sử dụng.

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

Thí dụ

Hãy xem xét bảng CUSTOMERS có các bản ghi sau:

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

Nếu bạn muốn biết tổng số tiền lương của mỗi khách hàng, thì sau đây sẽ là truy vấn GROUP BY.

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Bây giờ chúng ta hãy xem xét bảng CUSTOMERS sau đây có các bản ghi sau có tên trùng lặp.

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

Nếu chúng ta muốn biết tổng số tiền lương của mỗi khách hàng, thì sau đây sẽ là truy vấn GROUP BY.

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Máy chủ MS SQL DISTINCT từ khóa được sử dụng cùng với câu lệnh SELECT để loại bỏ tất cả các bản ghi trùng lặp và chỉ tìm nạp các bản ghi duy nhất.

Có thể có một tình huống khi bạn có nhiều bản ghi trùng lặp trong một bảng. Trong khi tìm nạp các bản ghi như vậy, sẽ hợp lý hơn nếu chỉ tìm nạp các bản ghi duy nhất thay vì tìm nạp các bản ghi trùng lặp.

Cú pháp

Sau đây là cú pháp cơ bản của từ khóa DISTINCT để loại bỏ các bản ghi trùng lặp.

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

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Hãy để chúng tôi xem cách truy vấn SELECT sau đây trả về các bản ghi lương trùng lặp.

SELECT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

Lệnh trên sẽ tạo ra kết quả sau trong đó mức lương 2000 đến gấp đôi, đây là một bản ghi trùng lặp từ bảng gốc.

SALARY 
1500.00 
2000.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Bây giờ chúng ta hãy sử dụng từ khóa DISTINCT với truy vấn SELECT ở trên và xem kết quả.

SELECT DISTINCT SALARY FROM CUSTOMERS 
   ORDER BY SALARY

Lệnh trên tạo ra kết quả sau mà chúng tôi không có bất kỳ mục nhập trùng lặp nào.

SALARY 
1500.00 
2000.00 
4500.00 
6500.00 
8500.00 
10000.00

Máy chủ MS SQL Joinsmệnh đề được sử dụng để kết hợp các bản ghi từ hai hoặc nhiều bảng trong cơ sở dữ liệu. JOIN là một phương tiện để kết hợp các trường từ hai bảng bằng cách sử dụng các giá trị chung cho mỗi bảng.

Hãy xem xét hai bảng sau, bảng (a) CUSTOMERS như sau:

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) Một bảng khác là ORDERS như sau:

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

Hãy để chúng tôi nối hai bảng này trong câu lệnh SELECT của chúng tôi như sau:

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Điều đáng chú ý là phép nối được thực hiện trong mệnh đề WHERE. Một số toán tử có thể được sử dụng để nối các bảng, chẳng hạn như =, <,>, <>, <=,> =,! =, BETWEEN, LIKE và NOT; chúng đều có thể được sử dụng để tham gia các bảng. Tuy nhiên, toán tử phổ biến nhất là ký hiệu bằng.

Các kiểu tham gia MS SQL Server -

Có nhiều kiểu nối khác nhau có sẵn trong MS SQL Server -

  • INNER JOIN - Trả về các hàng khi có sự trùng khớp trong cả hai bảng.

  • LEFT JOIN - Trả về tất cả các hàng từ bảng bên trái, ngay cả khi không có hàng nào phù hợp trong bảng bên phải.

  • RIGHT JOIN - Trả về tất cả các hàng từ bảng bên phải, ngay cả khi không có hàng nào phù hợp trong bảng bên trái.

  • FULL JOIN - Trả về các hàng khi có một kết quả phù hợp trong một trong các bảng.

  • SELF JOIN - Điều này được sử dụng để nối một bảng với chính nó như thể bảng là hai bảng, tạm thời đổi tên ít nhất một bảng trong câu lệnh MS SQL Server.

  • CARTESIAN JOIN - Trả về tích Descartes của các tập hợp các bản ghi từ hai hoặc nhiều bảng đã nối.

A sub-query hoặc là Inner query hoặc là Nested querylà một truy vấn trong một truy vấn SQL Server khác và được nhúng trong mệnh đề WHERE. Truy vấn phụ được sử dụng để trả về dữ liệu sẽ được sử dụng trong truy vấn chính như một điều kiện để hạn chế hơn nữa dữ liệu được truy xuất.

Truy vấn phụ có thể được sử dụng với các câu lệnh SELECT, INSERT, UPDATE và DELETE cùng với các toán tử như =, <,>,> =, <=, IN, BETWEEN, v.v.

Có một số quy tắc mà các truy vấn phụ phải tuân theo:

  • Bạn phải đặt một truy vấn con trong dấu ngoặc đơn.

  • Một truy vấn con phải bao gồm mệnh đề SELECT và mệnh đề FROM.

  • Một truy vấn con có thể bao gồm các mệnh đề WHERE, GROUP BY và HAVING tùy chọn.

  • Một truy vấn con không được bao gồm các mệnh đề COMPUTE hoặc FOR BROWSE.

  • Bạn chỉ có thể bao gồm mệnh đề ORDER BY khi có mệnh đề TOP.

  • Bạn có thể lồng các truy vấn phụ lên đến 32 cấp độ.

Truy vấn con với Câu lệnh SELECT

Cú pháp

Truy vấn con được sử dụng thường xuyên nhất với câu lệnh SELECT. Sau đây là cú pháp cơ bản.

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

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Hãy để chúng tôi áp dụng truy vấn con sau với câu lệnh SELECT.

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

Lệnh trên sẽ tạo ra kết quả sau.

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

Truy vấn con với câu lệnh INSERT

Truy vấn phụ cũng có thể được sử dụng với câu lệnh INSERT. Câu lệnh INSERT sử dụng dữ liệu trả về từ truy vấn con để chèn vào một bảng khác. Dữ liệu đã chọn trong truy vấn con có thể được sửa đổi bằng bất kỳ hàm ký tự, ngày tháng hoặc số nào.

Cú pháp

Sau đây là cú pháp cơ bản.

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

Thí dụ

Hãy xem xét một bảng CUSTOMERS_BKP có cấu trúc tương tự như bảng CUSTOMERS. Sau đây là cú pháp để sao chép bảng CUSTOMERS hoàn chỉnh vào CUSTOMERS_BKP.

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

Truy vấn phụ với Tuyên bố CẬP NHẬT

Truy vấn con có thể được sử dụng cùng với câu lệnh UPDATE. Có thể cập nhật một hoặc nhiều cột trong bảng khi sử dụng truy vấn con với câu lệnh UPDATE.

Cú pháp

Sau đây là cú pháp cơ bản.

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

Thí dụ

Giả sử chúng ta có sẵn bảng CUSTOMERS_BKP là bảng sao lưu của bảng CUSTOMERS.

Ví dụ lệnh sau cập nhật SALARY thêm 0,25 lần trong bảng KHÁCH HÀNG cho tất cả khách hàng có TUỔI lớn hơn hoặc bằng 27.

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

Điều này sẽ tác động đến hai hàng và cuối cùng bảng CUSTOMERS sẽ có các bản ghi sau.

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

Truy vấn con với Tuyên bố DELETE

Truy vấn con có thể được sử dụng cùng với câu lệnh DELETE giống như với bất kỳ câu lệnh nào khác được đề cập ở trên.

Cú pháp

Sau đây là cú pháp cơ bản.

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

Thí dụ

Giả sử chúng ta có sẵn bảng CUSTOMERS_BKP là bảng sao lưu của bảng CUSTOMERS.

Ví dụ lệnh sau đây xóa các bản ghi khỏi bảng CUSTOMERS cho tất cả các khách hàng có TUỔI lớn hơn hoặc bằng 27.

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

Điều này sẽ ảnh hưởng đến hai hàng và cuối cùng bảng CUSTOMERS sẽ có các bản ghi sau.

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

Máy chủ MS SQL Stored procedure được sử dụng để tiết kiệm thời gian viết lại mã bằng cách lưu cùng một mã trong cơ sở dữ liệu và cũng nhận được kết quả đầu ra cần thiết bằng cách truyền các tham số.

Cú pháp

Sau đây là cú pháp cơ bản của việc tạo thủ tục đã lưu trữ.

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

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Lệnh sau là một ví dụ sẽ tìm nạp tất cả các bản ghi từ bảng CUSTOMERS trong cơ sở dữ liệu Testdb.

CREATE PROCEDURE SelectCustomerstabledata 
AS 
SELECT * FROM Testdb.Customers 
GO

Lệnh trên sẽ tạo ra kết quả sau.

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 transactionlà một đơn vị công việc được thực hiện dựa trên cơ sở dữ liệu. Giao dịch là các đơn vị hoặc chuỗi công việc được thực hiện theo một thứ tự logic, cho dù theo cách thủ công bởi người dùng hay tự động bởi một số loại chương trình cơ sở dữ liệu.

Giao dịch là sự truyền bá một hoặc nhiều thay đổi đối với cơ sở dữ liệu. Ví dụ: nếu bạn đang tạo bản ghi hoặc cập nhật bản ghi hoặc xóa bản ghi khỏi bảng, thì bạn đang thực hiện một giao dịch trên bảng. Điều quan trọng là kiểm soát các giao dịch để đảm bảo tính toàn vẹn của dữ liệu và xử lý các lỗi cơ sở dữ liệu.

Thực tế, bạn sẽ kết hợp nhiều truy vấn SQL thành một nhóm và bạn sẽ thực hiện tất cả chúng cùng nhau như một phần của giao dịch.

Thuộc tính của giao dịch

Các giao dịch có bốn thuộc tính tiêu chuẩn sau, thường được gọi bằng từ viết tắt ACID -

  • Atomicity- Đảm bảo rằng tất cả các hoạt động trong đơn vị công việc được hoàn thành thành công; nếu không, giao dịch sẽ bị hủy bỏ tại điểm không thành công và các hoạt động trước đó được khôi phục lại trạng thái cũ.

  • Consistency - Đảm bảo rằng cơ sở dữ liệu thay đổi trạng thái đúng cách khi giao dịch được cam kết thành công.

  • Isolation - Cho phép các giao dịch hoạt động độc lập và minh bạch với nhau.

  • Durability - Đảm bảo rằng kết quả hoặc hiệu lực của giao dịch đã cam kết vẫn tồn tại trong trường hợp hệ thống bị lỗi.

Kiểm soát giao dịch

Có các lệnh sau được sử dụng để kiểm soát các giao dịch:

  • COMMIT - Để lưu các thay đổi.

  • ROLLBACK - Để quay lại các thay đổi.

  • SAVEPOINT - Tạo điểm trong các nhóm giao dịch để QUAY LẠI.

  • SET TRANSACTION - Đặt tên cho một giao dịch.

Các lệnh điều khiển giao dịch chỉ được sử dụng với các lệnh DML chỉ INSERT, UPDATE và DELETE. Chúng không thể được sử dụng trong khi tạo bảng hoặc bỏ chúng vì các hoạt động này được tự động cam kết trong cơ sở dữ liệu.

Để sử dụng các lệnh điều khiển giao dịch trong MS SQL Server, chúng ta phải bắt đầu giao dịch bằng lệnh 'begin tran' hoặc bắt đầu giao dịch nếu không các lệnh này sẽ không hoạt động.

Lệnh COMMIT

Lệnh COMMIT là lệnh giao dịch được sử dụng để lưu các thay đổi được gọi bởi một giao dịch vào cơ sở dữ liệu. Lệnh này lưu tất cả các giao dịch vào cơ sở dữ liệu kể từ lệnh COMMIT hoặc ROLLBACK cuối cùng.

Cú pháp

Sau đây là cú pháp cho lệnh COMMIT.

COMMIT;

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Ví dụ lệnh sau đây sẽ xóa các bản ghi khỏi bảng có age = 25 và sau đó COMMIT các thay đổi trong cơ sở dữ liệu.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25 
COMMIT

Kết quả là, hai hàng trong bảng sẽ bị xóa và câu lệnh SELECT sẽ tạo ra kết quả sau.

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

Lệnh ROLLBACK

Lệnh ROLLBACK là lệnh giao dịch được sử dụng để hoàn tác các giao dịch chưa được lưu vào cơ sở dữ liệu. Lệnh này chỉ có thể được sử dụng để hoàn tác các giao dịch kể từ khi lệnh COMMIT hoặc ROLLBACK cuối cùng được phát hành.

Cú pháp

Sau đây là cú pháp cho lệnh ROLLBACK.

ROLLBACK

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

Ví dụ lệnh sau sẽ xóa các bản ghi khỏi bảng có age = 25 và sau đó QUAY LẠI những thay đổi trong cơ sở dữ liệu.

Begin Tran 
DELETE FROM CUSTOMERS 
   WHERE AGE = 25; 
ROLLBACK

Do đó, thao tác xóa sẽ không ảnh hưởng đến bảng và câu lệnh SELECT sẽ tạo ra kết quả sau.

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

Lệnh SAVEPOINT

SAVEPOINT là một điểm trong giao dịch khi bạn có thể chuyển giao dịch trở lại một điểm nhất định mà không cần quay lại toàn bộ giao dịch.

Cú pháp

Sau đây là cú pháp cho lệnh SAVEPOINT.

SAVE TRANSACTION SAVEPOINT_NAME

Lệnh này chỉ phục vụ trong việc tạo SAVEPOINT giữa các câu lệnh giao dịch. Lệnh ROLLBACK được sử dụng để hoàn tác một nhóm giao dịch.

Sau đây là cú pháp để quay trở lại SAVEPOINT.

ROLLBACK TO SAVEPOINT_NAME

Trong ví dụ sau, chúng tôi sẽ xóa ba bản ghi khác nhau khỏi bảng CUSTOMERS. Chúng tôi sẽ phải tạo một SAVEPOINT trước mỗi lần xóa, để chúng tôi có thể QUAY LẠI bất kỳ SAVEPOINT nào bất kỳ lúc nào để trả lại dữ liệu thích hợp về trạng thái ban đầu.

Thí dụ

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau:

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

Sau đây là một loạt các hoạt động -

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.

Ba lần xóa đã diễn ra, tuy nhiên, chúng tôi đã thay đổi ý định và quyết định QUAY LẠI về SAVEPOINT mà chúng tôi đã xác định là SP2. Vì SP2 được tạo sau lần xóa đầu tiên, hai lần xóa cuối cùng sẽ được hoàn tác -

ROLLBACK Transaction SP2 
Rollback complete.

Lưu ý rằng chỉ lần xóa đầu tiên diễn ra kể từ khi chúng tôi quay trở lại SP2.

SELECT * FROM CUSTOMERS

Đã chọn 6 hàng.

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

Đặt lệnh GIAO DỊCH

Lệnh SET TRANSACTION có thể được sử dụng để bắt đầu một giao dịch cơ sở dữ liệu. Lệnh này được sử dụng để chỉ định các đặc điểm cho giao dịch sau đó.

Cú pháp

Sau đây là cú pháp cho ĐẶT GIAO DỊCH.

SET TRANSACTION ISOLATION LEVEL <Isolationlevel_name>

Indexeslà các bảng tra cứu đặc biệt mà công cụ tìm kiếm cơ sở dữ liệu có thể sử dụng để tăng tốc độ truy xuất dữ liệu. Nói một cách đơn giản, mộtindexlà một con trỏ tới dữ liệu trong bảng. Một chỉ mục trong cơ sở dữ liệu rất giống với một chỉ mục ở cuối sách.

Ví dụ: nếu bạn muốn tham chiếu đến tất cả các trang trong một cuốn sách thảo luận về một chủ đề nhất định, trước tiên bạn tham khảo chỉ mục, mục lục này liệt kê tất cả các chủ đề theo thứ tự bảng chữ cái và sau đó được tham chiếu đến một hoặc nhiều số trang cụ thể.

Một chỉ mục giúp tăng tốc các truy vấn SELECT và mệnh đề WHERE, nhưng nó làm chậm quá trình nhập dữ liệu, với các câu lệnh UPDATE và INSERT. Chỉ mục có thể được tạo hoặc giảm mà không ảnh hưởng đến dữ liệu.

Việc tạo chỉ mục bao gồm câu lệnh CREATE INDEX, cho phép bạn đặt tên cho chỉ mục, chỉ định bảng và cột hoặc các cột nào để lập chỉ mục và cho biết chỉ mục theo thứ tự tăng dần hay giảm dần.

Các chỉ mục cũng có thể là duy nhất, tương tự như ràng buộc UNIQUE, trong đó chỉ mục ngăn các mục nhập trùng lặp trong cột hoặc tổ hợp các cột mà trên đó có chỉ mục.

Lệnh CREATE INDEX

Sau đây là cú pháp cơ bản của CREATE INDEX.

Cú pháp

CREATE INDEX index_name ON table_name

Chỉ mục một cột

Chỉ mục một cột là chỉ mục được tạo chỉ dựa trên một cột của bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE INDEX index_name 
ON table_name (column_name)

Thí dụ

CREATE INDEX singlecolumnindex 
ON customers (ID)

Chỉ mục duy nhất

Chỉ mục duy nhất không chỉ được sử dụng cho hiệu suất mà còn cho tính toàn vẹn của dữ liệu. Chỉ mục duy nhất không cho phép chèn bất kỳ giá trị trùng lặp nào vào bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE UNIQUE INDEX index_name 
on table_name (column_name)

Thí dụ

CREATE UNIQUE INDEX uniqueindex 
on customers (NAME)

Chỉ mục tổng hợp

Chỉ mục tổng hợp là một chỉ mục trên hai hoặc nhiều cột của bảng. Sau đây là cú pháp cơ bản.

Cú pháp

CREATE INDEX index_name on table_name (column1, column2)

Thí dụ

CREATE INDEX compositeindex 
on customers (NAME, ID)

Cho dù tạo chỉ mục cột đơn hay chỉ mục tổng hợp, hãy xem xét (các) cột mà bạn có thể sử dụng rất thường xuyên trong mệnh đề WHERE của truy vấn làm điều kiện lọc.

Nếu chỉ có một cột được sử dụng, chỉ mục một cột nên là lựa chọn. Nếu có hai hoặc nhiều cột thường được sử dụng trong mệnh đề WHERE làm bộ lọc, chỉ mục tổng hợp sẽ là lựa chọn tốt nhất.

Chỉ mục ngầm định

Chỉ mục ngầm định là chỉ mục được tạo tự động bởi máy chủ cơ sở dữ liệu khi một đối tượng được tạo. Chỉ mục được tạo tự động cho các ràng buộc khóa chính và các ràng buộc duy nhất.

Lệnh DROP INDEX

Một chỉ mục có thể bị loại bỏ bằng lệnh MS SQL SERVER DROP. Cần cẩn thận khi giảm chỉ số vì hiệu suất có thể bị chậm lại hoặc được cải thiện.

Cú pháp

Sau đây là cú pháp cơ bản.

DROP INDEX tablename.index_name

Khi nào cần tránh lập chỉ mục?

Mặc dù các chỉ mục nhằm mục đích nâng cao hiệu suất của cơ sở dữ liệu, nhưng đôi khi chúng nên được tránh. Các nguyên tắc sau chỉ ra khi nào việc sử dụng chỉ mục nên được xem xét lại:

  • Chỉ mục không nên được sử dụng trên các bảng nhỏ.

  • Các bảng có hoạt động cập nhật hoặc chèn hàng loạt lớn, thường xuyên sẽ không được lập chỉ mục.

  • Chỉ mục không được sử dụng trên các cột chứa nhiều giá trị NULL.

  • Các cột được thao tác thường xuyên sẽ không được lập chỉ mục.

MS SQL Server được tích hợp sẵn nhiều hàm để thực hiện xử lý trên dữ liệu chuỗi hoặc số. Sau đây là danh sách tất cả các hàm tích hợp SQL hữu ích:

  • SQL Server COUNT Function - Hàm tổng hợp COUNT của SQL Server được sử dụng để đếm số hàng trong bảng cơ sở dữ liệu.

  • SQL Server MAX Function - Hàm tổng hợp SQL Server MAX cho phép chọn giá trị cao nhất (tối đa) cho một cột nhất định.

  • SQL Server MIN Function - Hàm tổng hợp SQL Server MIN cho phép chọn giá trị thấp nhất (tối thiểu) cho một cột nào đó.

  • SQL Server AVG Function - Hàm tổng hợp AVG của SQL Server chọn giá trị trung bình cho cột bảng nhất định.

  • SQL Server SUM Function - Hàm tổng hợp SUM của SQL Server cho phép chọn tổng số cho một cột số.

  • SQL Server SQRT Function - Điều này được sử dụng để tạo ra một căn bậc hai của một số nhất định.

  • SQL Server RAND Function - Điều này được sử dụng để tạo một số ngẫu nhiên bằng lệnh SQL.

  • SQL Server CONCAT Function - Điều này được sử dụng để nối nhiều tham số thành một tham số duy nhất.

  • SQL Server Numeric Functions - Danh sách đầy đủ các hàm SQL cần thiết để thao tác với các số trong SQL.

  • SQL Server String Functions - Danh sách đầy đủ các hàm SQL cần thiết để thao tác với chuỗi trong SQL.

MS SQL Server Các hàm chuỗi có thể được áp dụng trên giá trị chuỗi hoặc sẽ trả về giá trị chuỗi hoặc dữ liệu số.

Sau đây là danh sách các hàm chuỗi với các ví dụ.

ASCII ()

Giá trị mã ascii sẽ xuất hiện dưới dạng đầu ra cho một biểu thức ký tự.

Thí dụ

Truy vấn sau sẽ cung cấp giá trị mã Ascii của một ký tự nhất định.

Select ASCII ('word')

CHAR ()

Ký tự sẽ xuất hiện dưới dạng đầu ra cho mã Ascii hoặc số nguyên đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp ký tự cho một số nguyên nhất định.

Select CHAR(97)

NCHAR ()

Ký tự Unicode sẽ xuất hiện dưới dạng đầu ra cho một số nguyên nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp ký tự Unicode cho một số nguyên nhất định.

Select NCHAR(300)

CHARINDEX ()

Vị trí bắt đầu cho biểu thức tìm kiếm đã cho sẽ xuất hiện dưới dạng đầu ra trong một biểu thức chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp vị trí bắt đầu của ký tự 'G' cho biểu thức chuỗi đã cho 'KING'.

Select CHARINDEX('G', 'KING')

TRÁI()

Phần bên trái của chuỗi đã cho cho đến khi số ký tự được chỉ định sẽ xuất hiện dưới dạng đầu ra cho một chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp cho chuỗi 'WORL' như đã đề cập 4 số ký tự cho chuỗi 'WORLD' đã cho.

Select LEFT('WORLD', 4)

ĐÚNG()

Phần bên phải của chuỗi đã cho cho đến khi số ký tự được chỉ định sẽ xuất hiện dưới dạng đầu ra cho một chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp cho chuỗi 'DIA' như đã đề cập 3 số ký tự cho chuỗi 'INDIA' đã cho.

Select RIGHT('INDIA', 3)

SUBSTRING ()

Một phần của chuỗi dựa trên giá trị vị trí bắt đầu và giá trị độ dài sẽ xuất hiện dưới dạng đầu ra cho một chuỗi nhất định.

Thí dụ

Các truy vấn sau sẽ cung cấp các chuỗi 'WOR', 'DIA', 'ING' như chúng ta đã đề cập (1,3), (3,3) và (2,3) làm giá trị bắt đầu và độ dài tương ứng cho các chuỗi đã cho 'WORLD' , 'INDIA' và 'KING'.

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

LEN ()

Số ký tự sẽ xuất hiện dưới dạng đầu ra cho một biểu thức chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ đưa ra giá trị 5 cho biểu thức chuỗi 'HELLO'.

Select LEN('HELLO')

THẤP HƠN()

Chuỗi chữ thường sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp 'sqlserver' cho dữ liệu ký tự 'SQLServer'.

Select LOWER('SQLServer')

PHÍA TRÊN()

Chuỗi chữ hoa sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định.

Thí dụ

Truy vấn sau sẽ cung cấp 'SQLSERVER' cho dữ liệu ký tự 'SqlServer'.

Select UPPER('SqlServer')

LTRIM ()

Biểu thức chuỗi sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định sau khi loại bỏ các khoảng trống ở đầu.

Thí dụ

Truy vấn sau sẽ cung cấp 'WORLD' cho dữ liệu ký tự 'WORLD'.

Select LTRIM('   WORLD')

RTRIM ()

Biểu thức chuỗi sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định sau khi loại bỏ các khoảng trống ở cuối.

Thí dụ

Truy vấn sau sẽ cung cấp 'INDIA' cho dữ liệu ký tự 'INDIA'.

Select RTRIM('INDIA   ')

THAY THẾ()

Biểu thức chuỗi sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định sau khi thay thế tất cả các lần xuất hiện của ký tự được chỉ định bằng ký tự được chỉ định.

Thí dụ

Truy vấn sau sẽ cung cấp chuỗi 'KNDKA' cho dữ liệu chuỗi 'INDIA'.

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

REPLICATE ()

Biểu thức chuỗi lặp lại sẽ xuất hiện dưới dạng đầu ra cho dữ liệu chuỗi đã cho với số lần được chỉ định.

Thí dụ

Truy vấn sau sẽ cung cấp chuỗi 'WORLDWORLD' cho dữ liệu chuỗi 'WORLD'.

Select REPLICATE('WORLD', 2)

ĐẢO NGƯỢC()

Biểu thức chuỗi ngược sẽ xuất hiện dưới dạng đầu ra cho dữ liệu chuỗi đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp chuỗi 'DLROW' cho dữ liệu chuỗi 'WORLD'.

Select REVERSE('WORLD')

SOUNDEX ()

Trả về mã bốn ký tự (SOUNDEX) để đánh giá mức độ giống nhau của hai chuỗi đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp 'S530' cho các chuỗi 'Smith', 'Smyth'.

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

SỰ KHÁC BIỆT()

Giá trị số nguyên sẽ xuất hiện dưới dạng đầu ra của hai biểu thức đã cho.

Thí dụ

Truy vấn sau sẽ đưa ra giá trị 4 cho biểu thức 'Smith', 'Smyth'.

Select Difference('Smith','Smyth')

Note - Nếu giá trị đầu ra là 0, nó chỉ ra yếu hoặc không có sự giống nhau giữa 2 biểu thức.

KHÔNG GIAN()

Chuỗi sẽ xuất hiện dưới dạng đầu ra với số khoảng trắng được chỉ định.

Thí dụ

Truy vấn sau sẽ cho kết quả 'I LOVE INDIA'.

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

ĐỒ ĐẠC()

Biểu thức chuỗi sẽ xuất hiện dưới dạng đầu ra cho một dữ liệu chuỗi nhất định sau khi thay thế từ ký tự bắt đầu cho đến độ dài được chỉ định bằng ký tự được chỉ định.

Thí dụ

Truy vấn sau sẽ cung cấp chuỗi 'AIJKFGH' cho dữ liệu chuỗi 'ABCDEFGH' theo ký tự bắt đầu nhất định và độ dài tương ứng là 2 và 4 và 'IJK' là chuỗi mục tiêu đã chỉ định.

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

STR ()

Dữ liệu ký tự sẽ xuất hiện dưới dạng đầu ra cho dữ liệu số đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp 187,37 cho 187,369 đã cho dựa trên độ dài được chỉ định là 6 và số thập phân là 2.

Select STR(187.369,6,2)

UNICODE ()

Giá trị số nguyên sẽ xuất hiện dưới dạng đầu ra cho ký tự đầu tiên của biểu thức đã cho.

Thí dụ

Truy vấn sau đây sẽ cung cấp 82 cho biểu thức 'RAMA'.

Select UNICODE('RAMA')

QUOTENAME ()

Chuỗi đã cho sẽ xuất hiện dưới dạng đầu ra với dấu phân cách được chỉ định.

Thí dụ

Truy vấn sau sẽ cung cấp "RAMA" cho chuỗi 'RAMA' đã cho vì chúng tôi đã chỉ định dấu ngoặc kép làm dấu phân cách.

Select QUOTENAME('RAMA','"')

PATINDEX ()

Vị trí bắt đầu của lần xuất hiện đầu tiên từ biểu thức đã cho khi chúng tôi chỉ định vị trí 'I' là bắt buộc.

Thí dụ

Truy vấn sau sẽ đưa ra kết quả 1 cho 'INDIA'.

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

ĐỊNH DẠNG()

Biểu thức đã cho sẽ xuất hiện dưới dạng đầu ra với định dạng được chỉ định.

Thí dụ

Truy vấn sau sẽ cung cấp 'Thứ Hai, ngày 16 tháng 11 năm 2015' cho hàm getdate theo định dạng được chỉ định với tên ngày trong tuần là 'D'.

SELECT FORMAT ( getdate(), 'D')

CONCAT ()

Chuỗi đơn sẽ xuất hiện sau khi nối các giá trị tham số đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp 'A, B, C' cho các tham số đã cho.

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

Sau đây là danh sách các hàm ngày trong MS SQL Server.

HẸN GẶP()

Nó sẽ trả về ngày hiện tại cùng với thời gian.

Cú pháp

Cú pháp cho hàm trên -

GETDATE()

Thí dụ

Truy vấn sau sẽ trả về ngày hiện tại cùng với thời gian trong MS SQL Server.

Select getdate() as currentdatetime

DATEPART ()

Nó sẽ trả về một phần ngày hoặc giờ.

Cú pháp

Cú pháp cho hàm trên -

DATEPART(datepart, datecolumnname)

Thí dụ

Example 1 - Truy vấn sau sẽ trả về một phần của ngày hiện tại trong MS SQL Server.

Select datepart(day, getdate()) as currentdate

Example 2 - Truy vấn sau sẽ trả về một phần của tháng hiện tại trong MS SQL Server.

Select datepart(month, getdate()) as currentmonth

DATEADD ()

Nó sẽ hiển thị ngày và giờ bằng cách cộng hoặc trừ ngày và khoảng thời gian.

Cú pháp

Cú pháp cho hàm trên -

DATEADD(datepart, number, datecolumnname)

Thí dụ

Truy vấn sau sẽ trả về ngày và giờ sau 10 ngày kể từ ngày và giờ hiện tại trong MS SQL Server.

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

DATEDIFF ()

Nó sẽ hiển thị ngày và giờ giữa hai ngày.

Cú pháp

Cú pháp cho hàm trên -

DATEDIFF(datepart, startdate, enddate)

Thí dụ

Truy vấn sau sẽ trả về chênh lệch giờ giữa ngày 2015-11-16 và 2015-11-11 trong MS SQL Server.

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

ĐỔI()

Nó sẽ hiển thị ngày và giờ ở các định dạng khác nhau.

Cú pháp

Cú pháp cho hàm trên -

CONVERT(datatype, expression, style)

Thí dụ

Các truy vấn sau sẽ trả về ngày và giờ ở định dạng khác trong MS SQL Server.

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

Các hàm số của MS SQL Server có thể được áp dụng trên dữ liệu số và sẽ trả về dữ liệu số.

Sau đây là danh sách các hàm Numeric với các ví dụ.

ABS ()

Giá trị tuyệt đối sẽ xuất hiện dưới dạng đầu ra cho biểu thức số.

Thí dụ

Truy vấn sau sẽ cho giá trị tuyệt đối.

Select ABS(-22)

ACOS ()

Giá trị cosin Arc sẽ xuất hiện dưới dạng đầu ra cho biểu thức số được chỉ định.

Thí dụ

Truy vấn sau đây sẽ cung cấp giá trị cosin cung bằng 0.

Select ACOS(0)

ASIN ()

Giá trị Arc sin sẽ xuất hiện dưới dạng đầu ra cho biểu thức số được chỉ định.

Thí dụ

Truy vấn sau sẽ cho giá trị cung sin là 0.

Select ASIN(0)

ATAN ()

Giá trị tiếp tuyến của cung sẽ xuất hiện dưới dạng đầu ra cho biểu thức số được chỉ định.

Thí dụ

Truy vấn sau đây sẽ cung cấp giá trị tiếp tuyến của cung là 0.

Select ATAN(0)

ATN2 ()

Giá trị tiếp tuyến của vòng cung trong cả bốn góc phần tư sẽ xuất hiện dưới dạng đầu ra cho biểu thức số được chỉ định.

Thí dụ

Truy vấn sau đây sẽ cung cấp giá trị tiếp tuyến của cung trong cả bốn góc phần tư của 0.

Select ATN2(0, -1)

Hãy xem xét bảng KHÁCH HÀNG có các bản ghi sau.

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

GIỮA()

Nếu các giá trị tồn tại giữa hai biểu thức đã cho thì chúng sẽ xuất hiện dưới dạng đầu ra.

Thí dụ

Truy vấn sau đây sẽ cho kết quả sau.

SELECT salary from customers where salary between 2000 and 8500

Đầu ra

salary 
2000.00 
2000.00 
6500.00 
8500.00 
4500.00

MIN ()

Giá trị nhỏ nhất sẽ xuất phát từ biểu thức đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp '1500,00' cho biểu thức 'tiền lương' đã cho từ bảng khách hàng.

Select MIN(salary)from CUSTOMERS

MAX ()

Giá trị lớn nhất sẽ xuất phát từ biểu thức đã cho.

Thí dụ

Truy vấn sau sẽ cung cấp '10000,00' cho biểu thức 'tiền lương' đã cho từ bảng khách hàng.

Select MAX(salary)from CUSTOMERS

SQRT ()

Căn bậc hai của biểu thức số đã cho sẽ là đầu ra.

Thí dụ

Truy vấn sau đây sẽ cho kết quả là 2 đối với biểu thức 4 số đã cho.

Select SQRT(4)

SỐ PI()

Giá trị PI sẽ xuất hiện dưới dạng đầu ra.

Thí dụ

Truy vấn sau sẽ cung cấp 3,14159265358979 cho giá trị PI.

Select PI()

TRẦN NHÀ()

Giá trị đã cho sẽ xuất hiện dưới dạng đầu ra sau khi làm tròn số thập phân là giá trị cao nhất tiếp theo.

Thí dụ

Truy vấn sau sẽ cho 124 cho giá trị 123,25 đã cho.

Select CEILING(123.25)

SÀN NHÀ()

Giá trị đã cho sẽ xuất hiện dưới dạng đầu ra sau khi làm tròn số thập phân nhỏ hơn hoặc bằng biểu thức.

Thí dụ

Truy vấn sau sẽ cung cấp 123 cho giá trị 123,25 đã cho.

Select FLOOR(123.25)

LOG ()

Lôgarit tự nhiên của biểu thức đã cho sẽ là đầu ra.

Thí dụ

Truy vấn sau sẽ trả về 0 cho giá trị 1 đã cho.

Select LOG(1)