G-LEARNING
G-LEARNING
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 1531 lượt xem

Hướng dẫn tìm hiểu về NULL và NOT NULL trong MySQL

G-LEARNING
G-LEARNING
May 16 2020

Trong MySQL, NULL vừa là giá trị và vừa là từ khóa.

Giá trị NULL

Nói một cách đơn giản, NULL chỉ đơn giản là một giá trị giữ chỗ cho dữ liệu không tồn tại. Khi thực hiện các thao tác chèn vào bảng trong cơ sở dữ liệu, sẽ có đôi lúc các trường giá trị không khả dụng.

Để đáp ứng với yêu cầu của hệ thống quản lý cơ sở dữ liệu, MySQL sử dụng NULL như là một giá trị giữ chỗ cho giá trị thật sự chưa được gửi lên. Ảnh chụp màn hình bên dưới cho thấy giá trị NULL hiển thị như thế nào trong cơ sở dữ liệu.

Trước hết chúng ta sẽ xem xét một số điều cơ bản về giá trị NULL trước khi đi sâu vào tìm hiểu nó :

  • NULL không phải là một kiểu dữ liệu – điều này có nghĩa là nó không được nhận dạng như là một kiểu số tự nhiên “int”, kiểu dữ liệu ngày “date” hay bất kỳ loại dữ liệu được xác định nào khác. 
  • Các phép toán số học liên quan đến NULL luôn trả về NULL. Ví dụ: 69 + NULL = NULL.
  • Tất cả các hàm tổng chỉ ảnh hưởng đến các hàng không có giá trị NULL

Bây giờ chúng ta sẽ đi chứng minh rằng các hàm đếm xử lý các giá trị NULL. Bạn có thể tải dữ liệu “myflixdb” tại đây để thực hiện trong MySQL:

https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHccjhtdGlrZ0MtZ0k

Thực hiện câu truy vấn sau để xem nội dung hiện tại của bảng members trong  “myflixdb”:

Kết quả sẽ hiện ra như sau:

Đếm số lượng tất cả các thành viên đã cập nhật số liên lạc của họ:

Thực hiện truy vấn trên cho ra kết quả sau:

Lưu ý: Giá trị NULL đã không được tính vào kết quả trên. 

NOT là gì?

Toán tử logic NOT được sử dụng để kiểm tra các điều kiện Boolean và trả về kết quả là true nếu như điều kiện sai. Toán tử NOT sẽ trả về kết quả là false nếu như điều kiện được kiểm tra là đúng.

Điều kiệnKết quả toán tử NOT
TrueFalse
FalseTrue

Tại sao chúng ta lại sử dụng NOT NULL?

Có một số trường hợp mà chúng ta sẽ phải thực hiện tính toán dựa trên tập kết quả truy vấn và trả về giá trị. Thực hiện bất kỳ các phép tính toán học nào trên cột có giá trị NULL sẽ trả về kết quả là NULL. Để tránh những trường hợp như vậy xảy ra, chúng ta có thể sử dụng mệnh đề NOT NULL để giới hạn kết quả trên dữ liệu hoạt động.

Giá trị NOT NULL

Giả sử rằng chúng ta muốn tạo một bảng mới với với các trường nhất định mà luôn phải được cung cấp các giá trị khi chèn những hàng mới vào bảng. Chúng ta có thể sử dụng mệnh đề NOT NULL trên một trường nhất định khi tạo bảng.

Ví dụ bên dưới tạo một bảng mới chứa dữ liệu của nhân viên. Mã số nhân viên (employee_number) luôn phải được cung cấp.

Bây giờ chúng ta sẽ thử chèn một bản ghi mới mà không chỉ định mã số nhân viên và xem thử chuyện gì xảy ra:

Thực thi câu lệnh trên trong MySQL sẽ hiển thị lỗi sau:

Từ khóa NULL

NULL có thể còn được sử dụng như một từ khóa khi thực thi các toán tử Boolean trên các giá trị có bao gồm NULL. Từ khóa “IS/NOT” được sử dụng cùng với từ NULL cho những mục đích này. Cú pháp đơn giản khi sử dụng NULL như một từ khóa như sau:

