SQL cung cấp một phương pháp thông minh để tìm các bản ghi không tồn tại thông qua hàm SQL NOT EXISTS. Tìm hiểu cách sử dụng nó tại đây.

Bạn đang xem : sql nơi không tồn tại

SQL là một ngôn ngữ logic, vì vậy mọi thứ bạn làm trong SQL sẽ thực hiện theo cách có thể đoán trước – bao gồm cả SQL KHÔNG TỒN TẠI. Bạn truy vấn cơ sở dữ liệu với một định thức logic. Cơ sở dữ liệu trả về dữ liệu.

Hôm nay, chúng ta sẽ xem xét toán tử TỒN TẠI và hàm KHÔNG TỒN TẠI trong SQL.

Bạn có thể sẽ thấy rằng hàm KHÔNG TỒN TẠI trong SQL thực sự khá đơn giản khi bạn đã quen với việc định dạng truy vấn con TỒN TẠI. Khi bạn sử dụng SQL KHÔNG TỒN TẠI, các truy vấn sẽ trả về tất cả các tài liệu không khớp với truy vấn con “tồn tại” đã cho.

Nhưng cách dễ nhất để hiểu loại truy vấn SQL này là xem cách nó được sử dụng để chọn dữ liệu riêng biệt trong toàn bộ cơ sở dữ liệu.

Khi nào bạn sử dụng SQL KHÔNG TỒN TẠI?

Hãy rút ra một ví dụ đơn giản. Chúng tôi có cơ sở dữ liệu khách hàng bao gồm danh sách các khách hàng. Chúng tôi cũng có một bảng khác bao gồm các đơn đặt hàng. Chúng tôi sử dụng SQL sau:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn ID khách hàng từ các đơn đặt hàng)  

Những điều trên có tác dụng gì?

Nó chọn tất cả dữ liệu từ bảng “khách hàng” trong đó khách hàng.customerID không tồn tại trong các đơn hàng.customerID. Tất nhiên, nó có một số yếu tố phụ thuộc: Nó yêu cầu ID khách hàng của bạn trong bảng khách hàng của bạn phải khớp với ID khách hàng trong bảng đơn đặt hàng của bạn. Nếu bạn cần sử dụng một khóa ngoại khác, nó sẽ phức tạp một chút.

Tóm lại, truy vấn và truy vấn con ở trên trả về bất kỳ hàng nào mà khách hàng chưa đặt hàng.

Điều quan trọng nhất cần nhận ra là SQL KHÔNG TỒN TẠI bao gồm hai phần:

  • Truy vấn chính, là “chọn * từ khách hàng ở đâu.”
  • Truy vấn phụ, là (“chọn ID khách hàng từ các đơn đặt hàng”)

>

KHÔNG TỒN TẠI đứng sau điều kiện “WHERE”.

Những người am hiểu về SQL sẽ nhận thấy rằng, về mặt tài nguyên, đây thường là một công việc sử dụng nhiều tài nguyên. Truy vấn không chỉ cần xem giá trị nào chuyển thành true và false (hàng nào không tồn tại), mà về cơ bản, bạn đang tạo một liên kết. Một liên kết, cho dù tham gia bên trái, tham gia bên ngoài hay tham gia bên trong, đều nắm quyền.

Trên thực tế, bạn đã khám phá ra lý do tại sao chúng tôi sử dụng TỒN TẠI và KHÔNG TỒN TẠI. Nó tốn ít tài nguyên hơn so với việc thực hiện các phép nối thông thường. Bởi vì nó kiểm tra trước để xem liệu bản ghi có tồn tại hay không, nó không thực hiện kết hợp bên ngoài đầy đủ hay kết hợp bên trong đầy đủ.

Vì vậy, chúng tôi sử dụng TỒN TẠI và KHÔNG TỒN TẠI để rõ ràng và khi chúng tôi muốn duy trì tài nguyên của hệ thống. Điều này cực kỳ quan trọng đối với các ứng dụng cần có khả năng mở rộng quy mô.

Điều gì sẽ xảy ra nếu chúng tôi muốn sử dụng EXISTS?

  select * từ những khách hàng CÓ HIỆN TẠI (chọn ID khách hàng từ các đơn đặt hàng)  

Giờ đây, chúng tôi đang chọn tất cả những khách hàng đã đặt hàng của chúng tôi trong quá khứ. Đó là một điều tuyệt vời cho một chiến dịch tiếp thị lại. Để làm cho nó hữu ích hơn một chút, chúng tôi cũng có thể:

  select khách hàng.total

Phần trên sẽ đưa ra danh sách khách hàng theo số doanh thu mà họ đã tạo ra cho chúng tôi. Bạn vẫn có thể sử dụng những thứ như “order by” - ngay cả với truy vấn con tồn tại - và các truy vấn sẽ trở lại bình thường từ máy chủ SQL.

Vì vậy, cú pháp chung là:

  chọn [thông tin đã chọn] từ [bảng] nơi KHÔNG TỒN TẠI [truy vấn con]  

Chính truy vấn con là phần quan trọng, vì đây là toán tử logic trả về null hoặc true. Với KHÔNG TỒN TẠI, sẽ đúng nếu truy vấn con không được đáp ứng. Với EXISTS, điều đó đúng nếu truy vấn được đáp ứng. Vì vậy, những điều TỒN TẠI và KHÔNG TỒN TẠI thực sự có thể làm những việc giống hệt nhau - vấn đề chỉ là viết rõ ràng hơn vào thời điểm đó.

Vì TỒN TẠI và KHÔNG TỒN TẠI hơi phức tạp, bạn có thể muốn thiết lập cơ sở dữ liệu demo để chạy các truy vấn, luôn hiểu rằng khối lượng nợ sẽ đáng kể hơn nhiều trên cơ sở dữ liệu lớn hơn.

Ngoài ra, hãy lưu ý rằng TỒN TẠI và KHÔNG TỒN TẠI sẽ luôn đối lập nhau. Nếu bạn muốn hoàn toàn ngược lại với một tập hợp các truy vấn được trả về, bạn chỉ cần thêm công cụ sửa đổi NOT. Điều này tương tự với VÀO và KHÔNG VÀO.

Bạn có thể sử dụng NOT EXISTS với các mệnh đề khác không?

Điều gì xảy ra nếu bạn muốn xem tất cả những khách hàng đã đặt hàng gần đây? NOT EXISTS chỉ là một kiểu ngữ pháp SQL khác; bạn vẫn có thể xây dựng truy vấn của mình theo cách thông thường. Vì vậy, hãy cân nhắc điều này:

 select * từ những khách hàng KHÔNG TỒN TẠI (chọn customerid từ những khách hàng đã tạo () & lt; = getdate () - 60)  

Vì vậy, truy vấn này không chọn những khách hàng không tồn tại. Thay vào đó, đó là lựa chọn những khách hàng không tồn tại trước hai tháng trước (60 ngày trước). Đây là một cách nhanh chóng, dễ dàng để có được một số thông tin, nhưng như chúng ta có thể thấy, đó không phải lúc nào cũng là cách duy nhất.

Điều đó có nghĩa là mệnh đề mà bạn sử dụng bên trong NOT EXISTS có thể khá phức tạp. Nhưng chẳng hạn, bạn sẽ không muốn nói điều gì đó như thế này:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn customerid từ các đơn hàng đặt hàng theo orderid)  

Các từ bổ nghĩa để sắp xếp phải ra bên ngoài, chẳng hạn như:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn customerid từ các đơn đặt hàng) đặt hàng theo orderid  

Điều này là do truy vấn con chỉ được thiết kế để tìm các hàng không tồn tại (hoặc trong trường hợp TỒN TẠI, các hàng tồn tại). Nó không nhằm thực hiện bất kỳ thứ tự hoặc định dạng nào không cần thiết.

Với các câu lệnh SQL đặc biệt phức tạp, một trong những cách tốt nhất để hiểu chúng là đơn giản lập sơ đồ, giống như bạn vẽ sơ đồ một câu. Điều này sẽ cung cấp cho bạn cái nhìn tổng quan về kết quả mà bạn có thể mong đợi.

Sử dụng câu lệnh JOIN thay vì KHÔNG TỒN TẠI

Chúng tôi đã đề cập rằng NOT EXISTS đang tạo một hoạt động JOIN. Bạn cũng có thể sử dụng các phép toán tham gia, chẳng hạn như:

  select * từ khách hàng tham gia đơn đặt hàng tham gia trên cjoin.customerID = ojoin.customerID tại đây…  

Đây là một cách hoàn toàn hợp lệ để thay thế KHÔNG TỒN TẠI và KHÔNG TỒN TẠI. Về cơ bản, quy trình này thay thế hàm “KHÔNG TỒN TẠI” bằng cách phác thảo chính xác chức năng KHÔNG TỒN TẠI.

Có những lợi ích khi sử dụng phương pháp này. Bạn có quyền kiểm soát chi tiết hơn đối với việc hoàn thành hàm JOIN và tối ưu hóa nó.

Nhưng cũng có những mặt trái. Các câu lệnh JOIN và NOT EXISTS / EXISTS vốn dĩ sẽ xử lý các giá trị null khác nhau. NOT EXIST sẽ có lỗi khi bao gồm các giá trị null này, và JOIN thì không.

Một vấn đề với các lệnh JOIN là chúng không cực kỳ dễ đọc. Ngoại trừ những lập trình viên cao cấp, các lệnh JOIN có xu hướng khá bất khả xâm phạm. Bạn có thể cải thiện điều này bằng cách sử dụng những cái tên dễ đọc, nhưng dù theo cách nào đi chăng nữa, không phải lúc nào bạn cũng trực quan ngay được những gì JOIN đang làm.

KHÔNG TỒN TẠI / TỒN TẠI dễ đọc hơn và dễ quét hơn. Cũng tồn tại sự thỏa hiệp của việc sử dụng hàm KHÔNG TỒN TẠI / TỒN TẠI khi viết mã và sau đó tối ưu hóa nó thành một hàm JOIN đặc biệt sau này.

Làm cách nào để bạn tối ưu hóa KHÔNG TỒN TẠI?

Mặc dù có những lợi ích về tài nguyên, bạn nên xử lý KHÔNG TỒN TẠI như các lệnh nối SQL khác. Về cơ bản, bạn nên cảnh giác với việc kết nối nhiều hơn hai bảng cùng một lúc và bạn nên đảm bảo rằng bạn không tham chiếu nhiều dữ liệu hơn mức bạn thực sự cần.

Nếu có thể, bạn có thể muốn giới hạn các truy vấn của mình trong một hàng nhất định; chẳng hạn, bạn có thể chỉ muốn kéo 50 truy vấn trong một ứng dụng và sau đó cho phép người dùng tiếp tục duyệt. Đây là một cách giảm tải thông thường và trở nên quan trọng, đặc biệt là khi ứng dụng bắt đầu mở rộng quy mô.

Một ví dụ:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn customerid từ đơn đặt hàng) giới hạn 50  

Điều này sẽ chỉ kéo 50 bản ghi cùng một lúc. Giống như ORDER BY, bạn cũng có thể áp dụng LIMIT cho truy vấn KHÔNG TỒN TẠI. Nhưng một lần nữa, bạn muốn đặt nó bên ngoài dấu ngoặc đơn chứ không phải bên trong chúng.

Một số lựa chọn thay thế cho SQL KHÔNG TỒN TẠI là gì?

Có một số cách mà bạn có thể giải quyết vấn đề SQL KHÔNG TỒN TẠI. Ví dụ, trong ví dụ sau:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn customerid từ những khách hàng đã tạo () & lt; = getdate () - 60)  

Trong ví dụ này, những gì bạn đang cố gắng làm là chọn những khách hàng trên 60 ngày. Và bạn có thể làm điều đó rất đơn giản:

  select * từ những khách hàng đã tạo () + 60 & lt; getdate ()  

Trông đẹp hơn rất nhiều, phải không?

Có những tình huống mà bạn có thể sử dụng mệnh đề WHERE đơn giản hơn là KHÔNG TỒN TẠI. Như đã đề cập trước đây, vấn đề là nó yêu cầu tài nguyên bổ sung. Chức năng KHÔNG TỒN TẠI sẽ bền vững hơn.

Tất nhiên, nó không đơn giản như ví dụ khác:

  select * từ những khách hàng KHÔNG TỒN TẠI (chọn ID khách hàng từ các đơn đặt hàng)  

Đây là một ví dụ trong đó sẽ rất khó sao chép hàm NOT EXISTS mà không sử dụng EXISTS vì bạn cần phải xem hàng nào không tồn tại bên trong tập hợp đã cho.

Bạn có thể nghĩ rằng bạn có thể sử dụng:

  select * từ khách hàng, đơn đặt hàng trong đó khách hàng.customerID! = order.customerID  

Nhưng điều này sẽ không mang lại cho bạn những gì bạn muốn vì nó sẽ cung cấp cho bạn từng hàng không khớp và mỗi hàng sẽ không khớp ít nhất một lần.

Khi bạn hiểu tại sao và khi nào SQL KHÔNG TỒN TẠI hoạt động, bạn sẽ thấy thêm các ví dụ về thời điểm nó không chỉ là tùy chọn tốt nhất mà còn là tùy chọn duy nhất.

Sự khác biệt giữa SQL NOT EXISTS và SQL IN là gì?

Nếu bạn đã nghe nói về lệnh SQL IN, bạn có thể thắc mắc sự khác biệt hợp lý giữa SQL KHÔNG TỒN TẠI và SQL IN.

Trong một số trường hợp, SQL KHÔNG TỒN TẠI và SQL KHÔNG CÓ TRONG (và SQL TỒN TẠI và SQL IN) có thể có cùng mục đích. Nhưng với một ví dụ, bạn có thể thấy cách nhấn mạnh khác nhau như thế nào.

Dưới đây là một ví dụ về cách sử dụng lệnh SQL IN:

  select * từ những khách hàng KHÔNG ở quốc gia đó (‘United States’)  

Ở trên sẽ chọn những khách hàng từ bảng không ở Hoa Kỳ. Tóm lại, SQL NOT EXISTS thường được sử dụng để phát hiện vị trí mà một hàng không tồn tại. SQL IN thường được sử dụng để phát hiện nơi giá trị không tồn tại trong bản ghi.

Một sự khác biệt khác là cách nó xử lý các giá trị rỗng. Và cũng có một câu hỏi về quản lý tài nguyên, vì SQL NOT EXISTS có các cách cụ thể để xử lý việc tham gia một truy vấn bên ngoài.

Cả SQL NOT EXISTS và SQL NOT IN đều là những công cụ tuyệt vời cho những gì chúng làm - chỉ cần nhớ rằng chúng phục vụ các mục đích khác nhau.

Tìm hiểu thêm về SQL KHÔNG TỒN TẠI

Nếu bạn đang tìm cách trau dồi các kỹ năng SQL của mình, bạn có thể muốn xem xét tham gia một lớp học về SQL. Bạn chắc chắn sẽ muốn tải xuống cơ sở dữ liệu SQL như MySQL và chơi với nó - đó là một trong những cách tốt nhất để học .

Trang được cập nhật lần cuối:


Xem thêm những thông tin liên quan đến chủ đề sql nơi không tồn tại

