Truy vấn SQL nâng cao, Ví dụ về truy vấn trong SQL Danh sách các mục TOP-70 trong năm 2022 – ví dụ truy vấn ms sql

Truy vấn SQL nâng cao với các ví dụ trong cơ sở dữ liệu truy vấn của chúng tôi. Làm cho việc viết mã của bạn nhanh hơn với các lệnh SQL nâng cao.

Bạn đang xem : Ví dụ về truy vấn sql trên ms

SQL cực kỳ mạnh mẽ và giống như mọi công cụ phát triển tốt khác, nó có một số lệnh mà một nhà phát triển giỏi cần biết. Đây là danh sách các truy vấn SQL thực sự quan trọng để viết mã & amp; tối ưu hóa. Mỗi truy vấn trong hướng dẫn SQL là kết quả của hầu hết mọi hệ thống tương tác với cơ sở dữ liệu SQL .

1. Truy vấn SQL để lấy bảng

Có thể chạy truy vấn này để truy xuất danh sách các bảng có trong cơ sở dữ liệu mà cơ sở dữ liệu là “My_Schema”.

Với lệnh SELECT, người dùng có thể xác định các cột mà họ muốn lấy trong kết quả truy vấn. Lệnh này cũng hữu ích để lấy cột mà người dùng muốn xem làm bảng đầu ra. Câu lệnh SELECT được áp dụng để chọn dữ liệu từ một bảng. Dữ liệu được truy xuất được đưa vào một bảng kết quả, được đặt tên là tập kết quả. Dữ liệu đầu ra được lưu trong một bảng kết quả. Bảng kết quả này cũng được gọi là tập kết quả.

CHỌN * TỪ My_Schema.Tables;

Đây có lẽ là những ví dụ về truy vấn SQL hữu ích nhất. Trong ví dụ dưới đây, chúng tôi đang trích xuất cột hoặc thuộc tính “Student_ID” từ bảng “STUDENT”. Câu lệnh select được sử dụng để chọn dữ liệu từ cơ sở dữ liệu.

SELECT Student_ID FROM STUDENT;

Nếu bạn muốn hiển thị tất cả các thuộc tính từ một bảng cụ thể, đây là truy vấn phù hợp để sử dụng:

CHỌN * TỪ HỌC SINH;

Truy vấn SQL này truy xuất các thuộc tính được chỉ định từ bảng trên ràng buộc

CHỌN EMP_ID, TÊN TỪ EMPLOYEE_TBL WHERE EMP_ID = '0000';

4. Truy vấn để xuất ra dữ liệu được sắp xếp bằng cách sử dụng “Order By”

Truy vấn này sắp xếp các kết quả theo thuộc tính được tham chiếu đến bằng cách sử dụng “Order By” – ví dụ: nếu thuộc tính đó là kiểu dữ liệu số nguyên, thì kết quả sẽ được sắp xếp theo thứ tự tăng dần hoặc giảm dần; tương tự như vậy nếu kiểu dữ liệu là Chuỗi thì kết quả sẽ được sắp xếp theo thứ tự bảng chữ cái. Mệnh đề order by được sử dụng để sắp xếp dữ liệu từ bảng. Mệnh đề thứ tự phải luôn được sử dụng trong phần cuối cùng của truy vấn SQL.

CHỌN EMP_ID, LAST_NAME TỪ NHÂN VIÊN
WHERE CITY = 'Seattle' ĐẶT HÀNG BỞI EMP_ID;

Thứ tự của kết quả cũng có thể được đặt theo cách thủ công, sử dụng “asc” để tăng dần và “desc” để giảm dần.

Tăng dần (ASC) là điều kiện mặc định cho mệnh đề ORDER BY. Nói cách khác, nếu người dùng không chỉ định ASC hoặc DESC sau tên cột, thì kết quả sẽ chỉ được sắp xếp theo thứ tự tăng dần.

CHỌN EMP_ID, LAST_NAME TỪ EMPLOYEE_TBL
WHERE CITY = 'INDIANAPOLIS' LỆNH BỞI EMP_ID asc;

5. Truy vấn SQL để xuất dữ liệu được sắp xếp bằng cách sử dụng ‘Group By’

Thuộc tính “Group By” nhóm dữ liệu kết quả theo thuộc tính được chỉ định.

Truy vấn SQL bên dưới sẽ chọn các cột Tên, Tuổi từ bảng Bệnh nhân, sau đó sẽ lọc chúng theo giá trị Tuổi để bao gồm các bản ghi có Tuổi lớn hơn 40 và sau đó sẽ nhóm các bản ghi có giá trị Tuổi tương tự và cuối cùng sẽ xuất chúng được sắp xếp bằng tên. Quy tắc cơ bản là mệnh đề group by phải luôn theo sau mệnh đề where trong câu lệnh Select và phải đứng trước mệnh đề Order by.

CHỌN Tên, Tuổi TỪ Bệnh nhân Ở ĐÂU Tuổi & gt; 40
NHÓM THEO Tên, Tuổi Thứ tự theo tên;

Một mẫu sử dụng khác của Nhóm Theo: biểu thức này sẽ chọn các bản ghi có giá nhỏ hơn 70 từ bảng Đơn hàng, sẽ nhóm các bản ghi có giá tương tự, sẽ sắp xếp đầu ra theo giá và cũng sẽ thêm cột COUNT ( price) sẽ hiển thị số lượng bản ghi có giá tương tự đã được tìm thấy:

CHỌN ĐẾM (giá), giá TỪ đơn đặt hàng
GIÁ TẠI ĐÂU & lt; 70 NHÓM THEO giá ĐẶT HÀNG THEO giá

Lưu ý: bạn nên sử dụng cùng một tập hợp các cột cho cả lệnh SELECT và GROUP BY, nếu không bạn sẽ gặp lỗi. Rất cám ơn bạn đã chỉ ra nó!

Truy vấn SQL để thao tác dữ liệu bằng các hàm toán học

Có rất nhiều hàm toán học được tích hợp sẵn như COUNT và AVG cung cấp các hàm cơ bản để đếm số lượng kết quả và tính trung bình chúng tương ứng.

6. Thao tác dữ liệu bằng COUNT

Truy vấn này hiển thị tổng số khách hàng bằng cách đếm từng ID khách hàng. Ngoài ra, nó phân nhóm kết quả theo quốc gia của từng khách hàng. Về số lượng, nếu người dùng xác định DISTINCT, thì họ cũng xác định query_partition_clause. Mệnh đề này là một phần của mệnh đề phân tích và các mệnh đề khác như order_by_clause và windowing_clause không được phép.

Cú pháp: CHỌN ĐẾM (tên màu) TỪ tên bảng;

CHỌN COUNT (CustomerID), Quốc gia TỪ NHÓM Khách hàng THEO Quốc gia;

SUM tính tổng thuộc tính được cấp cho nó dưới dạng đối số. SUM là một hàm tổng hợp và nó tính tổng của tất cả các giá trị riêng biệt. và tổng của tất cả các giá trị trùng lặp.

CHỌN SUM (Lương) TỪ Nhân viên TẠI ĐÂU Emp_Age & lt; 30;

8. Thao tác dữ liệu bằng AVG

Đơn giản – giá trị trung bình của một thuộc tính nhất định. Trung bình cũng là một hàm tổng hợp trong SQL. Hàm AVG () tính giá trị trung bình của các giá trị không phải NULL trong một cột. Nó bỏ qua các giá trị rỗng.

CHỌN AVG (Giá) TỪ Sản phẩm;

9. Truy vấn SQL để liệt kê tất cả các Chế độ xem

Truy vấn SQL này liệt kê tất cả các dạng xem có sẵn trong lược đồ.

CHỌN * TỪ My_Schema.views;

10. Truy vấn tạo chế độ xem

Chế độ xem là một bảng được điều chỉnh phù hợp được hình thành do kết quả của một truy vấn. Nó có các bảng và hàng giống như bất kỳ bảng nào khác. Thông thường bạn nên chạy các truy vấn trong SQL dưới dạng các chế độ xem độc lập vì điều này cho phép chúng được truy xuất sau đó để xem kết quả truy vấn, thay vì mỗi lần tính toán cùng một lệnh cho một tập hợp kết quả cụ thể.

TẠO CHẾ ĐỘ XEM KHÔNG ĐẠT_Sinh viên NHƯ
CHỌN S_NAME, Student_ID
TỪ SINH VIÊN
Điểm trung bình ở đâu & gt; 40;

11. Truy vấn để lấy một lượt xem

Cú pháp tiêu chuẩn của việc chọn thuộc tính từ một bảng cũng có thể áp dụng cho các chế độ xem.

SELECT * FROM Failing_Students;

12. Truy vấn cập nhật chế độ xem

Truy vấn này cập nhật chế độ xem có tên ‘Danh sách sản phẩm’ – và nếu chế độ xem này không tồn tại, thì chế độ xem Danh sách sản phẩm sẽ được tạo như được chỉ định trong truy vấn này. Khung nhìn còn được gọi là bảng ảo. Nói cách khác, một chế độ xem chỉ là một bản sao được phản chiếu của một bảng có dữ liệu là kết quả của một truy vấn được lưu trữ.

Chế độ xem là bản sao hợp pháp của một bảng hoặc chuỗi các bảng khác. Một dạng xem lấy thông tin hoặc dữ liệu của nó từ các bảng từ các bảng đã tạo trước đó được gọi là bảng cơ sở. Bảng cơ sở là bảng thực. Tất cả các thủ tục được thực hiện trên một khung nhìn thực sự sửa đổi bảng cơ sở. Người dùng có thể sử dụng các khung nhìn giống như bảng thực hoặc bảng cơ sở. Theo quan điểm, người dùng có thể áp dụng các lệnh DDL, DML khác nhau như cập nhật, chèn vào và xóa.

TẠO HOẶC THAY THẾ CHẾ ĐỘ XEM [Danh sách sản phẩm] NHƯ
CHỌN ProductID, ProductName, Category
TỪ Sản phẩm
WHERE Discontinued = Không;

13. Truy vấn giảm lượt xem

Truy vấn này sẽ xóa hoặc xóa chế độ xem có tên ‘V1’. Điều quan trọng cần nhớ ở đây là KHÔNG cho phép DROP VIEW nếu có bất kỳ lượt xem nào phụ thuộc vào lượt xem mà bạn sắp bỏ.

HÃY XEM V1;

14. Truy vấn hiển thị bảng người dùng

Bảng do người dùng xác định là đại diện của thông tin đã xác định trong bảng và chúng có thể được sử dụng làm đối số cho các thủ tục hoặc hàm do người dùng xác định . Vì chúng rất hữu ích nên sẽ hữu ích nếu bạn theo dõi chúng bằng cách sử dụng truy vấn sau. Bảng người dùng giải thích các bảng quan hệ của người dùng hiện tại.

CHỌN * TỪ Sys.objects WHERE Type = 'u'

15. Truy vấn hiển thị các khóa chính

Một khóa chính xác định duy nhất tất cả các giá trị trong một bảng. Khóa chính áp đặt giới hạn NOT NULL và giới hạn duy nhất trong một khai báo. Nói cách khác, nó ngăn các hàng khác nhau có các giá trị hoặc chuỗi cột tương tự nhau. Nó không cho phép các giá trị rỗng. Khóa chính có thể được xác định trên một cột hoặc sự kết hợp của hai cột trong bảng. Nó chịu trách nhiệm về tất cả các mối quan hệ giữa các bảng.

Truy vấn SQL sau liệt kê tất cả các trường trong khóa chính của bảng.

CHỌN * từ Sys.Objects WHERE Type = 'PK'

16. Truy vấn để hiển thị các khóa duy nhất

Khóa duy nhất cho phép một cột đảm bảo rằng tất cả các giá trị của nó là khác nhau. Khóa duy nhất cũng nhận ra một bộ khác duy nhất liên quan đến hoặc bảng. Một bảng có thể có nhiều hơn một khóa duy nhất. Các ràng buộc khóa duy nhất chỉ có thể nhận một giá trị NULL cho cột.

CHỌN * TỪ Sys.Objects WHERE Type = 'uq'

17. Hiển thị các khóa nước ngoài

Liên kết khóa ngoại này với bảng khác – chúng là các thuộc tính trong một bảng tham chiếu đến khóa chính của bảng khác.

CHỌN * TỪ Sys.Objects WHERE Loại = 'f'

Chính, Duy nhất và Nước ngoài là một phần của các ràng buộc trong SQL. Các ràng buộc là điều cần thiết đối với khả năng mở rộng, tính tuân thủ và tính trung thực của dữ liệu. Ràng buộc thực hiện các quy tắc cụ thể, đảm bảo dữ liệu tuân thủ các điều kiện đã nêu. Ví dụ, đây là các luật áp đặt cho các cột của bảng cơ sở dữ liệu. Chúng được áp dụng để hạn chế loại dữ liệu trong bảng. Điều này đảm bảo tính hiệu quả và tính xác thực của cơ sở dữ liệu.

18. Hiển thị các trình kích hoạt

Trình kích hoạt là một loại “trình xử lý sự kiện” – tức là một tập hợp các hướng dẫn được chỉ định trước sẽ thực thi khi một sự kiện nhất định xảy ra. Bạn có thể xem danh sách các trình kích hoạt đã xác định bằng truy vấn sau.

CHỌN * TỪ Sys.Objects WHERE Type = 'tr'

19. Hiển thị các bảng nội bộ

Bảng nội bộ được hình thành như một sản phẩm phụ của hành động của người dùng và thường không thể truy cập được. Không thể thao tác dữ liệu trong các bảng nội bộ; tuy nhiên, bạn có thể xem siêu dữ liệu của các bảng nội bộ bằng cách sử dụng truy vấn sau.

CHỌN * TỪ Sys.Objects WHERE Type = 'it'

20. Hiển thị danh sách các thủ tục

Thủ tục được lưu trữ là một nhóm các truy vấn SQL nâng cao tạo thành một đơn vị một cách hợp lý và thực hiện một tác vụ cụ thể. Do đó, bằng cách sử dụng truy vấn sau, bạn có thể theo dõi chúng:

CHỌN * TỪ Sys.Objects WHERE Loại = 'p'

21. Trao đổi giá trị của hai cột trong bảng

Trong ví dụ này và các ví dụ tiếp theo, chúng tôi sẽ sử dụng cơ sở dữ liệu chung của công ty bao gồm một số bảng dễ hình dung. DB thực hành của chúng tôi sẽ bao gồm một bảng Khách hàng và một bảng Đơn hàng. Bảng Khách hàng sẽ chứa một số cột rõ ràng bao gồm ID, Tên, Địa chỉ, mã zip và email, chẳng hạn như bây giờ chúng tôi giả định rằng trường khóa chính để lập chỉ mục là trường.

Với ý nghĩ này, chúng tôi có thể dễ dàng hình dung bảng Đơn đặt hàng cũng chứa trường ID khách hàng được lập chỉ mục, cùng với chi tiết của từng đơn hàng do khách hàng đặt. Bảng này sẽ bao gồm Số đơn đặt hàng, Số lượng, Ngày, Mặt hàng và Giá. Trong một trong những ví dụ SQL đầu tiên của chúng tôi, hãy tưởng tượng tình huống trong đó trường zip và trường điện thoại được chuyển đổi và tất cả các số điện thoại đã bị nhập sai vào trường mã zip. Chúng tôi có thể dễ dàng khắc phục sự cố này bằng câu lệnh SQL sau:

CẬP NHẬT Khách hàng SET Zip = Điện thoại, Điện thoại = Zip

Bây giờ, giả sử rằng nhà điều hành nhập dữ liệu của chúng tôi đã thêm cùng một Khách hàng vào bảng Khách hàng nhiều lần do nhầm lẫn. Như bạn đã biết, việc lập chỉ mục thích hợp yêu cầu trường khóa chỉ chứa các giá trị duy nhất. Để khắc phục sự cố, chúng tôi sẽ sử dụng cách tạo danh sách khách hàng duy nhất có thể lập chỉ mục:

CHỌN ID DISTINCT TỪ Khách hàng

23. Nằm trong Top 25 với Mệnh đề CHỌN HÀNG ĐẦU

Tiếp theo, hãy tưởng tượng rằng bảng Khách hàng của chúng tôi đã phát triển bao gồm hàng nghìn bản ghi, nhưng chúng tôi chỉ muốn hiển thị một mẫu gồm 25 bản ghi trong số này để chứng minh các tiêu đề cột và mệnh đề SELECT TOP cho phép chúng tôi chỉ định số lượng bản ghi để trở lại, giống như danh sách Top-25. Trong ví dụ này, chúng tôi sẽ trả lại 25 hàng đầu từ bảng Khách hàng của chúng tôi:

CHỌN 25 KHÁCH HÀNG HÀNG ĐẦU TỪ KHÁCH HÀNG TẠI ĐÓ Customer_ID & lt; & gt; NULL;

24. Tìm kiếm Bảng SQL bằng Ký tự đại diện

Các ký tự đại diện hoặc toán tử như “%” giúp dễ dàng tìm thấy các chuỗi cụ thể trong một bảng lớn gồm hàng nghìn bản ghi. Giả sử chúng tôi muốn tìm tất cả khách hàng của mình có tên bắt đầu bằng “Herb” bao gồm Herberts và Herbertson. Biểu tượng ký tự đại diện % có thể được sử dụng để đạt được kết quả như vậy. Truy vấn SQL sau đây sẽ trả về tất cả các hàng từ bảng Khách hàng trong đó trường Customer_name bắt đầu bằng “Herb”:

CHỌN * Từ khách hàng NƠI Tên NHƯ 'Herb%'

25. Từ Thứ Hai đến Thứ Ba

Hôm nay là Thứ Tư, chúng tôi đến nơi làm việc và phát hiện ra rằng nhân viên nhập dữ liệu mới của chúng tôi trong khóa đào tạo đã nhập sai tất cả các đơn đặt hàng mới vào Thứ Hai và Thứ Ba. Chúng tôi muốn dạy cho học viên mới của chúng tôi cách tìm và sửa tất cả các hồ sơ sai sót. Cách dễ nhất để lấy tất cả các bản ghi từ bảng Đơn hàng đã nhập vào Thứ Hai và Thứ Ba là gì? Mệnh đề Giữa làm cho nhiệm vụ trở nên dễ dàng:

CHỌN ID TỪ ĐƠN HÀNG Ở ĐÂU
Ngày GIỮA ‘01 / 12/2018 ’VÀ ‘01 / 13/2018’

Không nghi ngờ gì nữa, toàn bộ lý do mà cơ sở dữ liệu quan hệ tồn tại ngay từ đầu là để tìm các bản ghi phù hợp trong hai bảng! Câu lệnh JOIN hoàn thành mục tiêu cốt lõi này của SQL và làm cho nhiệm vụ trở nên dễ dàng. Ở đây, chúng tôi sẽ tìm nạp một danh sách tất cả các bản ghi khớp trong bảng Khách hàng và Đơn hàng:

CHỌN ID TỪ Khách hàng BÊN TRONG
THAM GIA Đơn đặt hàng TRÊN Khách hàng.ID = Đơn đặt hàng.ID

Trong trường hợp này, điểm của INNER JOIN là chọn các bản ghi trong bảng Khách hàng có giá trị ID khách hàng phù hợp trong bảng Đơn hàng và chỉ trả lại các bản ghi đó. Tất nhiên, có nhiều loại JOIN, chẳng hạn như FULL, SELF và LEFT, nhưng hiện tại, hãy giữ mọi thứ thú vị và chuyển sang các loại lệnh SQL nâng cao đa dạng hơn.

Xem Thêm  Nhập matplotlib.pyplot dưới dạng đoạn mã plt - nhập matplotlib.pylot dưới dạng plt

27. Nhân đôi sức mạnh với UNION

Chúng tôi có thể kết hợp kết quả của hai ví dụ truy vấn SQL thành một ví dụ một cách tự nhiên với từ khóa UNION. Giả sử chúng tôi muốn tạo một bảng mới bằng cách kết hợp Customer_name và số điện thoại từ Khách hàng với danh sách các đơn đặt hàng gần đây của khách hàng đó để chúng tôi có thể tìm kiếm các mẫu và có thể đề xuất các giao dịch mua hàng trong tương lai. Đây là một cách nhanh chóng để hoàn thành nhiệm vụ:

CHỌN điện thoại từ khách hàng
UNION CHỌN mục TỪ Đơn đặt hàng

Từ khóa UNION giúp bạn có thể kết hợp JOINS và các tiêu chí khác để đạt được tiềm năng tạo bảng mới rất mạnh mẽ.

Các nhãn cột có biệt danh mang lại cho chúng tôi sự tiện lợi khi đổi tên nhãn cột thành một thứ dễ đọc hơn. Có một sự cân bằng khi đặt tên các cột để làm cho chúng ngắn gọn dẫn đến việc giảm khả năng đọc trong lần sử dụng hàng ngày tiếp theo. Trong bảng Đơn đặt hàng của chúng tôi, cột mặt hàng chứa mô tả các sản phẩm đã mua. Hãy xem cách đặt bí danh cho cột mục để tạm thời đổi tên nó để thân thiện hơn với người dùng:

CHỌN mặt hàng AS item_description TỪ Đơn đặt hàng

29. Luôn luôn và Mọi nơi!

Sẽ không tuyệt vời nếu có một tập hợp các điều kiện mà bạn có thể phụ thuộc vào mọi lúc? Các truy vấn SQL phức tạp sử dụng ANY ALL có thể biến điều lý tưởng này thành hiện thực! Hãy xem cách từ khóa ALL được sử dụng để chỉ bao gồm các bản ghi khi một tập hợp các điều kiện đúng với các bản ghi TẤT CẢ . Trong ví dụ sau, chúng tôi sẽ trả về các bản ghi từ bảng Đơn đặt hàng, trong đó ý tưởng là lấy danh sách các đơn đặt hàng số lượng lớn cho một mặt hàng nhất định, trong trường hợp này là đối với những khách hàng đã đặt hàng trên 50 sản phẩm:

CHỌN mặt hàng từ đơn đặt hàng
WHERE id = ALL
(CHỌN ID TỪ Đơn đặt hàng
Số lượng WHERE & gt; 50)

30. Viết SQL thân thiện với nhà phát triển

Một yếu tố thường bị bỏ qua nhưng rất quan trọng của tập lệnh SQL là thêm nhận xét vào tập lệnh truy vấn để giải thích những gì nó đang làm vì lợi ích của các nhà phát triển tương lai, những người có thể cần sửa đổi và cập nhật các truy vấn SQL của bạn.

Tập lệnh SQL là tập hợp các phần tử và lệnh SQL được tích lũy dưới dạng tệp trong Tập lệnh SQL. Tệp script này có thể bao gồm nhiều lệnh SQL hoặc mã PL / SQL. Người ta có thể sử dụng SQL Scripts để xây dựng, chỉnh sửa, thiết kế, thực thi và xóa tệp.

dòng đơn và dấu phân cách nhiều dòng / * .. * / cho phép chúng tôi thêm nhận xét hữu ích vào tập lệnh, nhưng điều này cũng được sử dụng theo một cách có giá trị khác. Đôi khi một phần mã có thể không được sử dụng nhưng chúng tôi không muốn xóa phần đó vì chúng tôi dự đoán sẽ sử dụng lại phần đó. Tại đây, chúng tôi chỉ cần thêm dấu phân cách nhận xét để hủy kích hoạt nó trong giây lát:

/ * Truy vấn này dưới đây được nhận xét nên nó sẽ không thực thi * /
/ *
CHỌN mặt hàng TỪ Đơn đặt hàng
WHERE date ALL = (CHỌN Order_ID TỪ Đơn đặt hàng
Số lượng WHERE & gt; 50)
* /

/ * truy vấn SQL bên dưới sẽ được thực thi
bỏ qua văn bản sau "-"
* /

CHỌN mục - một nhận xét
TỪ Đơn đặt hàng - một nhận xét đơn lẻ khác
Id WHERE
ALL = (CHỌN ID TỪ Đơn đặt hàng
Số lượng WHERE & gt; 25)

31. Truy vấn SQL để quản lý cơ sở dữ liệu

Cho đến nay, chúng tôi đã khám phá các ví dụ truy vấn SQL để truy vấn bảng và kết hợp các bản ghi từ nhiều truy vấn. Bây giờ đã đến lúc tiến lên một bước và xem xét cơ sở dữ liệu ở cấp độ cấu trúc. Hãy bắt đầu với câu lệnh SQL đơn giản nhất để tạo cơ sở dữ liệu mới. Ở đây, chúng ta sẽ tạo DB làm vùng chứa cho các bảng Khách hàng và Đơn hàng được sử dụng trong mười ví dụ trước ở trên:

TẠO CƠ SỞ DỮ LIỆU Tất cả

Tiếp theo, chúng tôi sẽ thực sự thêm bảng Khách hàng mà chúng tôi đã sử dụng trong các ví dụ trước, sau đó thêm một số nhãn cột mà chúng tôi đã quen thuộc:

TẠO BẢNG Khách hàng (
ID varchar (80),
Đặt tên varchar (80),
Điện thoại varchar (20),
....
);

Mặc dù hầu hết cơ sở dữ liệu được tạo bằng giao diện người dùng như Access hoặc OpenOffice, nhưng điều quan trọng là phải biết cách tạo và xóa cơ sở dữ liệu và bảng theo chương trình thông qua mã với câu lệnh SQL. Điều này đặc biệt xảy ra khi cài đặt một ứng dụng web mới và giao diện người dùng yêu cầu người dùng mới nhập tên cho các DB sẽ được thêm vào trong quá trình cài đặt.

Câu lệnh ALTER được sử dụng để sửa đổi hoặc thay đổi ý nghĩa của bảng. Trong trường hợp bảng quan hệ có cột, câu lệnh ALTER được sử dụng để cập nhật bảng lên các quy tắc hoặc định nghĩa mới hoặc sửa đổi. Alter thuộc danh mục Lệnh DDL. Ngôn ngữ định nghĩa dữ liệu có thể được mô tả như một mẫu cho các lệnh mà qua đó cấu trúc dữ liệu được biểu diễn.

Hãy tưởng tượng rằng bạn quyết định gửi một tấm thiệp sinh nhật cho khách hàng của mình để thể hiện sự đánh giá cao của bạn đối với doanh nghiệp của họ và vì vậy bạn muốn thêm trường sinh nhật vào bảng Khách hàng. Trong ví dụ SQL này, bạn thấy việc sửa đổi các bảng hiện có bằng câu lệnh ALTER dễ dàng như thế nào:

BẢNG ALTER Khách hàng THÊM Ngày sinh varchar (80)

Nếu một bảng bị hỏng với dữ liệu xấu, bạn có thể nhanh chóng xóa nó như sau:

DROP TABLE tên_bảng

Chỉ mục là một phần tử giản đồ bao gồm bản ghi cho mỗi nội dung đến trong cột được lập chỉ mục của bảng hoặc cụm cơ sở dữ liệu và cung cấp một đường dẫn tốc độ cao đến các hàng. Có nhiều loại chỉ mục như chỉ mục Bitmap, chỉ mục được phân vùng, chỉ mục dựa trên chức năng và chỉ mục tên miền.

Việc lập chỉ mục chính xác yêu cầu cột Khóa chính chỉ chứa các giá trị duy nhất cho mục đích này. Điều này đảm bảo rằng các câu lệnh JOIN sẽ duy trì tính toàn vẹn và tạo ra các kết quả phù hợp hợp lệ. Hãy tạo lại bảng Khách hàng của chúng tôi và thiết lập cột ID làm Khóa chính:

TẠO BẢNG Khách hàng (
ID int NOT NULL,
Tên varchar (80) NOT NULL,
KHÓA CHÍNH (ID)
);

Chúng tôi có thể mở rộng chức năng của Khóa chính để nó tự động tăng lên từ một cơ sở. Thay đổi mục nhập ID ở trên để thêm từ khóa như trong câu lệnh sau:

ID int NOT NULL AUTO_INCREMENT

35. Các khái niệm nâng cao để cải thiện hiệu suất

Bất cứ khi nào thực tế, luôn tốt hơn nếu viết danh sách tên cột vào một câu lệnh SELECT thay vì sử dụng dấu phân tách * làm ký tự đại diện để chọn tất cả các cột. SQL Server phải thực hiện thao tác tìm kiếm và thay thế để tìm tất cả các cột trong bảng của bạn và ghi chúng vào câu lệnh cho bạn (mỗi khi SELECT được thực thi). Ví dụ:

CHỌN * TỪ Khách hàng

Thực sự sẽ thực thi nhanh hơn nhiều trên cơ sở dữ liệu của chúng tôi như:

CHỌN Tên, Ngày sinh, Điện thoại,
Địa chỉ, Zip TỪ Khách hàng

Có thể tránh được những cạm bẫy về hiệu suất theo nhiều cách. Ví dụ: tránh lỗ hổng thời gian buộc SQL Server phải kiểm tra hệ thống / cơ sở dữ liệu chính mọi lúc bằng cách chỉ sử dụng tên thủ tục được lưu trữ và không bao giờ đặt tiền tố nó bằng SP_. Ngoài ra, việc đặt NOCOUNT ON làm giảm thời gian cần thiết để SQL Server đếm các hàng bị ảnh hưởng bởi INSERT, DELETE và các lệnh khác. Sử dụng INNER JOIN với một điều kiện nhanh hơn nhiều so với sử dụng mệnh đề WHERE với điều kiện. Chúng tôi khuyên các nhà phát triển nên tìm hiểu các truy vấn máy chủ SQL ở cấp độ nâng cao cho mục đích này. Đối với mục đích sản xuất, những lời khuyên này có thể rất quan trọng đối với hiệu suất phù hợp. Lưu ý rằng các ví dụ hướng dẫn của chúng tôi có xu hướng ưu tiên INNER JOIN.

Xem Thêm  Hàm Lambda - Hiểu rõ hơn - các hàm lambda là gì

36. Kết quả truy vấn con có điều kiện

Toán tử SQL EXISTS kiểm tra sự tồn tại của các bản ghi trong một truy vấn con và trả về giá trị TRUE nếu truy vấn con trả về một hoặc nhiều bản ghi. Hãy xem truy vấn này với điều kiện truy vấn con:

CHỌN Tên từ Khách hàng NƠI TỒN TẠI
(CHỌN mặt hàng từ đơn đặt hàng
WHERE Khách hàng.ID = Đơn đặt hàng.ID VÀ Giá & lt; 50)

Trong ví dụ ở trên, hàm SELECT trả về giá trị TRUE khi khách hàng có đơn đặt hàng có giá trị dưới $ 50.

37. Sao chép các lựa chọn từ bảng này sang bảng khác

Có hàng trăm lẻ một cách sử dụng cho công cụ SQL này. Giả sử bạn muốn lưu trữ bảng Đơn hàng hàng năm của mình thành một bảng lưu trữ lớn hơn. Ví dụ tiếp theo cho biết cách thực hiện.

INSERT INTO Yearly_Orders
CHỌN * TỪ Đơn đặt hàng
WHERE Ngày & lt; = 1/1/2018

Ví dụ này sẽ thêm bất kỳ bản ghi nào từ năm 2018 vào kho lưu trữ.

38. Bắt NULL Kết quả

NULL là thuật ngữ được áp dụng để mô tả một giá trị không có. Null không có nghĩa là số không. Giá trị NULL trong một cột của bảng là một điều kiện trong miền có vẻ như trống. Cột có giá trị NULL là miền không có giá trị. Điều cần thiết là phải nhận ra rằng giá trị NULL khác với giá trị 0.