Trong đó:

  • “IS NULL” là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị cung cấp là NULL và trả về false nếu giá trị cung cấp không phải là NULL
  • “NOT NULL” là từ khóa thực hiện so sánh Boolean. Nó trả về true nếu giá trị cung cấp không phải là NULL và trả về false nếu giá trị cung cấp là NULL

Hãy xem xét một ví dụ sử dụng từ khóa NOT NULL để loại bỏ tất cả cột có giá trị là NULL

Giả sử chúng ta cần chi tiết về những thành viên có số liên lạc không phải là NULL. Thực hiện câu truy vấn sau:

Thực hiện câu lệnh trên sẽ cho ra các bản ghi trong đó số liên lạc không phải là NULL.

Trong trường hợp chúng ta muốn hồ sơ các thành viên có số liên lạc là NULL. Có thể sử dụng truy vấn sau:

Kết quả sẽ hiện ra trong MySQL:

So sánh các giá trị NULL

Ba giá trị logic – thực hiện các toán tử Boolean trong các điều kiện liên quan đến NULL có thể trả về “Unknown”, “True” hoặc “False”.

Ví dụ, sử dụng từ khóa “IS NULL” khi thực hiện các toán tử so sánh liên quan đến NULL có thể trả về true hoặc false. Sử dụng những toán tử so sánh không liên quan đến NULL trả về “Unknown”(NULL)

Giả sử bạn đang so sánh 5 với 5:

Kết quả truy vấn là 1 có nghĩa là TRUE

Làm điều này tương tự với NULL:

Hãy xem xét các ví dụ khác:

Kết quả trả về là 0 có nghĩa là FALSE.

Làm tương tự với NULL:

Lần này chúng ta sử dụng từ khóa IS NULL:

Kết quả trả về là 0 có nghĩa là FALSE.

Kết quả truy vấn là 1 có nghĩa là TRUE

Tổng kết

  • NULL là giá trị giữ chỗ cho các trường bảng tùy chọn.
  • MySQL xử lý giá trị NULL khác với các loại dữ liệu khác. Giá trị NULL được xử dụng như là một điều kiện đánh giá false giá trị Boolean.
  • Toán tử NOT được dùng để kiểm tra các giá trị Boolean và đánh giá true nếu giá trị Boolean là sai và false nếu giá trị Boolean là đúng.
  • Mệnh đề NOT NULL được sử dụng để loại bỏ các giá trị NULL khỏi tập kết quả.
  • Thực hiện các phép toán số học trên giá trị NULL luôn luôn trả về kết quả NULL.
  • Toán tử so sánh như là [>,=,…] không thể được dùng để so sánh các giá trị NULL.

Ngoài ra bạn có thể truy cập ngay https://gitiho.com/ để tìm hiểu thêm nhiều các khóa học hay về tin học văn phòng: Excel, Power Point, lập trình VBA, lập trình C#, SQL, thiết kế đồ họa… Có rất nhiều ưu đãi hấp dẫn đang chờ bạn.

Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL:

Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ

Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa

Hướng dẫn cách dùng mệnh đề WHERE trong MySQL

Đánh giá bài viết này

Gitiho.com Nền tảng học online duy nhất tại Việt Nam tập trung vào phát triển kỹ năng làm việc dành cho người đi làm
Với sứ mệnh: Mang cơ hội phát triển kỹ năng, phát triển nghề nghiệp tới hàng triệu người”, đội ngũ phát triển Gitiho.com đã và đang làm việc với những học viện, trung tâm đào tạo, các chuyên gia đầu ngành để nghiên cứu và xây dựng lên các chương trình đào tạo từ cơ bản đến chuyên sâu xung quanh các lĩnh vực: Tin học văn phòng, Phân tích dữ liệu, Thiết kế, Công nghệ thông tin, Kinh doanh, Marketing, Quản lý dự án...
Gitiho tự hào khi được đồng hành cùng:
  • 50+ khách hàng doanh nghiệp lớn trong nhiều lĩnh vực như: Vietinbank, Vietcombank, BIDV, VP Bank, TH True Milk, VNPT, FPT Software, Samsung SDIV, Ajinomoto Việt Nam, Messer,…
  • 100.000+ học viên trên khắp Việt Nam

Tìm hiểu ngay các khóa học của Gitiho TẠI ĐÂY



Thảo luận 0 câu trả lời
Lượt xem 1531 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội