Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hướng dẫn sử dụng SQL Server - Mọi thứ bạn cần để thành thạo Transact-SQL

Trong thị trường ngày nay, nơi một lượng lớn dữ liệu được tạo ra mỗi ngày, điều rất quan trọng là phải hiểu cách xử lý dữ liệu. SQL Server là một môi trường tích hợp do Microsoft phát triển để xử lý dữ liệu. Trong bài viết này về hướng dẫn SQL Server, bạn sẽ học tất cả các thao tác và lệnh mà bạn cần để khám phá cơ sở dữ liệu của mình.

Để bạn hiểu rõ hơn, tôi đã chia blog thành các loại sau:

Lệnh Mô tả

Lệnh Ngôn ngữ Định nghĩa Dữ liệu (DDL)

Tập hợp các lệnh này được sử dụng để xác định cơ sở dữ liệu.

Lệnh ngôn ngữ thao tác dữ liệu (DML)

Các lệnh thao tác được sử dụng để thao tác dữ liệu có trong cơ sở dữ liệu.

Lệnh ngôn ngữ điều khiển dữ liệu (DCL)

Bộ lệnh này xử lý các quyền, quyền và các điều khiển khác của hệ thống cơ sở dữ liệu.

Lệnh ngôn ngữ điều khiển giao dịch (TCL)

Các lệnh này được sử dụng để xử lý giao dịch của cơ sở dữ liệu.

Ngoài các lệnh, các chủ đề sau được đề cập trong bài viết này:

  1. SQL Server là gì?
  2. Cài đặt SQL Server
  3. Kết nối với SQL Server bằng SSMS
  4. Công cụ cơ sở dữ liệu truy cập
  5. Kiến trúc máy chủ SQL
  6. Nhận xét trong SQL
  7. Các kiểu dữ liệu máy chủ SQL
  8. Các phím trong cơ sở dữ liệu
  9. Ràng buộc trong cơ sở dữ liệu
  10. Người điều hành
  11. Các hàm tổng hợp
  12. Các chức năng do người dùng xác định
  13. Truy vấn lồng nhau
  14. Tham gia
  15. Vòng lặp
  16. Thủ tục được lưu trữ
  17. Xử lý ngoại lệ

*** LƯU Ý *** Trong Hướng dẫn SQL Server này, tôi sẽ xem xét cơ sở dữ liệu dưới đây làm ví dụ, để chỉ cho bạn cách học và viết lệnh.

StudentID Tên sinh viên ParentName Số điện thoại Địa chỉ Thành phố Quốc gia
1 Vihaan Akriti Mehra 9955339966 Lữ đoàn Đường bộ 9 Hyderabad Ấn Độ
2 Manasa Shourya Sharma 9234568762 Đường Mayo 15 Kolkata Ấn Độ
3 Anay Soumya Mishra 9876914261 Marathalli House No 101 Bengaluru Ấn Độ
4 Preeti Rohan Sinha 9765432234 Queens Road 40 Delhi Ấn Độ
5 Shanaya Abhinay Agarwal 9878969068 Số 21 Phố Oberoi Mumbai Ấn Độ

Trước khi bắt đầu hiểu các lệnh khác nhau được sử dụng trong SQL Server, hãy hiểu SQL Server là gì, kiến ​​trúc của nó và cách cài đặt nó.

SQL Server là gì?

Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ. Nó hỗ trợ ngôn ngữ Truy vấn có cấu trúc và đi kèm với việc triển khai ngôn ngữ SQL riêng của nó là Transact-SQL (T-SQL) . Nó có một môi trường tích hợp để xử lý cơ sở dữ liệu SQL, đó là SQL Server Management Studio.

Các thành phần chính của SQL Server như sau:

  • Công cụ cơ sở dữ liệu: Thành phần này xử lý việc lưu trữ, Xử lý giao dịch nhanh chóng và Bảo mật dữ liệu.
  • Máy chủ SQL - Dịch vụ này được sử dụng để bắt đầu, dừng, tạm dừng và tiếp tục phiên bản của MS SQL Server.
  • Tác nhân SQL Server - Dịch vụ Server Agent đóng vai trò của bộ lập lịch tác vụ và được kích hoạt bởi bất kỳ sự kiện nào hoặc theo yêu cầu.
  • Trình duyệt SQL Server - Dịch vụ này được sử dụng để kết nối yêu cầu đến với phiên bản SQL Server mong muốn.
  • Tìm kiếm toàn văn bản của Máy chủ SQL - Được sử dụng để cho phép người dùng chạy các truy vấn toàn văn bản dựa trên dữ liệu ký tự trong bảng SQL.
  • SQL Server VSS Writer - Cho phép sao lưu và khôi phục tệp dữ liệu khi Máy chủ SQL không chạy.
  • Dịch vụ Phân tích Máy chủ SQL (SSAS) - Dịch vụ này được sử dụng để cung cấp khả năng phân tích dữ liệu, khai thác dữ liệu và học máy. SQL Server cũng được tích hợp với Python và R để phân tích dữ liệu nâng cao.
  • Dịch vụ báo cáo máy chủ SQL (SSRS) - Như tên cho thấy, dịch vụ này được sử dụng để cung cấp các tính năng và khả năng ra quyết định, bao gồm tích hợp với Hadoop.
  • Dịch vụ Tích hợp Máy chủ SQL (SSIS) - Dịch vụ này được sử dụng để thực hiện các hoạt động ETL cho các loại dữ liệu khác nhau từ nhiều nguồn dữ liệu.

Bây giờ, bạn đã biết MS SQL Server là gì, hãy cùng chúng tôi chuyển sang bài viết này về hướng dẫn SQL Server và hiểu cách cài đặt và thiết lập SQL Server.

Cài đặt SQL Server

Làm theo các bước dưới đây để cài đặt SQL Server:

Bước 1: Truy cập trang chính thức của Tải xuống Microsoft SQL Server , nơi bạn sẽ tìm thấy tùy chọn để cài đặt SQL Server tại chỗ hoặc trên đám mây.

Bước 2: Bây giờ, cuộn xuống và bạn sẽ thấy hai tùy chọn: Phiên bản dành cho nhà phát triển &doanh nghiệp . Tại đây, tôi sẽ tải xuống Phiên bản dành cho nhà phát triển . Để tải xuống, bạn chỉ cần nhấp vào nút Tải xuống ngay bây giờ lựa chọn. Tham khảo bên dưới.

Bước 3: Sau khi ứng dụng được tải xuống, hãy nhấp đúp vào tệp và bạn sẽ thấy cửa sổ sau.

Bước 4: Bây giờ, bạn có thể chọn một trong 3 tùy chọn để thiết lập SQL Server. Ở đây, tôi sẽ chỉ chọn Tùy chọn cơ bản . Khi chọn tùy chọn loại cài đặt, màn hình tiếp theo sẽ là chấp nhận thỏa thuận cấp phép. Để làm điều đó, hãy nhấp vào Chấp nhận trong cửa sổ sau.

Bước 5: Tiếp theo, bạn phải chỉ định vị trí cài đặt SQL Server. Sau đó, bạn phải nhấp vào Cài đặt.

Sau khi bạn nhấp vào Cài đặt , bạn sẽ thấy rằng các gói bắt buộc đang được tải xuống. Bây giờ, sau khi cài đặt xong, bạn sẽ thấy màn hình sau:

Tại đây, bạn có thể tiếp tục và nhấp vào Kết nối ngay hoặc bạn có thể Tùy chỉnh cài đặt. Để bạn hiểu rõ hơn, tôi sẽ tiếp tục và chọn Tùy chỉnh.

Bước 6: Sau khi bạn nhấp vào Tùy chỉnh trong cửa sổ trên, bạn sẽ thấy trình hướng dẫn sau đang mở ra. trong cửa sổ sau, nhấp vào Tiếp theo.

Bước 7: Sau khi các quy tắc được cài đặt tự động, hãy nhấp vào Tiếp theo . Tham khảo bên dưới.

Bước 8: Tiếp theo, bạn phải chọn kiểu cài đặt. Vì vậy, hãy chọn tùy chọn Thực hiện cài đặt mới của SQL Server 2017 rồi nhấp vào Tiếp theo.

Bước 9: Trong trình hướng dẫn mở ra, hãy chọn phiên bản: Nhà phát triển. Sau đó, nhấp vào Tiếp theo . Tham khảo bên dưới.

Bước 10: Bây giờ, hãy đọc và chấp nhận các thỏa thuận cấp phép bằng cách đăng ký vào nút radio rồi nhấp vào Tiếp theo . Tham khảo bên dưới.

Bước 11: Trong trình hướng dẫn bên dưới, bạn có thể chọn các tính năng mà bạn muốn cài đặt. Ngoài ra, bạn có thể chọn thư mục gốc phiên bản và sau đó nhấp vào Tiếp theo . Ở đây, tôi sẽ chọn Dịch vụ công cụ cơ sở dữ liệu .

Bước 12: Tiếp theo, bạn phải đặt tên cho phiên bản và tự động ID phiên bản sẽ được tạo. Ở đây, tôi sẽ đặt tên cho instance là “edureka”. Sau đó, nhấp vào Tiếp theo.

Bước 13: Trong trình hướng dẫn Cấu hình Máy chủ, nhấp vào Tiếp theo .

Bước 14: Bây giờ, bạn phải bật các chế độ xác thực. Tại đây, bạn sẽ thấy Chế độ xác thực Windows Chế độ hỗn hợp . Tôi sẽ chọn Chế độ hỗn hợp. Sau đó, đề cập đến mật khẩu và sau đó tôi sẽ thêm người dùng hiện tại làm Quản trị viên bằng cách chọn Thêm người dùng hiện tại tùy chọn.

Bước 15: Sau đó, chọn đường dẫn tệp cấu hình và nhấp vào Cài đặt .

Sau khi cài đặt xong, bạn sẽ thấy màn hình sau:

Kết nối với SQL Server bằng SSMS

Sau khi SQL Server được cài đặt, bước tiếp theo của bạn là kết nối SQL Server với SQL Server Management Studio. Để làm điều đó, hãy làm theo các bước sau:

Bước 1: Quay lại cửa sổ sau và nhấp vào cài đặt SSMS tùy chọn.

Bước 2: Khi bạn nhấp vào tùy chọn đó, bạn sẽ được chuyển hướng đến trang sau, nơi bạn phải chọn Tải xuống SSMS.

Bước 3: Sau khi tải xuống thiết lập, hãy nhấp đúp vào ứng dụng và bạn sẽ thấy trình hướng dẫn sau sẽ mở ra.

Bước 4: Nhấp vào Tùy chọn cài đặt , trong cửa sổ trên và bạn sẽ thấy rằng quá trình cài đặt sẽ bắt đầu.

Bước 5: Sau khi cài đặt xong, bạn sẽ nhận được một hộp thoại như hình dưới đây.

Sau khi bạn cài đặt SSMS, bước tiếp theo là truy cập vào Công cụ cơ sở dữ liệu .

Truy cập Công cụ Cơ sở dữ liệu

Khi bạn mở Studio quản lý máy chủ SQL từ trình đơn bắt đầu , một cửa sổ sẽ mở ra tương tự như cửa sổ hiển thị trong hình bên dưới.

Tại đây, hãy đề cập đến Tên máy chủ, Chế độ xác thực và nhấp vào Kết nối.

Sau khi bạn nhấp vào Kết nối , bạn sẽ thấy màn hình sau.

Vâng, đó là cách bạn cài đặt và thiết lập SQL Server. Bây giờ, tiếp tục trong hướng dẫn SQL Server này, chúng ta hãy hiểu các thành phần khác nhau của kiến ​​trúc SQL Server.

Kiến trúc máy chủ SQL

Kiến trúc của SQL Server như sau:

  • Máy chủ - Đây là nơi các dịch vụ SQL được cài đặt và cơ sở dữ liệu cư trú
  • Công cụ quan hệ - Chứa trình phân tích cú pháp truy vấn, trình tối ưu hóa và trình thực thi; và việc thực thi diễn ra trong công cụ quan hệ.
  • Trình phân tích cú pháp lệnh - Kiểm tra cú pháp của truy vấn và chuyển đổi truy vấn sang ngôn ngữ máy.
  • Trình tối ưu hóa - Chuẩn bị kế hoạch thực thi dưới dạng đầu ra bằng cách lấy số liệu thống kê, truy vấn và cây Algebrator làm đầu vào.
  • Người thực thi truy vấn - Đây là nơi mà các truy vấn được thực thi từng bước
  • Công cụ lưu trữ - Bộ phận này chịu trách nhiệm lưu trữ và truy xuất dữ liệu trên hệ thống lưu trữ, thao tác dữ liệu, quản lý và khóa các giao dịch.

Bây giờ, bạn đã biết cách thiết lập và cài đặt SQL Server và các thành phần khác nhau của nó, hãy bắt đầu với việc viết lệnh trong SQL Server. Tuy nhiên, trước đó hãy để tôi trình bày cách viết nhận xét trong SQL Server.

Nhận xét trong SQL Server

Có hai cách để bạn có thể nhận xét trong SQL, tức là sử dụng s nhận xét nội bộ hoặc m nhận xét dòng cuối .

Nhận xét một dòng

Nhận xét trên một dòng bắt đầu bằng hai dấu gạch ngang (-). Do đó, văn bản được đề cập sau (-), cho đến cuối một dòng sẽ bị trình biên dịch bỏ qua.

Ví dụ:

--Example of single line comments

Nhận xét nhiều dòng

Nhận xét nhiều dòng bắt đầu bằng / * và kết thúc bằng * / . Do đó, văn bản được đề cập giữa / * * / sẽ bị trình biên dịch bỏ qua.

Ví dụ:

/* Example for 
multi-line comments */

Bây giờ, trong bài viết này về hướng dẫn SQL Server, chúng ta hãy bắt đầu với nhóm lệnh đầu tiên, tức là các lệnh Ngôn ngữ Định nghĩa Dữ liệu.

Lệnh ngôn ngữ định nghĩa dữ liệu

Phần này của bài viết sẽ cung cấp cho bạn ý tưởng về các lệnh với sự trợ giúp của chúng mà bạn có thể xác định cơ sở dữ liệu của mình. Các lệnh như sau:

  • TẠO
  • DROP
  • ALTER
  • TRUNCATE
  • RENAME

TẠO

Câu lệnh này được sử dụng để tạo bảng, cơ sở dữ liệu hoặc chế độ xem.

Tuyên bố 'TẠO CƠ SỞ DỮ LIỆU'

Câu lệnh này được sử dụng để tạo cơ sở dữ liệu.

Cú pháp

CREATE DATABASE DatabaseName;

Ví dụ

CREATE DATABASE Students;

Tuyên bố 'TẠO BẢNG'

Đúng như tên gọi, câu lệnh này được sử dụng để tạo một bảng.

Cú pháp

CREATE TABLE TableName (
Column1 datatype,
Column2 datatype,
Column3 datatype,
....

ColumnN datatype
);

Ví dụ

CREATE TABLE StudentInfo
(
StudentID int,
StudentName varchar(8000),
ParentName varchar(8000),
PhoneNumber int,
AddressofStudent varchar(8000),
City varchar(8000),
Country varchar(8000)
);

DROP

Câu lệnh này được sử dụng để xóa một bảng, cơ sở dữ liệu hoặc chế độ xem hiện có.

Tuyên bố ‘DROP DATABASE’

Câu lệnh này được sử dụng để loại bỏ cơ sở dữ liệu hiện có. Thông tin đầy đủ có trong cơ sở dữ liệu sẽ bị mất ngay sau khi bạn thực hiện lệnh dưới đây.

Cú pháp

DROP DATABASE DatabaseName;

Ví dụ

DROP DATABASE Students;

Tuyên bố ‘DROP TABLE’

Câu lệnh này được sử dụng để xóa một bảng hiện có. Thông tin đầy đủ có trong bảng sẽ bị mất ngay khi bạn thực hiện lệnh dưới đây.

Cú pháp

DROP TABLE TableName;

Ví dụ

DROP TABLE StudentInfo;

ALTER

Lệnh ALTER được sử dụng để thêm, xóa hoặc sửa đổi các cột hoặc ràng buộc trong bảng hiện có.

Tuyên bố ‘ALTER TABLE’

Câu lệnh này được sử dụng để thêm, xóa, sửa đổi các cột trong một bảng đã có từ trước.

Tuyên bố ‘ALTER TABLE’ với ADD / DROP COLUMN

Câu lệnh ALTER TABLE được sử dụng với lệnh ADD / DROP Column để thêm và xóa một cột.

Cú pháp

ALTER TABLE TableName
ADD ColumnName Datatype;

ALTER TABLE TableName
DROP COLUMN ColumnName;

Ví dụ

--ADD Column BloodGroup:
ALTER TABLE StudentInfo
ADD BloodGroup varchar(8000);
 
--DROP Column BloodGroup:
ALTER TABLE StudentInfo
DROP COLUMN BloodGroup ;

Tuyên bố ‘ALTER TABLE’ với ALTER COLUMN

Câu lệnh ALTER TABLE có thể được sử dụng với cột ALTER để thay đổi kiểu dữ liệu của cột hiện có trong bảng.

Cú pháp

ALTER TABLE TableName
ALTER COLUMN ColumnName Datatype;

Ví dụ

--Add a column DOB and change the data type from date to datetime.
ALTER TABLE StudentInfo
ADD DOB date;
ALTER TABLE StudentInfo
ALTER COLUMN DOB datetime;

TRUNCATE

Lệnh SQL này được sử dụng để xóa thông tin có trong bảng nhưng không xóa chính bảng đó. Vì vậy, nếu bạn muốn xóa thông tin có trong bảng và không xóa chính bảng đó, bạn phải sử dụng lệnh TRUNCATE. Nếu không, hãy sử dụng lệnh DROP.

Cú pháp

TRUNCATE TABLE TableName;

Ví dụ

TRUNCATE TABLE StudentInfo;

RENAME

Câu lệnh này được sử dụng để đổi tên một hoặc nhiều bảng.

Cú pháp

sp_rename 'OldTableName', 'NewTableName';

Ví dụ

sp_rename 'StudentInfo', 'Infostudents';

Tiếp tục trong bài viết này về hướng dẫn SQL Server, hãy để chúng tôi hiểu các kiểu dữ liệu khác nhau được SQL Server hỗ trợ.

Kiểu dữ liệu máy chủ SQL

