hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Micrsoft SQL Server
Giới thiệu Transact-SQL (T-SQL)

Giới thiệu Transact-SQL (T-SQL)

  • 18-05-2022
  • Toanngo92
  • 0 Comments

Mục lục

  • Giới thiệu về Transact SQL (T-SQL)
  • Danh mục các kiểu câu lệnh T-SQL
    • Data Defination Language (DDL)
    • Data Manipulation Language (DML)
    • Data Control Language (DCL)
  • Data types (kiểu dữ liệu)
    • System-defined data types
    • Alias data types (kiểu dữ liệu bí danh)
    • User-defined types (kiểu dữ liệu người dùng tự định nghĩa)
  • Transact-SQL Language Elements
    • Predicates (vị từ)
    • Operators (toán tử)
    • Functions (hàm)
      • Rowset functions
      • Aggregate functions
      • Ranking functions
      • Scalar functions
    • Variables (biến)
    • Expression (biểu thức)
    • Control of Flow, Errors, Transactions
    • Comments
    • Batch Separators
  • Sets và Predicate Logic (tập hợp và logic vị từ)
    • Set Theory (lý thuyết tập hợp)
    • Predicate Logic (logic vị từ)
  • Thứ tự logic của các toán tử trong câu lệnh SELECT

Giới thiệu về Transact SQL (T-SQL)

SQL là một ngôn ngữ chung được sử dụng trong thế giới cơ sở dữ liệu. Hầu hết các sản phẩm RDBMS hiện đại sử dụng một số loại phương ngữ SQL làm ngôn ngữ truy vấn chính của chúng . SQL có thể được sử dụng để tạo hoặc hủy các đối tượng như bảng trên máy chủ cơ sở dữ liệu và để thao tác với các đối tượng đó, chẳng hạn như thêm, sửa, xóa dữ liệu vào chúng hoặc truy xuất dữ liệu từ chúng.

Transact-SQL (T-SQL) là một phiên bản SQL được Microsoft kế thừa và phát triển, được gọi là T-SQL, ngôn ngữ này được triển khai để thực hiện một cách chuẩn hóa giúp giao tiếp với cơ sở dữ liệu.

Transact-SQL là ngôn ngữ mạnh mẽ cung cấp các tính năng như kiểu dữ liệu (data types), đối tượng tạm thời (temporary objects) và thủ tục lưu trữ (store procedure) mở rộng. Con trỏ có thể cuộn, xử lý có điều kiện, kiểm soát giao dịch, ngoại lệ và xử lý lỗi cũng được hỗ trợ bởi Transact-SQL.

T-SQL trong SQL Server 2019 cải thiện hiệu năng hơn so với các phiên bản trước, tăng các tính năng và hỗ trợ nhiều tính năng nâng cao. Các cải tiến bao gồm các chức năng vô hướng, phân trang, trình tự, phân bổ siêu dữ liệu và hỗ trợ xử lý lỗi tốt hơn…

Các ví dụ phía dưới đều sử dụng AdventureWorks2019, cài đặt AdventureWorks2019 vào máy để test các ví dụ.

Xét câu lệnh Transact-SQL phía dưới, là câu lệnh SELECT, được sử dụng để lấy ra dữ liệu của cột loginID của bảng employee với JobTitle là ‘Design Engineer’ trong bảng Employee:

USE AdventureWorks2019
SELECT LoginID FROM HumanResources.Employee
WHERE JobTitle = 'Design Engineer'
Kết quả trả ra từ câu lệnh chứa mệnh đề SELECT

T-SQL bao gồm nhiều phần tử cú pháp được sử dụng bởi hoặc ảnh hưởng đến hầu hết các câu lệnh. Các phần tử này bao gồm kiểu dữ liệu, vị từ, biến hàm, biểu thức, điều khiển luồng, comments và batch seperators.

Danh mục các kiểu câu lệnh T-SQL

SQL Server hỗ trợ 3 kiểu câu lệnh T-SQL là DDL,DML và DCL

Data Defination Language (DDL)

DDL, là một phần của RDBMS, sử dụng để định nghĩa và quản lý tất cả thuộc tính của dữ liệu, bao gồm bố cục hàng, định nghĩa cột, cột khóa chính, ví trí file, cách lưu trữ. Các caua lệnh DDL được sử dụng để xây dựng và chỉnh sửa cấu trúc các bảng và các đối tượng như views triggers, store procedures… Với mỗi đối tượng, có các từ khóa CREATE, ALTER , DROP . Ví dụ: CREATE TABLE, ALTER TABLE, DROP TABLE

Hầu hết các câu lệnh DDL đều tuân thủ theo một tiêu chuẩn, với object_name là tên bảng, view, trigger, store procedure … như sau:

  • CREATE object_name
  • ALTER object_name
  • DROP object_name

Data Manipulation Language (DML)

DML sử dụng để select ( lấy ra), insert (thêm vào), update (cập nhật) hoặc delete (xóa) dữ liệu trong objects (đối tượng) được định nghĩa bằng DDL. Tất cả người dùng trong database có thể sử dụng các câu lệnh này trong các hoạt động trên cơ sở dữ liệu.

Các câu lệnh DML có bao gồm các từ khóa như sau:

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Data Control Language (DCL)

Dữ liệu là một phần quan trọng của database, vì vậy cần thực hiện các bước thích hợp để kiểm tra xem không có người dùng không hợp lệ nào truy cập vào dữ liệu. Ngôn ngữ điều khiển dữ liệu được sử dụng để điều khiển quyền trên các đối tượng cơ sở dữ liệu. Quyền được kiểm soát bằng cách sử dụng các câu lệnh GRANT, REVOKE, DENY. Các câu lệnh DCL cũng được sử dụng để bảo mật cơ sở dữ liệu. Ba câu lệnh DCL cơ bản như sau:

  • GRANT (gán)
  • REVOKE (thu hồi)
  • DENY (từ chối)

Data types (kiểu dữ liệu)

Data type là một thuộc tính định nghĩa kiểu của dữ liệu hoặc đối tượng có thể chứa. Data types phải được cung cấp cho columns (cột), parameters (tham số), variables (biến), function trả về giá trị (function return data values), và sctored procedures có return. T-SQL bao gồm một số các data types như varchar,text,int … Tất cả dữ liệu được lưu trữ trong SQL Server bắt buộc phải tương thích với mộ trong những data types cơ bản.

Các objects có data types:

  • Columns ( cột ) biểu diễn trong tables và views
  • parameters trong stored procedures
  • Variables (biến)
  • function có trả về một hoặc nhiều giá trị với kiểu dữ liệu xác định
  • Stored procedures có trả về code thuộc về kiểu dữ liệu integer

SQL Server hỗ trợ 3 kiểu data types như sau:

System-defined data types

Kiểu dữ liệu này được cung cấp bởi SQL Server, biểu diễn ở bảng dưới như sau:

Danh mụcData typeCột của data type này
Exact Numerics (số chính xác/ số tự nhiên)intChiếm 4 bypes vùng nhớ, sử dụng để lưu trữ giá trị integer, có thể lưu trữ giá trị từ -2^31(-2,147,483,648) tới 2^31-1 (2,147,483,647)
smallintChiếm 2 bytes vùng nhớ, có thể lưu trữ giá trị integer từ -32.768 tới 32m.767
tinyintChiếm 1 byte vùng nhớ, chứa giá trị từ 0 tới 255
bigintChiếm 8 bytes vùng nhớ. Nắm giữ dữ liệu từ -2^63 tới 2^63-1
numericcó độ chính xác và tỉ lệ cố định
moneychiếm 8 byte không gian bộ nhớ. Biểu thị các giá trị dữ liệu tiền tệ nằm trong khoảng từ -2 ^ 63/1000 đến 2 ^ 63-1
Approximate Numerics (số gần đúng/số thực)floatChiếm 8 bytes vùng nhớ. Biểu diễn số đằng sau dấu chấm động từ -1.79E+308 tới 1.79E+38
realChiếm 4 bytes vùng nhớ. Biểu diễn số đằng sau dấm chấm động từ -3.40E+38 tới 3.40E+38
Date and TimedatetimeBiểu diễn date time, chiếm 8 bytes trong vùng nhớ ( 2 lần 4 bytes – integer)
smalldatetimeBiểu diễn date time
Character StringcharLưu trữ dữ liệu ký tự với độ dài xác định và non-Unicode
varcharLưu trữ dữ liệu ký tự có độ dài biến thiên và non-Unicode với tối đa 8,000 ký tự
textLưu trữ dữ liệu ký tự với độ dài biến thiên và non-Unicode với độ dài tối đa là 2^31 – 1(2,147,483,647) ký tự
ncharLưu trữ ký tự Unicode với độ dài xác định
nvarcharLưu trữ dữ liệu ký tự unicode biến thiên.
Other Data TypestimestampChiếm 8 bytes vùng nhớ. Giá trị lưu trữ có thể được tự động tạo, các giá trị số nhị phân duy nhất được tạo ra và lưu trữ trong database mô phỏng unix timestamp thời gian thực.
binary(n)Lưu trữ dữ liệu nhị phân với độ dài xác định , tối đa 8000 bytes.
varbinary(n)Lưu trữ dữ liệu nhị phân với độ dài biến thiên, tối đa 8000 bytes.
imageLưu trữ giá trị nhị phân biến thiên với độ dài tối đa 2^30-1 (1,073,741,823) bytes.
uniqueidentifierChiếm 16bytes vùng nhớ, sẽ tự động tạo ra một giá trị duy nhất khái niejem là globally unique identifier (GUID)
System-Defined Data Types

Alias data types (kiểu dữ liệu bí danh)

Những kiểu dữ liệu này dựa vào những kiểu dữ liệu hệ thống cung cấp. Kiểu dữ liệu bí danh được sử dụng khi nhiều bảng lưu trữ cùng một kiểu dữ liệu trong một cột và có các đặc điểm tương tự như độ dài, khả năng null và kiểu dữ liệu. Trong những trường hợp như vậy, một kiểu dữ liệu bí danh có thể được tạo để có thể được sử dụng phổ biến bởi tất cả các bảng này.

Kiểu dữ liệu bí danh có thể được tạo thông qua câu lệnh CREATE TYPE. Cú pháp của câu lệnh CREATE TYPE như sau:

CREATE TYPE [schema_name.]type_name FROM base_type [NULL/NOTNULL];

Ví dụ:

CREATE TYPE usertype from varchar(20) NOT NULL 

User-defined types (kiểu dữ liệu người dùng tự định nghĩa)

Ngời dùng có thể tự định nghĩa kiểu dữ liệu bằng cách sử dụng ngôn ngữ lập trình hỗ trợ bởi .NET Framework.

Transact-SQL Language Elements

Các phần tử ngôn ngữ Transact-SQL được sử dụng trong SQL Server 2019 để làm việc trên dữ liệu đã nhập trong cơ sở dữ liệu SQL Server. Các phần tử ngôn ngữ Transact-SQL bao gồm các vị từ (predicates), toán tử (operators),biến (variables), hàm (functons), biểu thức (expressions), kiểm soát luồng (control of flow), lỗi (error) và giao dịch (transactions), comments và dấu phân tách hàng loạt (batch seperators).

Predicates (vị từ)

Predicates (vị từ) có thể hiểu là một biểu thức logic được sử dụng để đánh giá xem biểu thức trả về TRUE,FALSE hay UNKNOWN.

Các mệnh đề trong Transact-SQl sử dụng trong các trường hợp sau:

  • Xác định xem một giá trị đã chỉ định có khớp với bất kỳ giá trị nào trong một truy vấn con hoặc một danh sách hay không
  • Chỉ định một loạt các giá trị để kiểm tra
  • Được sử dụng để so khớp các ký tự với một mẫu được chỉ định
  • Tìm kiếm đối sánh chính xác hoặc ít chính xác hơn với các từ và cụm từ đơn lẻ, các từ trong một khoảng cách nhất định với nhau hoặc đối sánh có trọng số

ví dụ các mệnh đề predicates:

PredicateVí dụ
INSELECT PersonType, Title, FirstName,LastName
FROM AdventureWorks2019.Person.Person WHERE PersonType IN (‘EM’,’SC’)
BETWEENSELECT BusinessEntityID, NationalIDNumber, LoginID, JobTitle, HireDate FROM AdventureWorks2019.HumanResources.Employee WHERE HireDate BETWEEN ’01-01-2010′ AND ’01-01-2013′
LIKESELECT DepartmentID, Name, GroupName, ModifiedDate FROM AdventureWorks2019.HumanResources.Department WHERE Name LIKE ‘P%’
CONTAINSSELECT * FROM AdventureWorks2019.Person.Address WHERE CONTAINS (AddressLine1,’Street’)
Ví dụ về Predicate

Operators (toán tử)

Các toán tử được sử dụng để thực hiện phép tính số học, so sánh, nối hoặc gán các giá trị. Ví dụ: dữ liệu có thể được kiểm tra để xác minh rằng cột COUNTRY cho dữ liệu khách hàng được điền (hoặc có giá trị NOT NULL). Trong các truy vấn, bất kỳ ai có thể xem dữ liệu trong bảng yêu cầu toán tử đều có thể thực hiện các thao tác. Các quyền thích hợp được yêu cầu trước khi dữ liệu có thể được thay đổi thành công. SQL Server có bảy loại toán tử:

OperatorDescriptionExample
ComparisonSo sánh một giá trị với một giá trị khác một biểu thức=,<,>,>=,<=,!=,!>
LogicalKiểm tra kết quả đúng sai (luận lý) của một điều kiệnAND, OR, NOT
ArithmeticThực hiện các phép toán số học như cộng, trừ, nhân và chia+,-,*,/,%
ConcatenationKết hợp 2 chuỗi thày một chuỗi+
AssignmentGán giá trị cho một biến=
Operators

Thứ tự ưu tiên của các toán tử:

Thứ tựToán tử
1() Parentheses
2*, / , %
3+ , –
4= , < , > , >= , <= , != , !>
5NOT
6AND
7BETWEEN, IN , CONTAINS, LIKE, OR
8=
Thứ tự ưu tiên của vị từ và toán tử

Ví dụ về thứ tự ưu tiên của tooán tử:

DECLARE @Number int;
SET @Number = 2 + 2 * (4 + (5 - 3))
SELECT @Number

Kết quả sẽ hiển thị ra 14, với thứ tự thực hiên như sau:

1. 2 + 2*(4+(5-3))
2. 2 + 2*(4+2)
3. 2 + 2*6
4. 2 + 12
5. 14

Functions (hàm)

Một function là một tập hợp các mệnh đề, câu lệnh T-SQL bao gồm một tập hợp các hàm, cá hàm rất hữu dụng để tính toán hoặc làm việc với dữ liệu. Trong SQL, hàm làm việc với dữ liệu, nhóm dữ liệu, để trả về giá trị yêu cầu, sau đó có thể sử dụng mệnh đề SELECT để lấy dữ liệu trả ra từ biểu thức

có 4 kiểu functions trong SQL Server như sau:

Rowset functions

trong transact-SQL, hàm rowet được sử dụng để trả về một đối tượng có thể được sử dụng thay cho tham chiếu bảng. Ví dụ: OPENDATASOURCE, OPENQUERY, OPENROWSET, và OPENXML là các rowset function

Aggregate functions

T-SQL cung cấp một tập hợp các functions để hỗ trợ tóm tắt khối lượng lớn dữ liệu ví dụ: SUM, MIN, MAX, AVG, COUNT, COUNTBIG …

Ranking functions

Xử lý nhiều tác vụ, chẳng hạn như tạo mảng, tạo số thứ tự, tìm thứ hạng, v.v. có thể được thực hiện một cách dễ dàng hơn và nhanh hơn bằng cách sử dụng các chức năng xếp hạng. Ví dụ: RANK,DENSE_RANK,NTILE, ROW_NUMBER là các ranking functions.

Scalar functions

Trong các hàm vô hướng, đầu vào là một giá trị duy nhất và đầu ra nhận được cũng là một giá trị duy nhất

Một số hàm scalar trong SQL:

Function typeMô tảVí dụ
Conversion functionHàm chuyển đổi được sử dụng để chuyển đổi giá trị của một kiểu dữ liệu này sang một kiểu dữ liệu khác. Ngoài ra, nó có thể được sử dụng để lấy định dạng ngày tháng đặc biệt.CONVERT
Date and time functionHàm datetime sử dụng để làm việc với dữ liệu date times, hữu dụng để tính toán thời gianGETDATE, SYSDATETIME, GETUTCDATE, DATEADD, DATEDIFF, YEAR, MONTH, DAY
Mathematical functionCác hàm toán học thực hiện các phép toán đại số trên các giá trị số.RAND, ROUND, POWER, ABS, CELLING, FLOOR
System functionSQL Server cung cấp các hàm hệ thống trả về metadata hoặc configuration settingsHOST_ID,HOST_NAME,ISNULL
String functionCác hàm chuỗi sử dụng để vơi input như char hoặc nvarchar. Output có thể là chuỗi hoặc giá trị sốSUBSTRING, LEFT, RIGHT, LEN, DATALENGTH, REPLACE, REPLICATE, UPPER, LOWER, RTRIM, LTRIM
Scalar functions

Ngoài ra còn có một số scalar functions khác trong SQL Server như cursor functions, logical functions, metadata functions, security functions …

Variables (biến)

Biến là một đối tượng có thể lưu trữ giá trị dữ liệu. Trong T-SQL, biến có thể đưojc chia thành local variable và global variable.

Trong T-SQL local variable được tạo và sử dụng để lưu trữ tạm khi các câu lệnh SQL đưojc thực thi. Dữ liệu có thể đưojc truyền qua câu lệnh SQL thông qua local variables. Tên của local variable luôn có tiền tố (prefix) là từ khóa ‘@’.

Ví dụ:

DECLARE @Search NVARCHAR(30)
SET @Search = N'hello'

Trong các phiên bản trước của SQL Server, đã tồn tại một khái niệm gọi là biến toàn cục, dùng để chỉ các biến tích hợp sẵn được hệ thống xác định và duy trì. Trong SQL Server 2019, các thay thế được phân loại như các hàm. Chúng được bắt đầu bằng hai dấu ‘@’. Giá trị trả về của các hàm này có thể được truy xuất bằng một truy vấn SELECT đơn giản.

Ví dụ

SELECT @@LANGUAGE as 'Language'

Chúng sẽ trả về ngôn ngữ đươc sử dụng của SQL SErver

Một số các hàm có thể bắt gặp:

  • @@DATEFIRST
  • @@LANGUAGE
  • @@LOCK_TIMEOUT
  • @@MAX_CONNECTIONS
  • @@SERVERNAME
  • @@VERSION

Expression (biểu thức)

Một biểu thức là kết hợp của các định danh (identifier), giá trị (values) và toán tử (operators) mà SQL Server có thể đánh giá để nhận được kết quả. Các biểu thức có thể được sử dụng ở một số nơi khác nhau khi truy cập hoặc thay đổi dữ liệu.

Ví dụ về một biểu thức kết hợp giữa mệnh đề SELECT, lấy ra current year và tính toán next year

USE AdventureWorks2019
SELECT SalesOrderID, CustomerID, SalesPersonID, TerritoryID, YEAR(OrderDate) AS CurrentYear, YEAR(OrderDate) + 1 AS NextYear FROM Sales.SalesOrderHeader

Control of Flow, Errors, Transactions

Mặc dù transact-SQL chủ yếu là một ngôn ngữ truy xuất dữ liệu, nó hỗ trợ kiểm soát các luồng câu lệnh (control of flow) để thực thi và tìm lỗi.Luồng kiểm soát (control of flow) xác định luồng thực thi của câu lệnh transact-SQL, khối câu lệnh (block of codes), hàm do người dùng định nghĩa (user-defined functions), store procedures (thủ tục lưu trữ).

Các control of flow thường gặp trong T-SQL

Control-of-Flow StatementDescription
IF … ELSEĐiều khiển phân nhánh dựa trên điều kiện logic
WHILELặp lại các lệnh hoặc khối câu lệnh khi điều kiện kiểm tra còn đúng
BEGIN … ENDĐịnh nghĩa phạm vi của một khối lệnh T-SQL
TRY … CATCHĐịnh nghĩa cấu trúc cho việc xử lý các ngoại lệ và lỗi
BEGIN TRANSACTIONĐánh dấu một khối câu lệnh là một phần của giao dịch rõ ràng
Control-of-Flow

Ví dụ về sử dụng IF ELSE trong T-SQL:

IF DATENAME(weekday, GETDATE()) IN (N'Saturday',N'Sunday') SELECT 'It is a Weekend';
ELSE SELECT 'It is Weekday';

Comments

Comments là chuỗi văn bản mô tả, còn được gọi là chú thích, trong mã chương trình sẽ bị trình biên dịch bỏ qua. Các comments có thể được chèn vào bên trong mã nguồn của một câu lệnh, một khối lệnh hoặc một store procedures. Comments giải thích mục đích của chương trình, các điều kiện thực hiện đặc biệt và cung cấp thông tin lịch sử sửa đổi…. Cú pháp:

-- Day la comment inline
-- Day la comment inline
/*day la comment
 khoi lenh*/

Batch Separators

Batch (gói lệnh) là một tập hợp một hoặc nhiều câu lệnh T-SQL được gửi đi trong một lần ứng dụng thực thi. Các câu lệnh trong T-SQL trong một batch được đóng gói lại thành một đơn vị thực thi ( 1 lần thực thi ), gọi là execution plan. Tiến trình thực thi các tập câu lệnh bên trong batch gọi là batch processing.

Một batch seperator ( phân tách gói lệnh) được kiểm soát bằng SQL Server client tools như là SSMS để thực thi câu lệnh. Ví dụ, bạn xác định GO như một batch seperator trong SSMS.

Ví dụ batch seperator:

USE AdventureWorks2019
SELECT * FROM HumanResources.Employee
GO
-- cau lenh tiep theo

Sets và Predicate Logic (tập hợp và logic vị từ)

Sets và Predicate Logic là 2 các nguyên tắc cơ bản toán học được sử dụng trong SQL Server 2019. Cả hai lý thuyết này đều được sử dụng để truy vấn dữ liệu trong SQL Sever 2019

Set Theory (lý thuyết tập hợp)

Set theory (lý thuyết tập hợp) là một nền tảng toán học được sử dụng trong mô hình cơ sở dữ liệu quan hệ. Tập hợp là một tập hợp các đối tượng riêng biệt được coi là một tổng thể. Ví dụ, tất cả các nhân viên trong một bảng Employee có thể được coi là một tập hợp.

Set Theory ApplicationsApplication in SQL Server Queries
Hành động trên toàn bộ tập hợp cùng một lúcTruy vấn toàn bộ bảng cùng một lúc
Xử lý, khai báo dựa trên tập hợpSử dụng các thuộc tính trong máy chủ SQL để truy xuất dữ liệu cụ thể
Các phần tử trong tập hợp phải là duy nhấtĐịnh nghĩa khóa duy nhất cho bảng
Không có hướng dẫn sắp xếpKết quả của truy vấn không được truy xuất theo bất kỳ thứ tự nào

Một trong những toán tử tập hợp là toán tử INTERSECT(giao điểm). Nó trả về các hàng riêng biệt được tạo ra bởi cả toán tử truy vấn đầu vào bên trái và bên phải.

Ví dụ về sử dụng INTERSECT:

USE AdventureWorks2019
GO
SELECT ProductID
FROM Production.Product
INTERSECT
SELECT ProductID
FROM Production.WorkOrder;

Predicate Logic (logic vị từ)

Xem thêm khái niệm predicate logic tại đây: https://vi.wikipedia.org/wiki/Logic_b%E1%BA%ADc_nh%E1%BA%A5t

Predicate logic là một khung toán học bao gồm các bài kiểm tra logic đưa ra một kết quả. Kết quả luôn được hiển thị là true hoặc false. Trong T-SQL, các biểu thức như biểu thức WHERE và CASE dựa trên logic vị từ. Logic vị từ cũng được sử dụng trong các tình huống khác trong T-SQL

Một số Predicate logic trong T-SQL như sau:

  • thực thi tính bảo mật của dữ liệu bằng cách sử dụng ràng buộc CHECK
  • Kiểm soát luồng sử dụng câu lệnh IF
  • Nối các bảng bằng bộ lọc ON
  • Lọc dữ liệu trong các truy vấn bằng mệnh đề WHERE và HAVING
  • Cung cấp logic có điều kiện cho các biểu thức CASE
  • Xác định truy vấn con

Thứ tự logic của các toán tử trong câu lệnh SELECT

Cùng với cú pháp của các phần tử SQL Server khác nhau, người dùng SQL Server cũng phải biết quy trình thực hiện toàn bộ truy vấn như thế nào. Quy trình này là một quy trình logic phá vỡ truy vấn và thực hiện truy vấn theo một tuần tự được xác định trước. Câu lệnh SELECT là một truy vấn sẽ được sử dụng để giải thích quy trình logic thực hiện truy vấn.

Cú pháp câu lệnh SELECT:

SELECT <select list>
FROM <table source>
WHERE <search condition>
GROUP BY <group by list>
HAVING <search condition>
ORDER BY <order by list>

Mô tả các thành phần trong câu lệnh SELECT:

Thành phầnMô tả
SELECT <select list>Định nghĩa những cột được lấy ra
FROM <table source> Định nghĩa bảng được truy vấn
WHERE <search condition>Lọc các hàng bằng predicate
GROUP BY <group by list>Sắp xếp các hàng theo nhóm
HAVING <search condition>Lọc nhóm bằng predicate
ORDER BY <order by list>Sắp xếp output.
Các thành phần của câu lệnh SELECT

Xét ví dụ phía dưới:

USE AdventureWorks2019
SELECT SalesPersonID,YEAR(OrderDate) AS OrderYear FROM
Sales.SalesOrderHeader
WHERE CustomerID=30084
GROUP BY SalesPersonID, YEAR(OrderDate)
HAVINg COUNT(*) > 1
ORDER BY SalesPersonID,OrderYear;

Trong ví dụ phía trên, tuần tự thực thi của câu lệnh SELECT như sau:

  1. Mệnh đề FROM được đánh giá để xác định bảng nguồn sẽ được truy vấn
  2. Mệnh đề WHERE được đánh giá để lọc các hàng trong bảng nguồn, bộ lọc này được định nghĩa bởi vị từ được đề cập sau mệnh đề WHERE
  3. Tiếp theo, mệnh đề GROUP BY được đánh giá. Mệnh đề này sắp xếp các dữ liệu đã được lọc trong mệnh đề WHERE
  4. Mệnh đề HAVING được đánh giá
  5. Mệnh đề SELECT được thực thi để chỉ ra những cột sẽ xuất hệt ở kết quả truy vấn
  6. Cuối cùng, câu lệnh ORDER BY được thực thi để hiển thị output
USE AdventureWorks2019
-- thu tu thuc thi cua cau lenh select
5.SELECT SalesPersonID,YEAR(OrderDate) AS OrderYear FROM
1.Sales.SalesOrderHeader
2.WHERE CustomerID=30084
3.GROUP BY SalesPersonID, YEAR(OrderDate)
4.HAVINg COUNT(*) > 1
6.ORDER BY SalesPersonID,OrderYear;
Kết quả trả ra từ câu lệnh SELECT

Bài tập

1. Sử dụng Query Editor để thực thi truy vấn, đảm bảo kết nối với server đã được thiết lập.

Bước tiêếp theo, sử dụng AdventureWorks2019 khởi tạo và thực thi các câu lệnh:

  • Hiển thị tất cả territory name trong bảng Sales.SalesTerritory.
  • Hiể thị ất cả product description trong bảng Production.ProductDescription.
  • Hiể thị dữ liệu các cột ProductID,Name, ProductNumber trong bảng Production.Product
  • Hiển thị bonus, commission percentage, sales ở năm trước trong bảng Sales.SalesPerson mà có territories (lãnh thổ) có TerritoryID nằm giữa 1 và 3

2. Đoạn mã sau để thêm năm ngày vào một ngày nhất định:

SET NOCOUNT ON
DECLARE @startdate DATETIME, @adddays INT;
SET @startdate = 'January 10,1900 12:00 AM';
SET @adddays = 5;
SET NOCOUNT OFF
SELECT @startdate + 1.25 AS 'Start Date', @startdate + @adddays AS 'Add Date';

Tạo mã SQL sẽ trừ sáu ngày kể từ ngày được cho.

3. Sử dụng các toán tử so sánh để thực thi các tác vụ sau:

  • Hiển thị tất cả các bản ghi từ Person.Address có city là Montreal
  • Hiển thị tất cả bản ghi từ bảng HumanResources.Department mà có giá trị trong DepartmentID lớn hơn hoặc bằng 13
  • Hiển thị toàn bộ bản ghi trong bảng Production.ProductCategory mà không có giá trị productCategoryID bằng 3 hoặc bằng 2

4. Hiển thị toàn bộ bản ghi từ bảng Person.Person mà có last name bắt đầu bởi ký tự B

Bài viết liên quan:

PolyBase, Query Store, và Stretch Database trong SQL Server
Dữ liệu JSON trong SQL Server
Các tính năng nâng cao SQL trong SQL Server 2019
Giới thiệu Azure SQL
Xử lý lỗi và TRY CATCH trong SQL Server
Transaction trong SQL Server
FUNCTION (hàm) trong SQL Server
Lập trình và control of flow trong Transact SQL
Trigger trong SQL Server
Index trong SQL Server
Truy vấn metadata và Dynamyic Management Object trong SQL Server
Stored Procedure trong SQL Server

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Một số cải tiến trong ASP.NET Core, Razor Page, Model Binding, Gabbage collection

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×