Learn Basic SQL in 15 Minutes (PART 3) | SQL Functions Tutorial

  • Tác giả: LearnBI.online (formerly Vitamin BI)
  • Ngày đăng: 2022-01-27
  • Đánh giá: 4 ⭐ ( 4373 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: In this third and final part of the Learn Basic SQL in 15 minutes series, we’re going to be learning how to use different SQL functions to both clean data and create new fields from existing data.

    WATCH PARTS 1 & 2 HERE:
    Part 1 - https://youtu.be/kbKty5ZVKMY
    Part 2 - https://youtu.be/gm6tNK_iOHs

    Don't forget to check out part 1 to learn what is SQL. What you learn over the course of these videos can be applied to MySQL, PostgreSQL, SQL Server and others.

    🙏🏻 SUPER THANKS
    If you found this video valuable and would like to show your appreciation, you can make a donation via the Super Thanks option under the video. It helps me keep the channel going and the free content coming!

    🔵 THANK YOU TO OUR SPONSOR
    LearnSQL.com - https://geni.us/learnsql

    ➡️ JOIN THE LEARNBI.ONLINE FACEBOOK GROUP
    https://www.facebook.com/groups/816317545978660

    TIMESTAMPS
    00:00 Intro
    01:22 Tutorial start
    02:28 TRIM, LTRIM & RTRIM functions
    04:08 LEFT & RIGHT functions
    05:15 LPAD & RPAD functions
    06:30 SUBSTRING function
    07:22 LENGTH function
    08:58 LOCATE function
    09:37 Separating first & last names
    12:08 UPPER & LOWER functions
    12:34 CONCAT function
    13:20 Conditional Expressions
    13:50 CASE statements
    16:11 Outro

    🎥 OTHER USEFUL VIDEOS
    7 Steps to Your 1st BI Analyst Job - https://youtu.be/0zN0MM1SJMw
    BI For Beginners Playlist - https://www.youtube.com/playlist?list=PLR0triVyTrBXF6iIJrRRUj1-SNJvinLWE

    NAVICAT
    https://navicat.com/

    GET THE CHEAT SHEET
    https://mailchi.mp/learnbi/functionscheat

    ⚙️ DATA HUBS:
    Power My Analytics: https://geni.us/YLc9Re
    Supermetrics: https://geni.us/5SNn
    Data Slayer: https://geni.us/dataslayer

    🧰 BI TOOLS
    Power BI - https://powerbi.microsoft.com/
    Tableau - https://www.tableau.com/
    Data Studio - https://datastudio.google.com/

    📊 DATA WEBSITES
    Kaggle - https://www.kaggle.com/
    Statista - https://www.statista.com/
    Data World - https://data.world/
    NYC Open Data - https://opendata.cityofnewyork.us/
    UN Data - https://data.un.org/

    🎓 ONLINE LEARNING
    → Ultimate Guide to Google Data Studio
    https://geni.us/vbi-edu
    → Skillshare
    Get a 30-day free trial of Skillshare Premium!
    https://geni.us/skillshare30day
    →Udemy
    https://geni.us/udemy_vb
    →Coursera
    https://geni.us/coursera_analytics

    📕 FREE EBOOKS TO DOWNLOAD
    7 Top Tips For Better Dashboard Design - https://mailchi.mp/vitaminbi/dashboard-design-top-tips

    The Skills You Need To Succeed In Business Intelligence - https://mailchi.mp/vitaminbi/bi-skills

    Disclaimer: Some of the above links are affiliate links where I'll earn a small commission if you make a purchase using them, at no additional cost to you. It really helps support the channel so thanks in advance if you do use them 🙏

    ✅ LET'S CONNECT:

    For business inquiries visit https://learnbi.online/contact

    Sign up for my mailing list to be the first to hear about new videos and special offers
    https://geni.us/PSgRsF

    sqltutorial sqlfunctions learnsql

Cách sử dụng hàm CHARINDEX trong SQL Server

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

Cách check xem bảng dữ liệu có tồn tại trên SQL Server hay không – How to check if a Table exists in SQL Server

  • Tác giả: m.edu.vn
  • Đánh giá: 5 ⭐ ( 1041 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong quá trình làm việc với dữ liệu trong SQL Server, sẽ có những lúc bạn cần xóa bảng dữ liệu đi, sau đó tạo lại bảng dữ liệu đó. Thông thường, đó sẽ là những bảng dữ liệu tạm sinh ra để tính toán, dạng _tmp hoặc #Temp hoặc ##Temp. Làm thế nào để xác định xem bảng dữ liệu có đang thật sự tồn tại trong cơ sở dữ liệu, làm thế nào để xóa bảng dữ liệu mà không bị lỗi câu lệnh dẫn đến gián đoạn chương trình chạy dữ liệu. Bạn hãy cùng MasterMOS Education tìm hiểu trong bài viết sau nhé.

Xử lý lỗi tạo mới dữ liệu báo "Máy chủ SQL Server không tồn tại" -

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

Máy Chủ Sql Không Tồn Tại Misa Sme, Máy Chủ Sql Không Tồn Tại Misa

  • Tác giả: jdomain.vn
  • Đánh giá: 5 ⭐ ( 7370 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: 1, Lỗi không cho cài được phần mềm MISA:– Cấu hình máy tính thấp hơn so với quy định– Chưa cài đặt Frame work 4

SQL Server chính không tồn tại dbo Cảnh không tồn tại,

  • Tác giả: qastack.vn
  • Đánh giá: 3 ⭐ ( 5113 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Tôi đã giải quyết vấn đề này bằng cách thiết lập cơ sở dữ liệu. Cơ…

Không Kết Nối Được Đến Máy Chủ Sql Không Tồn Tại Misa 2017, Tai Sao Misa Loi Khong Ket Noi Duoc Voi May Chu

  • Tác giả: ucozfree.com
  • Đánh giá: 4 ⭐ ( 3708 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Kế toán cho người đi làm Kế toán thuế Kế toán cho sinh viên Kế toán tài chính doanh nghiệp Học trên excel để giúp các bạn hiểu được bản chất kế toán, tuy nhiên để giảm thời gian xử lý tính toán thì phần mềm kế toán misasẽ là sựlựa chọn thêmcủa nhiều người, Tuy nhiên phần mềm nào cũng vậy, cũng không tránh khỏi 1 sốlỗitrong quá trình sử dụng

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

Xem Thêm  Custom Elements: defining new elements in HTML - thẻ b trong html

By ads_php