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

Bảng tham chiếu SQL:Cách tạo và viết các truy vấn cơ bản

Bài viết này sẽ tập trung vào việc viết các truy vấn SQL dựa trên bảng tham chiếu cơ sở dữ liệu với cấu trúc khá đơn giản để hiểu và thực hiện.

Ngoài ra, chúng tôi sẽ làm rõ các khái niệm đằng sau việc viết các truy vấn SQL hiệu quả cùng với một số mẹo trong cuộc sống chuyên nghiệp.

Trước khi truy vấn bảng cơ sở dữ liệu

Vì bài viết này nói về truy vấn các bảng cơ sở dữ liệu với sự trợ giúp của các tập lệnh SQL, người đọc nên có một nền tảng nhất định để hiểu đầy đủ các khái niệm và ví dụ. Chúng ta cần có ấn tượng về cách tham chiếu một bảng. Ngoài ra, các thiết bị cần thiết phải có:

Bạn cần:

  1. Kiến thức cơ bản về cơ sở dữ liệu quan hệ và SQL.
  2. Máy chủ cơ sở dữ liệu SQL được cài đặt cục bộ hoặc từ xa.
  3. Các công cụ quản lý cơ sở dữ liệu như SQL Server Management Studio hoặc dbForge Studio dành cho SQL Server.

Bạn sẽ có thể tạo cơ sở dữ liệu mẫu (với sự trợ giúp của các tập lệnh được cung cấp), kết nối với SQL Server và chạy trên cơ sở dữ liệu mẫu đó.

Trước khi chúng tôi tiến hành chạy các truy vấn dựa trên cơ sở dữ liệu trống, bạn có thể cần tham khảo bài viết trước dành riêng cho chủ đề này để làm mới kiến ​​thức:

Cách viết truy vấn SQL đơn giản từ cơ sở dữ liệu trống

Viết truy vấn SQL bắt đầu từ bảng tham chiếu

Chúng ta cần viết các truy vấn SQL dựa trên một cơ sở dữ liệu mẫu có chứa hai bảng. Kế hoạch là xem dữ liệu từ một trong các bảng được gọi là bảng tham chiếu SQL. Lưu ý:Bảng tham chiếu có thể là bất kỳ bảng nào không yêu cầu dữ liệu từ bảng khác.

Trước tiên, chúng ta cần hiểu cấu trúc của cơ sở dữ liệu mẫu để truy vấn chính xác.

Ví dụ về bảng tham chiếu cơ sở dữ liệu

Chúng tôi sử dụng mẫu BookSimple2 cơ sở dữ liệu bao gồm hai bảng, BookType Sách .

BookType bảng chứa các loại sách được gán cho một cuốn sách. Sách bảng chứa tên, loại và kho (số bản sao có sẵn) của sách.

Có thể dễ dàng đoán được rằng cả hai bảng đều được liên kết với nhau thông qua các khóa. Loại sách được lưu trữ trong Sách bảng ban đầu được xác định trong BookType bàn. Nó cho phép giữ cho dữ liệu nhất quán và đáng tin cậy.

Do đó, BookType table là một bảng tham chiếu - nó cung cấp tham chiếu (loại sách) cho Sách chính bảng.

Hãy xem hình minh họa bên dưới:

Nếu chúng tôi không liên kết Sách bảng với BookType để có được loại sách, chúng ta phải xác định loại cần thiết mỗi khi một cuốn sách mới được lưu trữ. Do đó, lỗi sẽ sớm xảy ra vì chúng ta đang lưu trữ cùng một loại lặp đi lặp lại. Hơn nữa, chúng tôi có thể tạo ra nhiều loại khác do lỗi chính tả.

Giả sử nếu chúng tôi bỏ qua việc sử dụng bảng tham chiếu và chỉ tạo một bảng chính, chúng tôi có thể sử dụng các cách khác nhau để đại diện cho một loại, chẳng hạn như Thiết kế , Thiết kế Kiểu dáng . Nó gây nhầm lẫn, đặc biệt là khi truy vấn và hiểu dữ liệu.