Danh mục loại dữ liệu Tên loại dữ liệu Mô tả Phạm vi / Cú pháp
Số chính xác số Được sử dụng để lưu trữ các giá trị số và có số tỷ lệ và độ chính xác cố định - 10 ^ 38 +1 đến 10 ^ 38 - 1.
tinyint Được sử dụng để lưu trữ các giá trị số nguyên 0 đến 255
smallint Được sử dụng để lưu trữ các giá trị số nguyên - 2 ^ 15 (-32,768) đến 2 ^ 15-1 (32,767)
bigint Được sử dụng để lưu trữ các giá trị số nguyên - 2 ^ 63 (-9,223,372,036,854,775,808) đến 2 ^ 63-1 (9,223,372,036,854,775,807)
int Được sử dụng để lưu trữ các giá trị số nguyên - 2 ^ 31 (-2,147,483,648) đến 2 ^ 31-1 (2,147,483,647)
bit Lưu trữ kiểu dữ liệu số nguyên có giá trị 0, 1 hoặc NULL 0, 1 hoặc NULL
thập phân Được sử dụng để lưu trữ các giá trị số và có số tỷ lệ và độ chính xác cố định - 10 ^ 38 +1 đến 10 ^ 38 - 1.
smallmoney Được sử dụng để lưu trữ giá trị tiền tệ hoặc tiền tệ. - 214.748.3648 đến 214.748.3647
tiền Được sử dụng để lưu trữ giá trị tiền tệ hoặc tiền tệ. - 922.337.203.685.477.5808 đến 922.337.203.685.477.5807 (-922.337.203.685.477,58
tới 922.337.203.685.477,58 cho Informatica.
Số gần đúng float Được sử dụng để lưu trữ dữ liệu số dấu phẩy động - 1,79E + 308 đến -2,23E-308, 0 và 2,23E-308 đến 1,79E + 308
real Được sử dụng để lưu trữ dữ liệu số dấu phẩy động - 3,40E + 38 đến -1,18E - 38, 0 và 1,18E - 38 đến 3,40E + 38
Ngày và giờ ngày Được sử dụng để xác định ngày trong SQL Server. Cú pháp:date
smalldatetime Được sử dụng để xác định một ngày được kết hợp với một thời gian trong ngày; trong đó thời gian dựa trên một ngày 24 giờ, với giây luôn là 0 (:00) và không có giây phân số. Cú pháp:smalldatetime
datetime Được sử dụng để xác định ngày được kết hợp với thời gian trong ngày với các giây phân số dựa trên đồng hồ 24 giờ. Cú pháp:datetime
datetime2 datetime2 là phần mở rộng của ngày giờ hiện tại loại có độ chính xác phân số mặc định lớn hơn, phạm vi ngày nhỏ hơn. Cú pháp:datetime2
datetimeoffset Được sử dụng để xác định ngày được kết hợp với thời gian trong ngày có nhận biết múi giờ. Nó dựa trên đồng hồ 24 giờ. Cú pháp:datetimeoffset
time Được sử dụng để xác định thời gian trong ngày. Cú pháp:time
Chuỗi ký tự char Được sử dụng để lưu trữ các ký tự có kích thước cố định. char [( n )] trong đó giá trị n thay đổi từ 1 - 8.000
varchar Được sử dụng để lưu trữ các ký tự có độ dài thay đổi. varchar [( n | max)] trong đó giá trị n thay đổi từ 1-8000 và bộ nhớ tối đa được phép là 2GB.
văn bản Được sử dụng để lưu trữ dữ liệu không phải Unicode có độ dài thay đổi Độ dài chuỗi tối đa cho phép - 2 ^ 31-1 (2.147.483.647)
Chuỗi ký tự Unicode nchar Được sử dụng để lưu trữ các ký tự có kích thước cố định. nchar [(n)] trong đó giá trị n thay đổi từ 1-4000
nvarchar Được sử dụng để lưu trữ các ký tự có độ dài thay đổi. varchar [( n | max)] trong đó giá trị n thay đổi từ 1-4000 và bộ nhớ tối đa được phép là 2GB.
ntext Được sử dụng để lưu trữ dữ liệu Unicode có độ dài thay đổi Độ dài chuỗi tối đa cho phép - 2 ^ 30-1 (2.147.483.647)
Chuỗi nhị phân binary Được sử dụng để lưu trữ các loại dữ liệu nhị phân có độ dài cố định binary [( n )] trong đó giá trị n thay đổi từ 1 - 8.000
varbinary Được sử dụng để lưu trữ các loại dữ liệu nhị phân có độ dài cố định varbinary [( n )] trong đó n vale thay đổi từ 1-8000 và dung lượng lưu trữ tối đa được phép là 2 ^ 31-1 byte.
hình ảnh Được sử dụng để lưu trữ dữ liệu nhị phân có độ dài thay đổi 0 - 2 ^ 31-1 (2.147.483.647) byte
Các kiểu dữ liệu khác con trỏ Đây là kiểu dữ liệu cho các tham số OUTPUT của thủ tục hoặc biến được lưu trữ có chứa tham chiếu đến con trỏ. -
rowversion Được sử dụng để hiển thị các số nhị phân duy nhất, được tạo tự động trong cơ sở dữ liệu. -
hierarchyid Được sử dụng để thể hiện vị trí trong hệ thống phân cấp. -
uniqueidentifier Là một GUID 16 byte. Cú pháp:uniqueidentifier
sql_variant Được sử dụng để lưu trữ các giá trị của nhiều kiểu dữ liệu được SQL Server hỗ trợ Cú pháp:sql_variant
xml Được sử dụng để lưu trữ kiểu dữ liệu XML.

xml ([CONTENT | DOCUMENT] xml_schemacollection)

Loại Hình học Không gian Được sử dụng để biểu diễn dữ liệu trong hệ tọa độ Euclid (phẳng). -
Loại Địa lý Không gian Được sử dụng để lưu trữ dữ liệu hình elip (hình tròn), chẳng hạn như kinh độ và vĩ độ GPS. -
bảng Được sử dụng để lưu trữ tập hợp kết quả để xử lý sau -

Tiếp theo, trong bài viết này, chúng ta hãy hiểu các loại khóa và ràng buộc khác nhau trong cơ sở dữ liệu.

Các loại khóa khác nhau trong cơ sở dữ liệu

Sau đây là các loại khóa khác nhau được sử dụng trong cơ sở dữ liệu:

  • Khoá Ứng viên - Khóa ứng viên là một tập hợp các thuộc tính có thể xác định duy nhất một bảng. Một bảng có thể có nhiều khóa ứng viên duy nhất và trong số các khóa ứng viên đã chọn, một khóa được chọn làm Khóa chính.
  • Super Key - Tập hợp các thuộc tính có thể xác định duy nhất một bộ giá trị. Vì vậy, khóa ứng viên, khóa duy nhất và khóa chính là siêu khóa, nhưng ngược lại thì không đúng.
  • Khóa Chính - Các khóa chính được sử dụng để xác định duy nhất mọi bộ mã.
  • Khóa thay thế - Khóa thay thế là những khóa ứng viên không được chọn làm khóa chính.
  • Khóa duy nhất - Các khóa duy nhất tương tự như khóa chính, nhưng cho phép một giá trị NULL duy nhất trong cột.
  • Foreign Key – Một thuộc tính chỉ có thể nhận các giá trị hiện tại làm giá trị của một số thuộc tính khác, là khóa ngoại của thuộc tính mà nó tham chiếu đến.
  • Composite Key – Composite keys are a combination of two or more columns that identify each tuple uniquely.

Constraints Used In Database

Constraints are used in a database to specify the rules for data stored in a table. The different types of constraints in SQL are as follows:

  • NOT NULL
  • UNIQUE
  • CHECK
  • DEFAULT
  • INDEX

NOT NULL

The NOT NULL constraint ensures that a column cannot have a NULL value.

Example

CREATE TABLE StudentsInfo
(
StudentID int NOT NULL,
StudentName varchar(8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000)
);

--NOT NULL on ALTER TABLE
ALTER TABLE StudentsInfo
ALTER COLUMN PhoneNumber int NOT NULL;

UNIQUE

This constraint ensures that all the values in a column are unique.

Example

--UNIQUE on Create Table
 
CREATE TABLE StudentsInfo
(
StudentID int NOT NULL UNIQUE,
StudentName varchar(8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000)
);
 
--UNIQUE on Multiple Columns
 
CREATE TABLE StudentsInfo
(
StudentID int NOT NULL,
StudentName varchar(8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000)
CONSTRAINT UC_Student_Info UNIQUE(StudentID, PhoneNumber)
);
 
--UNIQUE on ALTER TABLE
 
ALTER TABLE StudentsInfo
ADD UNIQUE (StudentID);
 
--To drop a UNIQUE constraint
 
ALTER TABLE  StudentsInfo
DROP CONSTRAINT UC_Student_Info;

CHECK

The CHECK constraint ensures that all the values in a column satisfy a specific condition.

Example

--CHECK Constraint on CREATE TABLE
 
CREATE TABLE StudentsInfo
(
StudentID int NOT NULL,
StudentName varchar(8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000) CHECK (Country ='India')
);
 
--CHECK Constraint on multiple columns
 
CREATE TABLE StudentsInfo
(
StudentID int NOT NULL,
StudentName varchar8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000) CHECK (Country ='India'  AND City = 'Hyderabad')
);
 
--CHECK Constraint on ALTER TABLE
 
ALTER TABLE StudentsInfo
ADD CHECK (Country ='India');
 
--To give a name to the CHECK Constraint
 
ALTER TABLE StudentsInfo
ADD CONSTRAINT CheckConstraintName CHECK (Country ='India');
 
--To drop a CHECK Constraint
 
ALTER TABLE StudentsInfo
DROP CONSTRAINT CheckConstraintName;

DEFAULT

The DEFAULT constraint consists of a set of default values for a column when no value is specified.

Example

--DEFAULT Constraint on CREATE TABLE
 
CREATE TABLE StudentsInfo
(
StudentID int,
StudentName varchar(8000) NOT NULL,
ParentName varchar(8000),
PhoneNumber int ,
AddressofStudent varchar(8000) NOT NULL,
City varchar(8000),
Country varchar(8000) DEFAULT 'India'
);
 
--DEFAULT Constraint on ALTER TABLE
 
ALTER TABLE StudentsInfo
ADD CONSTRAINT defau_Country
DEFAULT 'India' FOR Country;
 
--To drop the Default Constraint
 
ALTER TABLE StudentsInfo
ALTER COLUMN Country DROP defau_Country;

INDEX

The INDEX constraint is used to create indexes in the table, through which you can create and retrieve data from the database very quickly.

Syntax

--Create an Index where duplicate values are allowed
CREATE INDEX IndexName
ON TableName (Column1, Column2, ...ColumnN);

--Create an Index where duplicate values are not allowed
CREATE UNIQUE INDEX IndexName
ON TableName (Column1, Column2, ...ColumnN);

Example

CREATE INDEX idex_StudentName
ON StudentsInfo (StudentName);
 
--To delete an index in a table
 DROP INDEX StudentsInfo.idex_StudentName;

Moving forward in this article on SQL Server tutorial, let us now understand the different Data Manipulation Language commands used in Microsoft SQL Server.

Data Manipulation Language commands

This section of the article will cover all those commands through which you can manipulate the database. The commands are as follows:

  • USE
  • CHÈN VÀO
  • CẬP NHẬT
  • DELETE
  • MERGE
  • CHỌN
  • CUBE
  • ROLLUP
  • OFFSET
  • FETCH
  • TOP
  • PIVOT

Apart from these commands, there are also other manipulative operators/functions such as:

  • Operators
    • Arithmetic Operators
    • Assignment Operators
    • Bitwise Operators
    • Comparison Operators
    • Compound Operators
    • Logical Operators
    • Scope Resolution Operators
    • Set Operators
    • String Concatenation Operators
    • Aggregate Functions
  • User-Defined Functions

USE

This statement is used to select the database to start performing various operations on it.

Syntax

USE DatabaseName;

Example

USE Students;

CHÈN VÀO

The INSERT INTO statement is used to insert new records into an existing table.

Syntax

INSERT INTO TableName (Column1, Column2, Column3, ...,ColumnN)
VALUES (value1, value2, value3, ...);

--If you don't want to mention the column names then use the below syntax

INSERT INTO TableName
VALUES (Value1, Value2, Value3, ...);

Example

INSERT INTO StudentsInfo(StudentID, StudentName, ParentName, PhoneNumber, AddressofStudent, City, Country)
VALUES ('06', 'Sanjana','Kapoor', '9977331199', 'Buffalo Street House No 10', 'Kolkata', 'India');
 
INSERT INTO StudentsInfo
VALUES ('07', 'Vishal','Mishra', '9876509712', 'Nice Road 15', 'Pune', 'India');

CẬP NHẬT

The UPDATE statement is used to modify or update the records already present in the table.

Syntax

UPDATE TableName
SET Column1 = Value1, Column2 = Value2, ...
WHERE Condition;

Example

UPDATE StudentsInfo
SET StudentName = 'Aahana', City= 'Ahmedabad'
WHERE StudentID = 1;

DELETE

The DELETE statement is used to delete the existing records in a table.

Syntax

DELETE FROM TableName WHERE Condition;

Example

DELETE FROM StudentsInfo
WHERE StudentName='Aahana';

MERGE

The MERGE statement is used to perform the INSERT, UPDATE and DELETE operations on a specific table, where the source table is provided. Tham khảo bên dưới.

Syntax

MERGE TagretTableName USING SourceTableName
ON MergeCondition
WHEN MATCHED
THEN Update_Statement
WHEN NOT MATCHED
THEN Insert_Statement
WHEN NOT MATCHED BY SOURCE
THEN DELETE;

Example

To understand the MERGE statement, consider the following tables as the Source table and the Target table.

Source Table:

StudentID StudentName Marks
1 Vihaan 87
2 Manasa 92
4 Anay 74

Target Table:

StudentID StudentName Marks
1 Vihaan 87
2 Manasa 67
3 Saurabh 55
MERGE SampleTargetTable TARGET USING SampleSourceTable SOURCE ON (TARGET.StudentID = SOURCE.StudentID)                                                                                       
WHEN MATCHED AND TARGET.StudentName <> SOURCE.StudentName OR TARGET.Marks <> SOURCE.Marks 
THEN UPDATE SET TARGET.StudentName = SOURCE.StudentName, TARGET.Marks = SOURCE.Marks         
WHEN NOT MATCHED BY TARGET THEN  
INSERT (StudentID,StudentName,Marks) VALUES (SOURCE.StudentID,SOURCE.StudentName,SOURCE.Marks)
WHEN NOT MATCHED BY SOURCE THEN         
DELETE;    

Output

StudentID StudentName Marks
1 Vihaan 87
2 Manasa 92
4 Anay 74

CHỌN

The SELECT statement is used to select data from a database, table or view. The data returned is stored in a result table, called the result-set .

Syntax

SELECT Column1, Column2, ...ColumN
FROM TableName;

--(*) is used to select all from the table
SELECT * FROM table_name;

-- To select the number of records to return use:
SELECT TOP 3 * FROM TableName;

Example

-- To select few columns
SELECT StudentID, StudentName
FROM StudentsInfo;
 
--(*) is used to select all from the table
SELECT * FROM StudentsInfo;
 
-- To select the number of records to return use:
SELECT TOP 3 * FROM StudentsInfo;

We can also use the following keywords with the SELECT statement:

  • DISTINCT
  • ORDER BY
  • GROUP BY
  • GROUPING SETS
  • HAVING Clause
  • INTO

DISTINCT

The DISTINCT keyword is used with the SELECT statement to return only different values.

Syntax

SELECT DISTINCT Column1, Column2, ...ColumnN
FROM TableName;

Example

SELECT DISTINCT PhoneNumber FROM StudentsInfo;

ORDER BY

This statement is used to sort the required results either in the ascending or descending order. By default, the results are stored in ascending order. Yet, if you wish to get the results in descending order, you have to use the DESC từ khóa.

Syntax

SELECT Column1, Column2, ...ColumnN
FROM TableName
ORDER BY Column1, Column2, ... ASC|DESC;

Example

-- Select all students from the 'StudentsInfo' table sorted by ParentName:
SELECT * FROM StudentsInfo
ORDER BY ParentName;
 
-- Select all students from the 'StudentsInfo' table sorted by ParentName in Descending order:
SELECT * FROM StudentsInfo
ORDER BY ParentName DESC;
 
-- Select all students from the 'StudentsInfo' table sorted by ParentName and StudentName:
SELECT * FROM StudentsInfo
ORDER BY ParentName, StudentName;

/* Select all students from the 'StudentsInfo' table sorted by ParentName 
in Descending order and StudentName in Ascending order: */
SELECT * FROM StudentsInfo
ORDER BY ParentName ASC, StudentName DESC;

GROUP BY

This statement is used with the aggregate functions to group the result-set by one or more columns.

Syntax

SELECT Column1, Column2,..., ColumnN
FROM TableName
WHERE Condition
GROUP BY ColumnName(s)
ORDER BY ColumnName(s);

Example

-- To list the number of students from each city.
SELECT COUNT(StudentID), City
FROM StudentsInfo
GROUP BY City;

GROUPING SETS

GROUPING SETS were introduced in SQL Server 2008, used to generate a result-set that can be generated by a UNION ALL of the multiple simple GROUP BY clauses.

Syntax

SELECT ColumnNames(s)
FROM TableName
GROUP BY GROUPING SETS(ColumnName(s));

Example

SELECT StudentID, StudentName, COUNT(City)
from StudentsInfo
Group BY
GROUPING SETS
((StudentID, StudentName, City),(StudentID),(StudentName),(City));

HAVING

This clause is used in the scenario where the WHERE keyword cannot be used.

Syntax

SELECT ColumnName(s)
FROM TableName
WHERE Condition
GROUP BY ColumnName(s)
HAVING Condition
ORDER BY ColumnName(s);

Example

SELECT COUNT(StudentID), City
FROM StudentsInfo
GROUP BY City
HAVING COUNT(StudentID) > 2
ORDER BY COUNT(StudentID) DESC;

INTO

The INTO keyword can be used with the SELECT statement to copy data from one table to another. Well, you can understand these tables to be temporary tables. The temporary tables are generally used to perform manipulations on data present in the table, without disturbing the original table.

Syntax

SELECT *
INTO NewTable [IN ExternalDB]
FROM OldTable
WHERE Condition;

Example

-- To create a backup of table 'StudentsInfo'
SELECT * INTO StudentsBackup
FROM StudentsInfo;
 
--To select only few columns from StudentsInfo
SELECT StudentName, PhoneNumber INTO StudentsDetails
FROM StudentsInfo;
 
SELECT * INTO PuneStudents
FROM StudentsInfo
WHERE City = 'Pune';

CUBE

CUBE is an extension of the GROUP BY clause. It allows you to generate the sub-totals for all the combinations of the grouping columns specified in the GROUP BY clause.

Syntax

SELECT ColumnName(s)
FROM TableName
GROUP BY CUBE(ColumnName1, ColumnName2, ....., ColumnNameN);

Example

SELECT StudentID, COUNT(City)
FROM StudentsInfo
GROUP BY CUBE(StudentID)
ORDER BY StudentID;  

ROLLUP

ROLLUP is an extension of the GROUP BY clause. This allows you to include the extra rows which represent the subtotals. These are referred to as super-aggregated rows along with the grand total row.

Syntax

SELECT ColumnName(s)
FROM TableName
GROUP BY ROLLUP(ColumnName1, ColumnName2, ....., ColumnNameN);

Example

SELECT StudentID, COUNT(City)
FROM StudentsInfo
GROUP BY ROLLUP(StudentID);

OFFSET

The OFFSET clause is used with the SELECT and ORDER BY statement to retrieve a range of records. It must be used with the ORDER BY clause since it cannot be used on its own. Also, the range that you mention must be equal to or greater than 0. If you mention a negative value, then it shows an error.

Syntax

SELECT ColumnNames)
FROM TableName
WHERE Condition
ORDER BY ColumnName(s)
OFFSET RowsToSkip ROWS;

Example

Consider a new column Marks in the StudentsInfo bảng.

SELECT StudentName, ParentName
FROM StudentsInfo
ORDER BY Marks
OFFSET 1 ROWS;

FETCH

The FETCH clause is used to return a set of a number of rows. It has to be used in conjunction with the OFFSET clause.

Syntax

SELECT ColumnNames)
FROM TableName
WHERE Condition
ORDER BY ColumnName(s)
OFFSET RowsToSkip 
FETCH NEXT NumberOfRows ROWS ONLY;

Example

SELECT StudentName, ParentName
FROM StudentsInfo
ORDER BY Marks
OFFSET 1 ROWS
FETCH  NEXT 1 ROWS ONLY;

TOP

The TOP clause is used with the SELECT statement to mention the number of records to return.

Syntax

SELECT TOP Number ColumnName(s)
FROM TableName
WHERE Condition;

Example

SELECT TOP 3 * FROM StudentsInfo;

PIVOT

PIVOT is used to rotate the rows to column values and runs aggregations when required on the remaining column values.

Syntax

SELECT NonPivoted ColumnName,  
    [First Pivoted ColumnName] AS ColumnName,  
    [Second Pivoted ColumnName] AS ColumnName, 
    [Third Pivoted ColumnName] AS ColumnName,   
    ...  
    [Last Pivoted ColumnName] AS ColumnName  
FROM 
    (SELECT query which produces the data)   
    AS [alias for the initial query]  
PIVOT  
(  
    [AggregationFunction](ColumName)  
FOR  
[ColumnName of the column whose values will become column headers]   
    IN ( [First Pivoted ColumnName], [Second Pivoted ColumnName],  [Third Pivoted ColumnName]
    ... [last pivoted column])  
) AS [alias for the Pivot Table];

Example

To get a detailed example, you can refer to my article on SQL PIVOT and UNPIVOT. Next in this SQL Server Tutorial let us look into the different operators supported by Microsoft SQL Server.

Operators

The different types of operators supported by SQL Server are as follows:

  • Arithmetic Operators
  • Assignment Operators
  • Bitwise Operators
  • Comparison Operators
  • Compound Operators
  • Logical Operators
  • Scope Resolution Operators
  • Set Operators
  • String Concatenation Operators

Let us discuss each one of them one by one.

Arithmetic Operators

Operator Meaning Syntax

+

Addition

expression + expression

Subtraction

expression – expression

*

Multiplication

expression * expression

/

Divison

expression / expression

%

Modulous

expression % expression

Assignment Operators

Operator Meaning Syntax

=

Assign a value to a variable

variable =‘value’

Bitwise Operators

Operator Meaning Syntax

&(Bitwise AND)

Used to perform a bitwise logical AND operation between two integer values.

expression &expression

&=(Bitwise AND Assignment)

Used to perform a bitwise logical AND operation between two integer values. It also sets a value to the output of the operation.

expression &=expression

| (Bitwise OR)

Used to perform a bitwise logical OR operation between two integer values as translated to binary expressions within Transact-SQL statements.

expression | expression

|=(Bitwise OR Assignment)

Used to perform a bitwise logical OR operation between two integer values as translated to binary expressions within Transact-SQL statements. It also sets a value to the output of the operation.

expression |=expression

^ (Bitwise Exclusive OR)

Used to perform a bitwise exclusive OR operation between two integer values.

expression ^ expression

^=(Bitwise Exclusive OR Assignment)

Used to perform a bitwise exclusive OR operation between two integer values. It also sets a value to the output of the operation.

expression ^=expression

~ (Bitwise NOT)

Used to perform a bitwise logical NOT operation on an integer value.

~ expression

Comparison Operators

Operator Meaning Syntax

=

Equal to

expression =expression

>

Greater than

expression> expression

<

Less than

expression

>=

Greater than or equal to

expression>=expression

<=

Less than or equal to

expression <=expression

<>

Not equal to

expression <> expression

!=

Not equal to

expression !=expression

!<

Not less than

expression !

!>

Not greater than

expression !> expression

Compound Operators

Operator Meaning Syntax

+ =

Used to add value to the original value and set the original value to the result.

expression +=expression

-=

Used to subtract a value from the original value and set the original value to the result.

expression -=expression

*=

Used to multiply value to the original value and set the original value to the result.

expression *=expression

/=

Used to divide a value from the original value and set the original value to the result.

expression /=expression

%=

Used to divide a value from the original value and set the original value to the result.

expression %=expression

&=

Used to perform a bitwise AND operation and set the original value to the result.

expression &=expression

^=

Used to perform a bitwise exclusive OR operation and set the original value to the result.

expression ^=expression

|=

Used to perform a bitwise OR operation and set the original value to the result.

expression |=expression

Logical Operators

Operator Meaning Syntax

ALL

Returns TRUE if all of set of comparisons are TRUE.

scalar_expression { =| <> | !=|> |>=| !> | <| <=| !<} ALL ( subquery )

AND

Returns TRUE if both the expressions are TRUE.

boolean_expression AND boolean_expression

ANY

Returns TRUE if any one of a set of comparisons are TRUE.

scalar_expression { =| <> | ! =|> |> =| !> | <| <=| ! <} { ANY } ( subquery )

BETWEEN

Returns TRUE if an operand is within a range.

sampleexpression [ NOT ] BETWEEN beginexpression AND endexpression

EXISTS

Returns TRUE if a subquery contains any rows.

EXISTS (sub query)

IN

Returns TRUE if an operand is equal to one of a list of expressions.

test_expression [ NOT ] IN( subquery | expression [ ,…n ])

LIKE

Returns TRUE if an operand matches a pattern.

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

NOT

Reverses the value of any boolean operator.

[ NOT ] boolean_expression

OR

Returns TRUE if either of the boolean expression is TRUE.

boolean_expression OR boolean_expression

SOME

Returns TRUE if some of a set of comparisons are TRUE.

scalar_expression { =| <> | ! =|> |> =| !> | <| <=| ! <} { SOME} ( subquery )

Scope Resolution Operators

Operator Meaning Example

::

Provides access to static members of a compound data type. Compound data types are those data types which contain multiple methods and simple data types. Compound data types These include the built-in CLR types and custom SQLCLR User-Defined Types (UDTs).

DECLARE @hid hierarchyid; SELECT @hid =hierarchyid::GetRoot(); PRINT @hid.ToString();

Set Operators

There are mainly three set operations:UNION, INTERSECT, MINUS. You can refer to the image below to understand the set operations in SQL. Tham khảo hình ảnh bên dưới:

Operator Meaning Syntax

UNION

The UNION operator is used to combine the result-set of two or more SELECT statements.

SELECT ColumnName(s) FROM Table1
UNION
SELECT ColumnName(s )FROM Table2;

INTERSECT

The INTERSECT clause is used to combine two SELECT statements and return the intersection of the data-sets of both the SELECT statements.

SELECT Column1 , Column2 ….
FROM TableName;
WHERE Condition
INTERSECT
SELECT Column1 , Column2 ….
FROM TableName;
WHERE Condition

EXCEPT

The EXCEPT operator returns those tuples that are returned by the first SELECT operation, and are not returned by the second SELECT operation.

SELECT ColumnName
FROM TableName;
EXCEPT
SELECT ColumnName
FROM TableName;

String Operators

Operator Meaning Syntax/ Example

+ (String Concatenation)

Concatenates two or more binary or character strings, columns, or a combination of strings and column names into a single expression

expression+expression

+=(String Concatenation)

Used to concatenate two strings and sets the string to the result of the operation.

expression+=expression

% (Wildcard Characters to match)

Used to matches any string of zero or more characters.

Example:‘sample%’

[] (Wildcard Characters to match)

Used to match a single character within the specified range or set that is specified between brackets [].

Example:m[n-z]%’

[^] (Wildcard Characters to match)

Used to match a single character which is not within the range or set specified between the square brackets.

Example:‘Al[^a]%’

_ (Wildcard Characters to match)

Used to match a single character in a string comparison operation

test_expression [ NOT ] IN( subquery | expression [ ,…n ])

Aggregate Functions

The different aggregate functions supported by SQL Server are as follows:

Function Description Syntax Example

SUM()

Used to return the sum of a group of values.

SELECT SUM(ColumnName) FROM TableName;

SELECT SUM(Marks) FROM StudentsInfo;

COUNT()

Returns the number of rows either based on a condition, or without a condition.

SELECT COUNT(ColumnName) FROM TableName WHERE Condition;

SELECT COUNT(StudentID) FROM StudentsInfo;

AVG()

Used to calculate the average value of a numeric column.

SELECT AVG(ColumnName) FROM TableName;

SELECT AVG(Marks) FROM StudentsInfo;

MIN()

This function returns the minimum value of a column.

SELECT MIN(ColumnName) FROM TableName;

SELECT MIN(Marks) FROM StudentsInfo;

MAX()

Returns a maximum value of a column.

SELECT MAX(ColumnName) FROM TableName;

SELECT MAX(Marks) FROM StudentsInfo;

FIRST()

Used to return the first value of the column.

SELECT FIRST(ColumnName) FROM TableName;

SELECT FIRST(Marks) FROM StudentsInfo;

LAST()

This function returns the last value of the column.

SELECT LAST(ColumnName) FROM TableName;

SELECT LAST(Marks) FROM StudentsInfo;

User-Defined Functions

Microsoft SQL Server allows the users to create user-defined functions which are routines. These routines accept parameters, can perform simple to complex actions and return the result of that particular action as a value. Here, the value returned can either be a single scalar value or a complete result-set.

You can use user-defined functions to:

  • Allow modular programming
  • Reduce network traffic
  • Allow faster execution of queries

Also, there are different types of user-defined functions you can create. They are:

  • Scalar Functions: Used to return a single data value of the type defined in the RETURNS clause.
  • Table-Valued Functions: Used to return a table data type.
  • System Functions: A variety of system functions are provided by the SQL Server to perform different operations.

Well, apart from the user-defined functions, there is a bunch of in-built functions in SQL Server; which can be used to perform a variety of tasks. Moving on in this article on SQL Server tutorial, let us now understand what are nested queries.

Nested Queries

Nested queries are those queries that have an outer query and inner subquery. So, basically, the subquery is a query which is nested within another query such as SELECT, INSERT, UPDATE or DELETE. Refer to the image below:

Next in this SQL Server tutorial, let us understand the different types of joins in SQL.

Joins

Joins are used to combine tuples from two or more tables, based on a related column between the tables. There are four types of joins:

  • INNER JOIN: Returns records that have matching values in both the tables.
  • LEFT JOIN: Returns records from the left table, and also those records which satisfy the condition from the right table.
  • RIGHT JOIN: Returns records from the right table, and also those records which satisfy the condition from the left table.
  • FULL JOIN: Returns records which either have a match in the left or the right table.

Consider the following table along with the StudentsInfo table, to understand the syntax of joins.

SubjectID StudentID SubjectName
10 10 Maths
2 11 Physics
3 12 Chemistry

INNER JOIN

Syntax

SELECT ColumnName(s)
FROM Table1
INNER JOIN Table2 ON Table1.ColumnName = Table2.ColumnName;

Example

SELECT Subjects.SubjectID, StudentsInfo.StudentName
FROM Subjects
INNER JOIN StudentsInfo ON Subjects.StudentID = StudentsInfo.StudentID;

LEFT JOIN

Syntax

SELECT ColumnName(s)
FROM Table1
LEFT JOIN Table2 ON Table1.ColumnName = Table2.ColumnName;

Example

SELECT StudentsInfo.StudentName, Subjects.SubjectID
FROM StudentsInfo
LEFT JOIN Subjects ON StudentsInfo.SubjectID = Subjects.SubjectID
ORDER BY StudentsInfo.StudentName;

RIGHT JOIN

Syntax

SELECT ColumnName(s)
FROM Table1
RIGHT JOIN Table2 ON Table1.ColumnName = Table2.ColumnName;

Example

SELECT StudentsInfo.StudentName, Subjects.SubjectID
FROM StudentsInfo
RIGHT JOIN Subjects ON StudentsInfo.SubjectID = Subjects.SubjectID
ORDER BY StudentsInfo.StudentName;

FULL JOIN

Syntax

SELECT ColumnName(s)
FROM Table1
FULL OUTER JOIN Table2 ON Table1.ColumnName = Table2.ColumnName;

Example

SELECT StudentsInfo.StudentName, Subjects.SubjectID
FROM StudentsInfo
FULL OUTER JOIN Subjects ON StudentsInfo.SubjectID = Subjects.SubjectID
ORDER BY StudentsInfo.StudentName;

Next, in this article on SQL Server tutorial, let us understand the different types of loops supported by the SQL Server.

Loops

The different control-of-flow commands are as follows:

  • BEGIN..END
  • BREAK
  • CONTINUE
  • GOTO
  • IF..ELSE
  • RETURN
  • WAITFOR
  • WHILE

Let us discuss each one of them one by one.

BEGIN..END

These keywords are used to enclose a series of SQL statements. Then, this group of SQL statements can be executed.

Syntax

BEGIN   
     { SQLStatement | StatementBlock }   
END

BREAK

This statement is used to exit the current WHILE loop. In case, the current WHILE loop is nested inside another loop, then the BREAK statement exits only the current loop and the control is passed on to the next statement in the current loop. The BREAK statement is generally used inside an IF statement.

Syntax

BREAK;

CONTINUE

The CONTINUE statement is used to restart a WHILE loop. So, any statements after the CONTINUE keyword will be ignored.

Syntax

CONTINUE;

Here, Label is the point after which processing starts if a GOTO is targeted to that particular label.

GOTO

Used to alter the flow of execution to a label. The statements written after the GOTO keyword are skipped and processing continues at the label.

Syntax

Define Label:   
Label:   
Alter Execution:  
GOTO Label

Here, Label is the point after which processing starts if a GOTO is targeted to that particular label.

IF..ELSE

Like any other programming language, the If-else statement in SQL Server tests the condition and if the condition is false then ‘else’ statement is executed.

Syntax

IF BooleanExpression      
     { SQLStatement | StatementBlock }   
[ ELSE   
     { SQLStatement | StatementBlock } ]

RETURN

Used to exit unconditionally from a query or procedure. So, the statements which are written after the RETURN clause are not executed.

Syntax

RETURN [ IntegerExpression ]

Here, an integer value is returned.

WAITFOR

The WAITFOR control flow is used to block the execution of a stored procedure, transaction or a batch until a specific statement modifies, returns at least one row or a specified time or time interval elapses.

Syntax

WAITFOR   
{  
    DELAY 'TimeToPass'   
  | TIME 'TimeToExecute'   
  | [ ( RecieveStatement ) | ( GetConversionGroupStatement ) ]   
    [ , TIMEOUT timeout ]  
}

where,

  • DELAY – Period of time that must pass
  • TimeToPass – Period of time to wait
  • TIME – The time when the stored procedure, transaction or the batch runs.
  • TimeToExecute – The time at which the WAITFOR statement finishes.
  • RecieveStatement – A valid RECEIVE statement.
  • GetConversionGroupStatement – A valid GET CONVERSATION GROUP statement.
  • TIMEOUT timeout Specifies the period of time, in milliseconds, to wait for a message to arrive on the queue.

WHILE

This loop is used to set a condition for repeated execution of a particular SQL statement or a SQL statement block. The statements are executed as long as the condition mentioned by the user is TRUE. As soon as the condition fails, the loop stops executing.

Syntax

WHILE BooleanExpression 
{ SQLStatement | StatementBlock | BREAK | CONTINUE }

Now, that you guys know the DML commands, let’s move onto our next section in this article on SQL Tutorial i.e. the DCL commands.

Data Control Language Commands (DCL)

This section of SQL Server tutorial will give you an idea about the command through which are used to enforce database security in multiple user database environments. The commands are as follows:

  • CẤP
  • REVOKE

CẤP

The GRANT command is used to provide access or privileges on the database and its objects to the users.

Syntax

GRANT PrivilegeName
ON ObjectName
TO {UserName |PUBLIC |RoleName}
[WITH GRANT OPTION];

where,

  • PrivilegeName – Is the privilege/right/access granted to the user.
  • ObjectName - Tên của một đối tượng cơ sở dữ liệu như TABLE / VIEW / STORED PROC.
  • UserName - Tên của người dùng được cấp quyền truy cập / quyền / đặc quyền.
  • PUBLIC - Cấp quyền truy cập cho tất cả người dùng.
  • RoleName - Tên của một tập hợp các đặc quyền được nhóm lại với nhau.
  • WITH GRANT OPTION - Cấp cho người dùng quyền truy cập để cấp quyền cho người dùng khác.

Example

-- To grant SELECT permission to StudentsInfo table to user1
GRANT SELECT ON StudentsInfo TO user1;

REVOKE

The REVOKE command is used to withdraw the user’s access privileges given by using the GRANT command.

Syntax

REVOKE PrivilegeName 
ON ObjectName 
FROM {UserName |PUBLIC |RoleName}

Example

-- To revoke the granted permission from user1
REVOKE SELECT ON StudentsInfo TO user1;

Moving on in this SQL Server tutorial, let us understand the how to create and use Stored Procedures.

Stored Procedures

Stored Procedures are reusable units that encapsulate a specific business logic of the application. So, it is a group of SQL statements and logic, compiled and stored together to perform a specific task.

Syntax

CREATE [ OR REPLACE] PROCEDURE procedure_name [
(parameter_name [IN | OUT | IN OUT] type [ ])]
{IS | AS }
BEGIN [declaration_section]
executable_section 
//SQL statement used in the stored procedure
END
GO

Example

--Create a procedure that will return a student name when the StudentId is given as the input parameter to the stored procedure
Create  PROCEDURE GetStudentName 
(
@StudentId INT, --Input parameter ,  
@StudName VARCHAR(50)  OUT  --Output parameter, 
AS
BEGIN
SELECT @StudName = StudentName FROM StudentsInfo WHERE StudentID=@StudentId
END

Steps to execute:

      • Declare @StudName as nvarchar(50)
      • EXEC GetStudentName 01, @StudName output
      • SELECT @StudName

The above procedure returns the name of a particular student, on giving that students id as input. Next in this SQL Server tutorial, let us understand the transaction control language commands.

Transaction Control Language Commands (TCL)

This section of SQL Server tutorial will give you an insight into the commands which are used to manage transactions in the database. The commands are as follows:

  • COMMIT
  • ROLLBACK
  • SAVEPOINT

COMMIT

The COMMIT command is used to save the transaction into the database.

Syntax

COMMIT;

ROLLBACK

The ROLLBACK command is used to restore the database to the last committed state.

Syntax

ROLLBACK;

NOTE: When you use ROLLBACK with SAVEPOINT, then you can directly jump to a savepoint in an ongoing transaction. Syntax:ROLLBACK TO SavepointName;

SAVEPOINT

The SAVEPOINT command is used to temporarily save a transaction. So if you wish to rollback to any point, then you can save that point as a ‘SAVEPOINT’.

Syntax

SAVEPOINT SAVEPOINTNAME;

Consider the below table to understand the working of transactions in the database.

StudentID StudentName
1 Rohit
2 Suhana
3 Ashish
4 Prerna

Now, use the below SQL queries to understand the transactions in the database.

INSERT INTO StudentTable VALUES(5, 'Avinash');
COMMIT;
UPDATE StudentTable SET name = 'Akash' WHERE id = '5';
SAVEPOINT S1;
INSERT INTO StudentTable VALUES(6, 'Sanjana');
SAVEPOINT S2;
INSERT INTO StudentTable VALUES(7, 'Sanjay');
SAVEPOINT S3;
INSERT INTO StudentTable VALUES(8, 'Veena');
SAVEPOINT S4;
SELECT * FROM StudentTable;

Next in this article on SQL Server tutorial let us understand how to handle exceptions in Transact-SQL.

Exception Handling

There are two types of exceptions, i.e, the system-defined exceptions and the user-defined exceptions. As the name suggests, exception handling is a process through which a user can handle the exceptions generated. To handle exceptions you have to understand the following control flow statements:

  • THROW
  • TRY…CATCH

THROW

This clause is used to raise an exception and transfers the execution to a CATCH block of a TRY…CATCH construct.

Syntax

THROW [ { ErrorNumber | @localvariable },  
        { Message | @localvariable },  
        { State | @localvariable } ]   
[ ; ]

where,

  • ErrorNumber – A constant or variable that represents the exception.
  • Message – A variable or string that describes the exception.
  • State – A constant or variable between 0 and 255 that indicates the state to associate with the message.
THROW 51000, 'Record does not exist.', 1;  

TRY..CATCH

Used to implement exception handling in Transact-SQL. A group of statements can be enclosed in the TRY block. In case an error occurs in the TRY block, control is passed to another group of statements that are enclosed in a CATCH block.

Syntax

BEGIN TRY  
     { SQLStatement | StatementBlock}  
END TRY  
BEGIN CATCH  
     [ { SQLStatement | StatementBlock } ]  
END CATCH  
[ ; ]
BEGIN TRY  
    SELECT * FROM StudentsInfo;  
END TRY  
BEGIN CATCH  
    SELECT   
        ERROR_NUMBER() AS ErNum , ERROR_MESSAGE() AS ErMsg;  
END CATCH

W ith this, we come to the end of this article on SQL Server Tutorial. I hope you enjoyed reading this article on SQL Server Tutorial For Beginners. I f you wish to get a structured training on MySQL, then check out our MySQL DBA Certification Training đi kèm với đào tạo trực tiếp do người hướng dẫn và trải nghiệm dự án thực tế. This training will help you understand MySQL in-depth and help you achieve mastery over the subject. Got a question for us? Please mention it in the comments section of ”SQL Server Tutorial ” and I will get back to you.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để nhận giá trị tiếp theo của chuỗi SQL Server trong Entity Framework?

  2. Các trường hợp sử dụng để chọn CHAR qua VARCHAR trong SQL là gì?

  3. Bảo trì theo lịch trình của Cơ sở dữ liệu IS 24/7 trong MS SQL Server

  4. Làm cách nào để liệt kê tất cả các bảng trong tất cả các cơ sở dữ liệu trong SQL Server trong một tập hợp kết quả?

  5. SQL Server:CẬP NHẬT bảng bằng cách sử dụng ORDER BY