Trong trường hợp cho phép các giá trị NULL trong một trường, các phép tính trên các giá trị đó cũng sẽ tạo ra kết quả NULL. Điều này có thể tránh được bằng cách sử dụng toán tử IFNULL. Trong ví dụ tiếp theo này, giá trị 0 được trả về thay vì giá trị NULL khi phép tính gặp trường có giá trị NULL:

CHỌN mặt hàng, giá *
(QtyInStock + IFNULL (QtyOnOrder, 0))
TỪ Đơn đặt hàng

39. HAVING có thể thuyên giảm!

Vấn đề là mệnh đề WHERE trong SQL không thể hoạt động trên các hàm tổng hợp. Vấn đề đã được giải quyết bằng cách sử dụng mệnh đề HAVING. Ví dụ: truy vấn tiếp theo này tìm nạp danh sách khách hàng theo khu vực nơi có ít nhất một khách hàng cho mỗi khu vực:

CHỌN COUNT (ID), Khu vực
Từ khách hàng
NHÓM THEO khu vực
CÓ ĐẾM (ID) & gt; 0;

40. Gắn kết mọi thứ với Strings!

Hãy xem cách xử lý nội dung của dữ liệu trường bằng các hàm. Chuỗi con có lẽ có giá trị nhất trong tất cả các hàm tích hợp sẵn. Nó cung cấp cho bạn một số sức mạnh của Regex, nhưng nó không quá phức tạp như Regex. Giả sử bạn muốn tìm chuỗi con bên trái của các dấu chấm trong một địa chỉ web. Dưới đây là cách thực hiện với truy vấn SQL Select :

SELECT SUBSTRING_INDEX ("www.bytescout.com", ".", 2);

Dòng này sẽ trả lại mọi thứ ở bên trái của lần xuất hiện thứ hai của “. ”Và do đó, trong trường hợp này, nó sẽ trở lại

 & lt; a href = "https://bytescout.com" & gt; www.bytescout.com & lt; / a & gt; 

Xem video này để tìm hiểu về mọi truy vấn SQL:

.. và 20 ví dụ về Truy vấn SQL hữu ích khác !!

41. Sử dụng COALESCE để trả về biểu thức không rỗng đầu tiên

SQL Coalesce được sử dụng để quản lý các giá trị NULL của cơ sở dữ liệu. Trong phương pháp này, các giá trị NULL được thay thế bằng giá trị do người dùng xác định. Hàm SQL Coalesce đánh giá các tham số trong chuỗi và luôn cung cấp giá trị không rỗng đầu tiên từ bản ghi đối số được chỉ định.

Cú pháp

CHỌN THAN (NULL, NULL, 'ByteScout', NULL, 'Byte')

Đầu ra

ByteScout

42. Sử dụng Chuyển đổi để chuyển đổi bất kỳ giá trị nào thành một kiểu dữ liệu cụ thể

Điều này được sử dụng để chuyển đổi một giá trị thành một kiểu dữ liệu xác định. Ví dụ: nếu bạn muốn chuyển đổi một giá trị cụ thể thành kiểu dữ liệu int thì có thể sử dụng hàm chuyển đổi để đạt được điều này. Ví dụ:

Cú pháp

CHỌN CHUYỂN ĐỔI (int, 27,64)

Đầu ra

27

43. DENSE_RANK () Truy vấn phân tích

Đây là một truy vấn phân tích tính toán thứ hạng của một hàng trong một tập hợp các hàng được sắp xếp. Xếp hạng đầu ra là một số bắt đầu từ 1. DENSE_RANK là một trong những truy vấn SQL quan trọng nhất. Nó trả về các tùy chọn xếp hạng dưới dạng số tuần tự. Nó không tăng hạng trong trường hợp có quan hệ. Ví dụ: truy vấn sau sẽ cung cấp các cấp bậc tuần tự cho nhân viên.

CHỌN eno,
dno,
lương,
DENSE_RANK () HẾT (PHẦN THEO ĐƠN HÀNG KHÔNG THEO mức lương) NHƯ xếp hạng
TỪ nhân viên;

ENO DNO TIỀN LƯƠNG RANKING
---------- ---------- ---------- ----------
7933 10 1500 1
7788 10 2650 2
7831 10 6000 3
7362 20 900 1
7870 20 1200 2
7564 20 2575 3
7784 20 4000 4
7903 20 4000 4
7901 30 550 1
7655 30 1450 2
7522 30 1450 2
7844 30 1700 3
7493 30 1500 4
7698 30 2850 5

44. Query_partition_clause

query_partition_clause ngắt tập hợp đầu ra thành các bản phân phối hoặc tập hợp dữ liệu. Sự phát triển của truy vấn phân tích bị giới hạn trong các giới hạn bị buộc bởi các phân vùng này, liên quan đến quá trình, mệnh đề GROUP BY sửa đổi hiệu suất của một hàm tổng hợp. Nếu query_partition_clause bị loại bỏ, toàn bộ tập hợp đầu ra được hiểu là một phân vùng riêng biệt.

Truy vấn sau áp dụng mệnh đề OVER, vì vậy giá trị trung bình được hiển thị dựa trên tất cả các bản ghi của tập hợp đầu ra.

CHỌN eno, dno, lương,
AVG (lương) OVER () AS avg_sal
TỪ nhân viên;

EO DNO SALARY AVG_SAL
---------- ---------- ---------- ----------
7364 20 900 2173.21428
7494 30 1700 2173.21428
7522 30 1350 2173.21428
7567 20 3075 2173.21428
7652 30 1350 2173.21428
7699 30 2950 2173.21428
7783 10 2550 2173.21428
7789 20 3100 2173.21428
7838 10 5100 2173.21428
7845 30 1600 2173.21428
7877 20 1200 2173.21428
7901 30 1050 2173.21428
7903 20 3100 2173.21428
7935 10 1400 2173.21428

45. Tìm năm bản ghi cuối cùng từ bảng

Bây giờ, nếu bạn muốn tìm nạp tám bản ghi cuối cùng từ bảng thì việc lấy dữ liệu đó luôn khó khăn nếu bảng của bạn chứa nhiều thông tin. Ví dụ: bạn muốn lấy 8 bản ghi cuối cùng từ bảng nhân viên thì bạn có thể sử dụng rownum và một mệnh đề liên hiệp. Rownum là tạm thời trong SQL.

Ví dụ:

Chọn * từ Nhân viên A trong đó rownum & lt; = 8
liên hiệp
select * from (Chọn * từ Nhân viên Một đơn đặt hàng theo rowid desc) trong đó rownum & lt; = 8;

Truy vấn SQL ở trên sẽ cung cấp cho bạn tám bản ghi cuối cùng từ bảng nhân viên trong đó rownum là cột giả. Nó lập chỉ mục dữ liệu trong tập hợp đầu ra.

46. LAG

LAG được áp dụng để lấy dữ liệu từ hàng trước. Đây là một chức năng phân tích. Ví dụ: truy vấn sau cung cấp mức lương từ hàng trước để tính toán sự khác biệt giữa mức lương của hàng hiện tại và mức lương của hàng trước. Trong truy vấn này, ORDER BY của hàm LAG được áp dụng. Giá trị mặc định là 1 nếu bạn không xác định độ lệch. Điều kiện mặc định tùy ý được đưa ra nếu độ lệch di chuyển qua phạm vi của cửa sổ. Giá trị mặc định là null nếu bạn không xác định giá trị mặc định.

Cú pháp

CHỌN dtno,
       eno,
       emname,
       Công việc,
       lương,
       LAG (sal, 1, 0) HẾT (PHẦN THEO ĐƠN ĐẶT HÀNG dtno THEO mức lương) AS Luong_prev
TỪ nhân viên;

Đầu ra

DTNO ENO ENAME CÔNG VIỆC SAL SAL_PREV
---------- ---------- ---------- ---------- ---------- - ---------
10 7931 STEVE CLERK 1300 0
10 7783 JOHN MANAGER 2450 1300
10 7834 KING PRESIDENT 5000 2450
20 7364 ROBIN CLERK 800 0
20 7876 BRIAN CLERK 1100 800
20 7567 QUẢN LÝ VÁCH NGĂN 2975 1100
20 7784 PHÂN TÍCH SCOTT 3000 2975
20 7908 KANE ANALYST 3000 3000
30 7900 JAMES CLERK 950 0
30 7651 CONNER BÁN HÀNG 1250 950
30 7522 MATTHEW SALESMAN 1250 1250
30 7843 VIVIAN SALESMAN 1500 1250
30 7494 ALLEN SALESMAN 1600 1500
30 7695 GLEN MANAGER 2850 1600

47. DẪN ĐẦU

LEAD cũng là một truy vấn phân tích được áp dụng để lấy dữ liệu từ các hàng bổ sung xuống tập đầu ra. Truy vấn sau cung cấp mức lương từ hàng tiếp theo để tính toán độ lệch giữa mức lương của hàng hiện tại và hàng tiếp theo. Giá trị mặc định là 1 nếu bạn không xác định độ lệch. Điều kiện mặc định tùy ý được đưa ra nếu khoảng lệch di chuyển qua phạm vi của cửa sổ. Giá trị mặc định là null nếu bạn không xác định giá trị mặc định.

CHỌN eno,
       empname,
       Công việc,
       lương,
       LEAD (lương, 1, 0) HƠN (ĐẶT HÀNG THEO mức lương) NHƯ Lương_năm tiếp theo,
       LEAD (lương, 1, 0) HƠN (ĐẶT HÀNG THEO mức lương) - mức lương NHƯ
TỪ nhân viên;

ENO EMPNAME CÔNG VIỆC SALARY SALARY_NEXT SALARY_DIFF
---------- ---------- ---------- ---------- ---------- - ---------
7369 STEVE CLERK 800 950 150
7900 JEFF CLERK 950 1100 150
7876 ADAMS CLERK 1100 1250 150
7521 JOHN SALESMAN 1250 1250 0
7654 MARK SALESMAN 1250 1300 50
7934 TANTO CLERK 1300 1500 200
7844 MATT SALESMAN 1500 1600 100
7499 ALEX SALESMAN 1600 2450 850
7782 QUẢN LÝ BOON 2450 2850 400
7698 BLAKE MANAGER 2850 2975 125
7566 JONES MANAGER 2975 3000 25
7788 PHÂN TÍCH SCOTT 3000 3000 0
7902 FORD ANALYST 3000 5000 2000
7839 CHỦ TỊCH VUA 5000 0 -5000

48. PERCENT_RANK

Truy vấn phân tích PERCENT_RANK. Mệnh đề ORDER BY cần thiết cho truy vấn này. Việc loại trừ một mệnh đề phân vùng khỏi mệnh đề OVER xác định toàn bộ tập đầu ra được hiểu là một phân vùng riêng biệt. Hàng đầu tiên của tập hợp chuẩn hóa được biểu thị 0 và hàng cuối cùng của tập hợp được biểu thị 1. Ví dụ: ví dụ truy vấn SQL cho kết quả sau.

Cú pháp

LỰA CHỌN
     prdid, SUM (số lượng),
     PERCENT_RANK () HẾT (ĐẶT HÀNG BẰNG SUM (số tiền) DESC) AS phần trăm_rank
     TỪ bán hàng
     NHÓM THEO prdid
     ĐẶT HÀNG BẰNG prdid;

Đầu ra

PRDID SUM (AMOUNT) PERCENT_RANK
----------- ----------- ------------
          1 22623,5 0
          2 223927,08 1

49. PHÚT

Việc sử dụng mệnh đề OVER trống sẽ chuyển đổi MIN thành một hàm phân tích. Đây cũng là một truy vấn phân tích. Trong điều này, toàn bộ tập kết quả được hiểu là một phân vùng duy nhất. Nó cung cấp cho bạn mức lương tối thiểu cho tất cả nhân viên và dữ liệu ban đầu của họ. Ví dụ: truy vấn sau đang hiển thị việc sử dụng MIN trong truy vấn Chọn.

CHỌN eno,
       empname,
       dtno,
       lương,
       MIN (lương) HƠN (PHẦN THEO dtno) NHƯ min_result
TỪ nhân viên;

     ENO EMPNAME DTNO SALARY MIN_RESULT
---------- ---------- ---------- ---------- ---------- -----
      7782 CLARK 10 2450 1300
      7839 VUA 10 5000 1300
      7934 TRIỆU 10 1300 1300
      7566 JONES 20 2975 800
      7902 FORD 20 3000 800
      7876 ADAMS 20 1100 800
      7369 NIỀM TIN 20 800 800
      7788 SCOTT 20 3000 800
      7521 PHƯỜNG 30 1250 950
      7844 TURNER 30 1500 950
      7499 ALLEN 30 1600 950
      7900 JAMES 30 950 950
      7698 BLAKE 30 2850 950
      7654 MARTIN 30 1250 950

50. TỐI ĐA

Sử dụng một hàng trống mệnh đề OVER chuyển đổi MAX thành một hàm phân tích. Việc thiếu điều khoản phân vùng cho biết toàn bộ tập hợp đầu ra được hiểu là một phân vùng riêng biệt. Điều này cung cấp mức lương tối đa cho tất cả nhân viên và dữ liệu ban đầu của họ. Ví dụ: truy vấn sau đây hiển thị việc sử dụng MAX trong truy vấn chọn.

CHỌN eno,
       empname,
       dtno,
       lương,
       MAX (lương) OVER () AS max_result
TỪ nhân viên;

     ENO EMPNAME DTNO SALARY MAX_RESULT
---------- ---------- ---------- ---------- ----------
      7369 NIỀM TIN 20 800 3000
      7499 ALLEN 30 1600 3000
      7521 PHƯỜNG 30 1250 3000
      7566 JONES 20 2975 3000
      7654 MARTIN 30 1250 3000
      7698 BLAKE 30 2850 3000
      7782 CLARK 10 2450 3000
      7788 SCOTT 20 3000 3000
      7839 VUA 10 5000 3000
      7844 TURNER 30 1500 3000
      7876 ADAMS 20 1100 3000
      7900 JAMES 30 950 3000
      7902 FORD 20 3000 3000
      7934 TRIỆU 10 1300 3000

51. Truy vấn hàng đầu

Các truy vấn Top-N đưa ra một quy trình để hạn chế số lượng hàng được phân phối từ các tập hợp dữ liệu có tổ chức. Chúng có lợi đáng kể khi người dùng muốn cung cấp số hàng trên cùng hoặc dưới cùng từ một bảng.

Ví dụ: truy vấn sau cung cấp 20 hàng với 10 giá trị khác nhau:

CHỌN giá
FROM sales_order
ĐẶT HÀNG THEO giá cả;

GIÁ BÁN
----------
100
100
200
200
300
300
400
400
500
500
600

GIÁ BÁN
----------
600
700
700
800
800
900
900
1000
1000

20 hàng được chọn.

52. Truy vấn phân tích CORR

Hàm phân tích CORR được sử dụng để xác định hệ số tương quan. Truy vấn này cũng được sử dụng để tính toán hệ số tương quan Pearson. Hàm tính toán giá trị sau trên các hàng trong bảng không có giá trị rỗng. Truy vấn này luôn trả về các giá trị từ +1 đến -1, các giá trị này mô tả như sau:

Xem Thêm  Tham số hàm JavaScript: Hướng dẫn từ A đến Z cho các lập trình viên JS - các hàm javascript với các tham số

Cú pháp: CORR (exp1, exp2) [OVER (analytic_clause)]

Ví dụ

CHỌN trống,
       Tên,
       dno,
       lương,
       Công việc,
       CORR (SYSDATE - ngày gia nhập, lương) OVER () AS my_corr_val
TỪ nhân viên;

53. Truy vấn phân tích NTILE

NTILE cho phép người dùng phân chia một tập hợp trình tự thành một số lượng chi tiết gồm các nhóm hoặc vùng chứa, hàng xử phạt tương đối giống nhau. Nếu số hàng trong bộ sưu tập ít hơn số lượng vùng chứa đã xác định, thì số lượng vùng chứa sẽ bị giảm đi. Cú pháp cơ bản như được hiển thị bên dưới:

NTILE (exp) OVER ([partition_clause] order_by)

Ví dụ

CHỌN trống,
       Tên,
       dno,
       lương,
       NTILE (6) OVER (ĐẶT HÀNG THEO lương) AS container_no
TỪ nhân viên;

54. Truy vấn VARIANCE, VAR_POP và VAR_SAMP

VARIANCE, VAR_POP và VAR_SAMP là các hàm tổng hợp. Chúng được sử dụng để xác định phương sai, phương sai nhóm và phương sai mẫu của một tập hợp dữ liệu riêng lẻ. Là truy vấn hoặc hàm tổng hợp, chúng làm giảm số lượng hàng, do đó có biểu thức “tổng hợp”. Nếu dữ liệu không được sắp xếp, chúng tôi sẽ thay đổi tổng các hàng trong bảng Nhân viên thành một hàng riêng biệt với các giá trị tổng hợp. Ví dụ: truy vấn sau đang hiển thị việc sử dụng các chức năng này:

CHỌN VARIANCE (lương) AS var_salary,
       VAR_POP (lương) AS pop_salary,
       VAR_SAMP (lương) AS samp_salary
TỪ nhân viên;

VAR_SALARY POP_SALARY SAMP_SALARY
------------ ----------- ------------
1479414,97 1588574,81 1388717,27

55. Truy vấn STDDEV, STDDEV_POP và STDDEV_SAMP

Các truy vấn hoặc hàm tổng hợp STDDEV, STDDEV_POP và STDDEV_SAMP được áp dụng để xác định độ lệch chuẩn, độ lệch chuẩn tổng thể và độ lệch chuẩn mẫu tích lũy riêng lẻ. Là truy vấn tổng hợp, chúng làm giảm số lượng hàng, do đó có biểu thức “tổng hợp”. Nếu dữ liệu không được sắp xếp, chúng tôi chuyển đổi tất cả các hàng trong bảng NHÂN VIÊN thành một hàng riêng biệt. Ví dụ: truy vấn sau đang hiển thị việc sử dụng tất cả các chức năng này.

CHỌN STDDEV (lương) AS stddev_salary,
       STDDEV_POP (lương) AS pop_salary,
       STDDEV_SAMP (lương) AS samp_salary
TỪ nhân viên;

STDDEV_SALARY POP_SALARY SAMP_SALARY
---------- -------------- ---------------
1193.50 1159.588 1193.603

Nếu có nhiều tài khoản sau khi loại bỏ null, hàm STDDEV sẽ cho kết quả là STDDEV_SAMP. Sử dụng mệnh đề OVER trống chuyển đổi kết quả truy vấn STDDEV thành truy vấn phân tích. Việc không có phân vùng cho biết toàn bộ tập hợp đầu ra được hiểu là một phân vùng cụ thể, vì vậy chúng tôi chấp nhận độ lệch chuẩn của mức lương và dữ liệu chính.

56. Khớp mẫu

Cú pháp đối sánh mẫu thêm các lựa chọn thay thế khác nhau. Dữ liệu phải được xử lý chính xác và ở dạng thích hợp. Các điều kiện PARTITION BY và ORDER BY của tất cả các truy vấn phân tích SQL được áp dụng để chia dữ liệu thành các phần tích lũy và trong mỗi nhóm. Nếu không có phân vùng nào được chỉ định, nó được coi là toàn bộ tập hợp trình tự là một phân vùng lớn.

Ví dụ:

Mệnh đề MEASURES chỉ định kết quả cột sẽ được cung cấp cho mỗi trận đấu.

Cú pháp

CÁC BIỆN PHÁP STRT.tstamp AS initial_tstamp,
          CUỐI CÙNG (UP.tstamp) NHƯ first_tstamp,
          CUỐI CÙNG (DOWN.tstamp) AS finish_tstamp

Ví dụ

ĐỊNH NGHĨA
  LÊN NHƯ LÊN.products_sold & gt; TRƯỚC (UP.products_sold),
  FLAT AS FLAT.products_sold = PREV (FLAT.products_sold),
  XUỐNG NHƯ XUỐNG.products_sold & lt; TRƯỚC (DOWN.products_sold)

57. FIRST_VALUE

Cách đơn giản nhất để có được các hàm phân tích là bắt đầu bằng cách nghiên cứu các hàm tổng hợp. Một hàm tổng hợp thu thập hoặc tập hợp dữ liệu từ nhiều hàng thành một hàng kết quả duy nhất. Ví dụ: người dùng có thể áp dụng hàm AVG để nhận mức trung bình của tất cả các mức lương trong bảng NHÂN VIÊN. Hãy xem cách First_Value có thể được sử dụng. Giải thích chính cho hàm phân tích FIRST_VALUE được hiển thị bên dưới.

Cú pháp:

FIRST_VALUE
  {(expr) [NULLS]
  | (expr [NULLS])
  }
  HẾT (mệnh đề phân tích)

Ví dụ

CHỌN eno,
       dno,
       lương,
       FIRST_VALUE (lương) BỎ QUA NULLS
         HẾT (PHẦN BẰNG ĐƠN HÀNG KHÔNG THEO mức lương) NHƯ low_salary_in_dept
TỪ nhân viên;

Truy vấn trên sẽ bỏ qua các giá trị rỗng.

58. LAST_VALUE

Giải thích chính cho truy vấn hoặc hàm phân tích LAST_VALUE được hiển thị bên dưới.