Bạn cũng có thể tham khảo bài viết trước để biết thêm thông tin về cách các bảng liên quan với nhau trong SQL:

Học thiết kế cơ sở dữ liệu với SQL Server Management Studio (SSMS) - Phần 2

Bây giờ bạn đã thấy nền tảng của việc sử dụng các bảng tham chiếu và các bảng chính, chúng ta có thể tiếp tục với các ví dụ.

Cách tạo bảng tham chiếu trong SQL

Mở công cụ phát triển cơ sở dữ liệu (có thể là SQL Server Management Studio hoặc dbForge Studio cho SQL Server) và kết nối với phiên bản máy chủ SQL đã cài đặt.

Viết tập lệnh sau dựa vào cơ sở dữ liệu chính để thiết lập cơ sở dữ liệu mẫu BookSimple2 với hai bảng:

-- Create sample database BookSimple2
USE MASTER
GO

CREATE DATABASE BookSimple2
GO

USE BookSimple2

-- Creating a reference table BookType
CREATE TABLE dbo.BookType
(
	BookTypeId INT IDENTITY(1,1),
	Name VARCHAR(50)NOT NULL,
	Detail VARCHAR(200)NULL 
	CONSTRAINT PK_BookType_BookTypeId PRIMARY KEY (BookTypeId)
)
GO

-- Populating (adding rows to the) table BookType
SET IDENTITY_INSERT dbo.BookType ON
GO
INSERT INTO dbo.BookType
(
  BookTypeId
 ,Name
 ,Detail
)
VALUES
(
  1  -- ID - INT Primary Key
 ,'Designing' -- Name - varchar(50) NOT NULL
 ,'This is Designing' -- Detail - varchar(200)
),
(
  2  -- ID - INT Primary Key
 ,'Testing' -- Name - varchar(50) NOT NULL
 ,'This is Testing' -- Detail - varchar(200)
),
(
  3  -- ID - INT Primary Key
 ,'Coding' -- Name - varchar(50) NOT NULL
 ,'This is Coding' -- Detail - varchar(200)
);
GO
SET IDENTITY_INSERT dbo.BookType OFF
GO

-- Creating a table Book
CREATE TABLE dbo.Book
(
	BookId INT IDENTITY(1,1),
	Name VARCHAR(50),
	BookTypeId INT,
	Stock INT,
	CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId)
)
GO

Sau khi chạy tập lệnh, bạn có thể xem cơ sở dữ liệu mới được tạo trong SSMS Object Explorer hoặc phần Database Explorer của dbForge Studio dành cho SQL Server:

Cách tham chiếu hai bảng bằng khóa ngoại SQL

Tôi đã cố tình loại trừ phần tập lệnh tạo ra mối quan hệ giữa bảng tham chiếu ( BookType ) và bảng chính ( Sách ) dưới dạng khóa.

Thực thi tập lệnh sau đối với cơ sở dữ liệu mẫu để liên kết bảng tham chiếu với bảng chính:

-- Creating foreign key constraint on Book table to get BookTypeId values from BookType table
ALTER TABLE dbo.Book
    ADD CONSTRAINT [FK_Book_BookType_BookTypeId] 
FOREIGN KEY ([BookTypeId]) REFERENCES dbo.[BookType] ([BookTypeId]);

Mở rộng BookSimple2 cơ sở dữ liệu> Sách bảng> Phím thư mục:

Chúng ta có thể thấy rằng hai bảng đã được liên kết thành công.

Trên đây là ảnh chụp màn hình từ SQL Server Management Studio. Tuy nhiên, chế độ xem hoàn toàn giống nhau nếu bạn xem cơ sở dữ liệu trong Database Explorer của dbForge Studio dành cho SQL Server.

Mẹo quan trọng về việc chọn cơ sở dữ liệu mong muốn: Bạn phải đảm bảo rằng bạn đang chạy các truy vấn đối với cơ sở dữ liệu chính xác - cơ sở dữ liệu mẫu. Do đó, hãy chọn nó từ danh sách cơ sở dữ liệu có sẵn hoặc chạy tập lệnh sau:

-- Select the sample SQL database to query it
USE BookSimple2

Quan trọng! Việc sử dụng tập lệnh để chọn cơ sở dữ liệu không được áp dụng nếu bạn làm việc với phiên bản đám mây của cơ sở dữ liệu SQL được gọi là Cơ sở dữ liệu SQL Azure.

Viết truy vấn đầu tiên

Để truy vấn các bảng cơ sở dữ liệu, chúng ta chỉ cần ghi nhớ câu lệnh SELECT ở dạng sau:

SELECT * FROM <TableName>

Thay thế bằng tên của bảng hiện có và tập lệnh sẽ trả về cho bạn tất cả các bản ghi (hàng) của bảng đó.

Câu lệnh SELECT linh hoạt hơn rất nhiều, nhưng hiện tại, chúng ta sẽ chỉ tập trung vào việc xem tất cả các bản ghi (hàng) của một bảng.

Mẹo quan trọng về SQL :Hãy nhớ rằng SQL (đặc biệt đề cập đến T-SQL) không phân biệt chữ hoa chữ thường . Nó liên quan đến cả từ dành riêng cho SQL ( SELECT giống với Chọn ) hoặc tên do người dùng xác định ( BookType giống với booktype ) .

Xem tất cả các Hàng từ Bảng Tham chiếu BookType

Viết đoạn mã sau dựa trên cơ sở dữ liệu mẫu:

-- View all data from the BookType table
SELECT * FROM dbo.BookType

Đầu ra là:

Chúng ta có thể thấy tất cả các cột và hàng từ bảng. Cho đến nay, đây là phương pháp nhanh nhất để lấy tất cả dữ liệu từ một bảng.

Mẹo quan trọng về CHỌN *: Bạn nên sử dụng SELECT * để lấy tất cả các hàng và cột từ một bảng chỉ khi bạn kiểm tra một bảng nhỏ (chẳng hạn như bảng tham chiếu). Nếu không, nó có thể tốn rất nhiều thời gian, trong khi chúng tôi có thể cần dữ liệu trên một vài cột và hàng từ một bảng lớn hơn.

Tìm tất cả các Hàng từ Bảng BookType Sử dụng Tên Bảng

Có một cách tốt hơn để truy vấn bảng. Chúng tôi đặt tên cho một bảng và liên kết nó với tất cả các cột như hình dưới đây:

-- View all data from the BookType table using bt alias
SELECT bt.* FROM dbo.BookType bt

Xem các Cột đã Chọn từ Bảng Tham chiếu

Sử dụng tên bảng mang lại nhiều lợi ích hơn. Đầu tiên, chúng ta có thể nhanh chóng chọn cột mong muốn từ bảng. Sau đó, nó làm cho việc sử dụng các bảng và cột giới hạn trở nên rõ ràng hơn vì trong hầu hết các trường hợp, chúng tôi chỉ yêu cầu một số cột.

Đây là một ví dụ về việc chỉ nhận ID và tên từ BookType bảng:

-- View book type id and name columns from the reference table
SELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt

Kết quả là:

Cải thiện cú pháp SELECT

Do đó, dựa trên những thông tin đã đề cập ở trên, chúng ta có thể cải tiến cú pháp SELECT như sau:

SELECT t.<column1>,t.<column2> FROM <TableName> t

Sắp xếp dữ liệu theo cột tên bằng mệnh đề Order By

Bạn có thể sắp xếp tập hợp kết quả dựa trên một cột hoặc tập hợp các cột cụ thể. Việc sắp xếp dữ liệu mang lại một quan điểm khác.

Việc sử dụng Đặt hàng theo mệnh đề trong trường hợp này là:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1>

Ví dụ, chúng ta muốn xem các loại sách được sắp xếp theo tên loại (thứ tự bảng chữ cái). Trong trường hợp này, chúng tôi sử dụng mệnh đề Order By trong tập lệnh câu lệnh SELECT như sau:

-- View book types (name) sorted by type name 
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name

Đầu ra là:

Sắp xếp dữ liệu theo cột tên theo thứ tự giảm dần

Chúng tôi cũng có thể sắp xếp dữ liệu theo thứ tự giảm dần theo yêu cầu. Ví dụ, chúng tôi muốn xem danh sách tất cả các loại sách dựa trên cột Tên theo thứ tự giảm dần (Z đến A). Cú pháp sẽ là:

SELECT t.<column1>,t.<column2> FROM <TableName> t order by t.<column1> desc

Tập lệnh T-SQL như sau:

-- View book types (name) sorted by a type name in descending order (from Z to A)
SELECT bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc

Tập hợp kết quả dưới đây:

Xem TOP N bản ghi từ một bảng

Cuối cùng, chúng ta có thể chọn số hàng mong muốn được kéo từ cơ sở dữ liệu bằng cách sử dụng mệnh đề TOP. Sau điều khoản đó, chúng tôi phải cung cấp số được yêu cầu:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t 

Tuy nhiên, điều khoản TOP mà không có bất kỳ thứ tự nào không phải là lựa chọn tốt nhất. Chúng ta phải chỉ định thứ tự các cột cần xem xét khi chọn n hàng trên cùng.

Ở đây, chúng ta có thể cải thiện cú pháp trên như sau:

SELECT Top N t.<column1>,t.<column2> FROM <TableName> t order by <column> Desc/Asc

Hãy nhớ rằng chúng ta phải đề cập đến thứ tự giảm dần bằng cách sử dụng DESC cuối cùng. Tuy nhiên, thứ tự tăng dần không bắt buộc phải đề cập - đó là tùy chọn mặc định.

Hãy để chúng tôi xem 2 loại sách hàng đầu được sắp xếp theo tên theo thứ tự giảm dần:

--View Top 2 types of the books ordered by name in descending order (from Z to A)
SELECT TOP 2 bt.Name FROM dbo.BookType bt 
ORDER BY bt.Name DESC

Đầu ra là:

Mẹo quan trọng về TOP N: sử dụng mệnh đề TOP N (với thứ tự theo thứ tự) để xem bảng thay vì xem tất cả các hàng của bảng nếu bạn muốn kiểm tra dữ liệu được gọi là xem trước một cách nhanh chóng.

Trong các tình huống cuộc sống chuyên nghiệp, mệnh đề Top N dùng để cập nhật các phần lớn dữ liệu từ một bảng lớn theo từng bước.

Bây giờ, chúng ta đã truy vấn thành công bảng của cơ sở dữ liệu SQL. Bên cạnh đó, chúng tôi đã làm quen với một số mẹo để chạy truy vấn như một người chuyên nghiệp và học một số phương pháp hay nhất để viết truy vấn SQL.

Thực hành bảng tham chiếu DB

Giờ đây, bạn có thể viết, chạy và nâng cao hiệu quả của các truy vấn SQL so với bất kỳ bảng nào. Hãy thử các bài tập sau để cải thiện các kỹ năng mới:

  1. Cố gắng viết một tập lệnh để xem id loại sách ( BookTypeId ) với các chi tiết ( Chi tiết ) chỉ cột.
  2. Thử sắp xếp tham chiếu BookType bảng theo id ( BookTypeId ) theo thứ tự giảm dần (từ 3 đến 1).
  3. Thử lấy 2 hàng trên cùng từ BookType bảng chỉ bao gồm id ( BookTypeId ) và thông tin chi tiết ( Chi tiết ) của loại sách được sắp xếp theo Chi tiết cột.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KNIME

  2. Tương lai của ngăn xếp ứng dụng

  3. Kết nối Ứng dụng 32-bit với jBASE

  4. Bắt đầu với Shareplex trên Windows trên AWS, Phần 2

  5. Bắt đầu Điều chỉnh Hiệu suất trong Cơ sở dữ liệu Azure SQL