Cú pháp: LAST_VALUE
  {(expr) [{NULLS]
  | (expr [NULLS])
  HẾT (mệnh đề phân tích)

Truy vấn phân tích LAST_VALUE có liên quan đến hàm phân tích LAST. Chức năng này cho phép người dùng lấy đầu ra cuối cùng từ một cột có tổ chức. Việc áp dụng cửa sổ mặc định cho đầu ra có thể gây ngạc nhiên. Ví dụ:

CHỌN eno,
       dno,
       lương,
       LAST_VALUE (lương) BỎ QUA NULLS
         HẾT (PHẦN BẰNG ĐƠN HÀNG KHÔNG THEO mức lương) NHƯ cao nhất_salary_in_dept
TỪ nhân viên;

59. Dự đoán

Mẫu thiết kế cho biết giới tính và độ tuổi của những khách hàng được mong đợi nhất để sử dụng thẻ thỏa thuận (target = 1). Hàm PREDICTION lấy ma trận giá tương quan với thiết kế và áp dụng cho tình trạng hôn nhân và diện tích nhà làm yếu tố dự đoán. Cú pháp của hàm PREDICTION cũng có thể áp dụng một phần thông tin NHÓM tùy ý khi nhận mô hình phân vùng.

CHỌN khách hàng_ giới tính, COUNT (*) AS ct, ROUND (AVG (tuổi)) AS trung bình_age
   FROM mining_data_shop
   DỰ PHÒNG Ở ĐÂU (MÔ HÌNH CHI PHÍ mẫu
      USING client_marital_status, house_size) = 1
   NHÓM BẰNG khách hàng_ giới tính
   ĐẶT HÀNG CỦA khách_hàng;
   
CUST_GENDER CNT AVG_AGE
------------ ---------- ----------
F 270 40
M 585 41

60. CLUSTER_SET

CLUSTER_SET có thể lấy dữ liệu theo một trong hai bước: Nó có thể sử dụng đối tượng loại khai thác cho thông tin hoặc có thể khai thác dữ liệu bằng cách thực hiện một mệnh đề phân tích tạo và sử dụng một hoặc nhiều mẫu khai thác di chuyển.

Ví dụ này liệt kê các thuộc tính có ảnh hưởng lớn nhất đến việc phân phối cụm cho ID khách hàng 1000. Truy vấn yêu cầu các hàm CLUSTER_DETAILS và CLUSTER_SET, sử dụng mô hình phân cụm my_sample.

Ví dụ

CHỌN S.cluster_id, prob,
       CLUSTER_DETAILS (my_sample, S.cluster_id, 7 USING T. *) kset
TỪ
  (SELECT v. *, CLUSTER_SET (my_sample, USING *) nset
    FROM mining_data
   WHERE client_id = 1000) T,
  BẢNG (T.nset) Q
ĐẶT HÀNG BẰNG 2 MÔ TẢ;

Một cụm là một bảng nhóm phân phối các khối dữ liệu tương ứng, tức là tất cả các bảng thực sự được ghép lại với nhau. Ví dụ, bảng EMPLOYEE và DEPARTMENT được kết nối với cột DNO. Nếu bạn phân cụm chúng, nó sẽ thực sự lưu trữ tất cả các hàng trong cùng một khối dữ liệu.

.. và TEN các truy vấn SQL nâng cao hơn cho người dùng của chúng tôi!

61. VỚI (Biểu thức bảng chung)

Một biểu thức bảng chung (CTE) là một tập kết quả ngắn được xác định tồn tại trong phạm vi của một câu lệnh cụ thể và có thể được gọi sau trong câu lệnh đó, có lẽ trong nhiều trường hợp. Truy vấn sau đây mô tả CTE:

Cú pháp

VỚI all_emp
BẰNG 
(
CHỌN empId, BossId, FirstName, LastName
TỪ Emp
WHERE BossId là NULL

ĐOÀN KẾT TẤT CẢ

CHỌN e.empId, e.BossId, e.FirstName, e.LastName
FROM Emp e INNER THAM GIA all_emp r
ON e.BossId = r.Id
)
CHỌN * TỪ all_emp

62. NANVL

Hàm này được sử dụng để cung cấp giá trị tùy chọn n1 nếu giá trị được chèn n2 là NaN (không phải số) và cho giá trị n2 nếu n2 không phải là số. Hàm này chỉ được sử dụng cho loại BINARY_FLOAT. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN bin_float, NANVL (bin_float, 0)
TỪ my_demo_table;

63. WIDTH_BUCKET

Hàm này được sử dụng để lấy số nhóm. Trong đó, nó cung cấp giá trị của biểu thức sẽ xuất hiện sau khi được đánh giá. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN emp_id, first_name, last_name, dept_id, mgr_id,
WIDTH_BUCKET (Department_id, 20,40,10) "Tồn tại trong Bộ phận"
TỪ trống
WHERE mgr_id & lt; 300
ĐẶT HÀNG BẰNG "Tồn tại trong Kho";

64. COSH

Hàm này được sử dụng để cung cấp cosin hyperbol của một số. Nó chấp nhận tất cả các kiểu dữ liệu số hoặc không phải số làm đối số. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN COSH (0) "COSH của 0" TỪ KÉP;

65. SOUNDEX

Hàm SOUNDEX cung cấp một chuỗi ký tự bao gồm mô tả của char. Nó cho phép người dùng kết hợp các từ được đánh vần đối nghịch nhau, nhưng âm thanh tương tự trong tiếng Anh. Nó không hỗ trợ CLOB. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN last_name, first_name
TỪ hr.emp
WHERE SOUNDEX (last_name)
= SOUNDEX ('SCOTTY');

66. TZ_OFFSET

TZ_OFFSET cung cấp độ lệch múi giờ giống với trường hợp dựa trên ngày đưa ra câu lệnh. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN TZ_OFFSET ('Hoa Kỳ / Miền Đông') TỪ KÉP;

67. THẺ THẺ

CARDINALITY được sử dụng để lấy số lượng thành phần trong một bảng lồng nhau. Nó được hỗ trợ trong các phiên bản khác nhau. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN product_id, CARDINALITY (ad_mydocs_get)
TỪ my_media_table;

68. DUMP

DUMP là một trong những hàm string / char quan trọng. Nó được sử dụng để nhận giá trị VARCHAR2. Giá trị được phân phối xác định mã kiểu dữ liệu. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN DUMP ('pqr', 1033)
TỪ KÉP;

69. PATH

PATH được áp dụng đơn giản với các yêu cầu UNDER_PATH và EQUALS_PATH. Nó đưa ra đường dẫn tương ứng trỏ đến tài nguyên được xác định trong trạng thái chính. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN ANY_PATH TỪ RESOURCE_VIEW
WHERE EQUALS_PATH (res, '/sys/schemas/OE/www.pqr.com')=3;

70. UNISTR

UNISTR chấp nhận một biểu thức xác định dữ liệu ký tự và phân phối nó trong bộ ký tự chung. Nó cung cấp hỗ trợ cho các ký tự chuỗi Unicode bằng cách cho phép người dùng xác định giá trị Unicode. Truy vấn sau đang hiển thị công dụng của nó:

Ví dụ

CHỌN UNISTR ('pqr \ 00e4 \ 00f3 \ 00f9') TỪ KÉP;

Giới thiệu về tác giả

Nhóm ByteScout

Đội ngũ nhà văn của ByteScout

ByteScout có một đội ngũ các nhà văn chuyên nghiệp thông thạo các chủ đề kỹ thuật khác nhau. Chúng tôi chọn những nhà văn xuất sắc nhất để đưa ra những chủ đề thú vị và thịnh hành cho độc giả của chúng tôi. Chúng tôi yêu các nhà phát triển và chúng tôi hy vọng các bài viết của chúng tôi sẽ giúp bạn tìm hiểu về lập trình và lập trình viên.

ByteScout có một đội ngũ các nhà văn chuyên nghiệp thông thạo các chủ đề kỹ thuật khác nhau. Chúng tôi chọn những nhà văn xuất sắc nhất để đưa ra những chủ đề thú vị và thịnh hành cho độc giả của chúng tôi. Chúng tôi yêu các nhà phát triển và chúng tôi hy vọng các bài viết của chúng tôi sẽ giúp bạn tìm hiểu về lập trình và lập trình viên.


Xem thêm những thông tin liên quan đến chủ đề ví dụ truy vấn ms sql

[SQL Server] #04 – Truy vấn CSDL cơ bản

alt

  • Tác giả: HIENLTH Channel
  • Ngày đăng: 2021-09-13
  • Đánh giá: 4 ⭐ ( 5488 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [SQL Server] 04 – Truy vấn CSDL cơ bản

    Hướng dẫn các câu lệnh truy vấn (SELECT) cơ bản, các toán tử IN, BETWEEN…AND, sắp xếp (ORDER BY), các hàm xử lý chuỗi và ngày tháng.

    Slide bài giảng: https://bit.ly/sql03-basic-query
    Database Script (dùng để dựng lại): https://bit.ly/qlbanhang-script
    SQL Script demo trong video: https://bit.ly/demo-sql-basic

    sqlserver hienlth hcmue query

Các Câu Lệnh Truy Vấn Trong Sql Quan Trọng Programmer Nào Cũng Cần Biết

  • Tác giả: jdomain.vn
  • Đánh giá: 5 ⭐ ( 8408 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1, View DataĐể có thể lấy các bản ghi từ 1 bảng trong cơ sở dữ liệu luôn là điều cần thiết đối với những người sử dụng SQL

Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1)

  • Tác giả: newnet.vn
  • Đánh giá: 4 ⭐ ( 7316 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Truy vấn phụ SQL

  • Tác giả: support.microsoft.com
  • Đánh giá: 3 ⭐ ( 3036 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Subquery trong SQL P1

  • Tác giả: gnv.edu.vn
  • Đánh giá: 5 ⭐ ( 1261 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Truy vấn lồng SQL rất DỄ HIỂU với giải thích chi tiết và hướng dẫn sử dụng SUBQUERY trong SQL kèm hình ảnh và ví dụ minh họa chi tiết

JOIN – Mệnh đề

  • Tác giả: www.sql.edu.vn
  • Đánh giá: 5 ⭐ ( 2682 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Mệnh đề JOIN trong Microsoft SQL Server: Equi Join, Non Equi Join, Self Join, CROSS JOIN, JOIN… ON…, LEFT JOIN, RIGHT JOIN, FULL JOIN.

Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1) – DinhNT

  • Tác giả: dinhnt.com
  • Đánh giá: 3 ⭐ ( 1127 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình