MySQL không phải là NULL hoặc rỗng

Thông thường, các nhà phát triển cơ sở dữ liệu và quản trị viên sử dụng Nulls, Zeroes và Empty Strings thay thế cho nhau trong các bảng cơ sở dữ liệu của họ. Điều đó thật không may, bởi vì mỗi Null, Zero và một Chuỗi trống đại diện cho một cái gì đó khác nhau trong cơ sở dữ liệu quan hệ (RDBMS). Như vậy, việc sử dụng các giá trị này không chính xác hoặc chọn sai giá trị có thể gây ra sự phân nhánh rất lớn đối với hoạt động của cơ sở dữ liệu và ứng dụng của bạn dựa trên nó. Trong blog hôm nay, chúng ta sẽ khám phá cách tận dụng tốt nhất Null, Zero và Empty String trong thiết kế cơ sở dữ liệu và sử dụng chung

Giá trị Null có một lịch sử lâu dài trong cả cơ sở dữ liệu quan hệ và ngôn ngữ lập trình. Nó được nghĩ ra như một giá trị đặc biệt để biểu thị sự vắng mặt có chủ ý của bất kỳ giá trị nào. Như vậy, nó có thể được gán cho bất kỳ cột nullable nào. Để chỉ định một cột là nullable, chỉ cần bao gồm từ khóa NULL hoặc chỉ cần bỏ nó đi, vì các cột là nullable theo mặc định

CREATE TABLE table_name 
(  
  column1 datatype [ NULL | NOT NULL ], 
  column2 datatype [ NULL | NOT NULL ], 
  .. 
); 

Navicat đơn giản hóa rất nhiều việc tạo bảng thông qua Trình thiết kế bảng của nó. Trong Navicat, để xác định rằng một cột có thể không chứa giá trị NULL, hãy chọn hộp kiểm Not null

MySQL không phải là NULL hoặc rỗng

Trong dạng xem Lưới bảng, các giá trị NULL được biểu diễn dưới dạng (Null)

MySQL không phải là NULL hoặc rỗng

Về mặt ngữ nghĩa, một giá trị bị thiếu thông báo cho chúng tôi rằng chúng tôi không biết nó. Nói một cách đơn giản hơn, Null có thể có nghĩa là "???". Như chúng ta sẽ thấy ngay sau đây, đây không phải là trường hợp đối với Số 0 hoặc Chuỗi trống

Giá trị của Không (0) là một số thực có ý nghĩa được chia sẻ bởi các thuật ngữ khác trên khắp thế giới, bao gồm vô nghĩa (Anh), vô nghĩa (Mỹ), không, zilch, zip, nada, scratch và goose egg. Giá trị của nó có thể được coi là "Không có gì". Xem xét một cột giới hạn tín dụng. Trong bối cảnh đó, giá trị 0. 00 sẽ chỉ ra rằng khách hàng không có tín dụng. Nếu cột là nullable, thì giá trị NULL có nghĩa là chúng tôi không biết giới hạn tín dụng của khách hàng là bao nhiêu. Trong trường hợp đầu tiên, chúng tôi biết giới hạn tín dụng của khách hàng là bao nhiêu và giới hạn đó bằng không

Trong Navicat, chúng ta có thể đặt giá trị mặc định của một cột thông qua trình đơn thả xuống Mặc định

MySQL không phải là NULL hoặc rỗng

Lưu ý rằng NULL là tùy chọn đầu tiên

Giống như Zero, Chuỗi rỗng ("") khác với giá trị NULL ở chỗ giá trị trước ngụ ý cụ thể rằng giá trị được đặt thành trống, trong khi NULL có nghĩa là giá trị không được cung cấp hoặc không xác định. Ví dụ, hãy xem xét một cột lưu số điện thoại di động. Giá trị trống có nghĩa là người đó không có điện thoại di động, trong khi giá trị NULL có nghĩa là người đó không cung cấp số điện thoại. Đây là hai cách hiểu rất khác nhau

Điều quan trọng đối với nhà phát triển và quản trị viên cơ sở dữ liệu là phải hiểu ngữ nghĩa của Nulls, Zeroes và Empty Strings vì việc sử dụng chúng không đúng cách hoặc chọn sai giá trị có thể gây ra sự phân nhánh lớn đối với hoạt động của cơ sở dữ liệu và các ứng dụng tương tác với nó

Cuối cùng, các máy khách Quản trị và Phát triển Cơ sở dữ liệu tạo điều kiện làm việc với Nulls, Zeroes và Empty Strings bằng cách cung cấp trình đơn thả xuống Mặc định và bằng cách biểu thị rõ ràng Nulls trong các bảng cơ sở dữ liệu

Mặc dù hầu hết các ứng dụng sẽ có một số dạng công nghệ phía máy chủ hoặc thậm chí phía máy khách có thể được sử dụng để lọc ra các kết quả truy vấn cơ sở dữ liệu có thể chứa giá trị

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4 hoặc giá trị trống, nhưng việc sử dụng ngôn ngữ khác và gánh nặng thực thi mã bổ sung đó thường tốn kém hơn cho

Thay vào đó, bên dưới chúng ta sẽ khám phá ngắn gọn cách sử dụng chính công cụ MySQL để thực hiện tác vụ này, chỉ lấy các bản ghi mà bạn mong muốn trong khi loại trừ những bản ghi có cột

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4 phiền phức trong hỗn hợp

IS NOT NULL Toán tử so sánh

Cho đến nay, phương pháp đơn giản và dễ hiểu nhất để đảm bảo tập kết quả của một cột cụ thể không chứa giá trị

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4 là sử dụng toán tử so sánh
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
7

Ví dụ: nếu chúng tôi muốn chọn tất cả các bản ghi trong bảng

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
8 trong đó cột
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
9 không phải là
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4, truy vấn có thể trông như thế này

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
7 hoạt động giống như bất kỳ bộ so sánh nào khác nên nó có thể được kết hợp với các mệnh đề
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
1 khác để lọc thêm kết quả, giống như khi bạn đang sử dụng
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
2,
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
3,
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
4,
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
5 và các toán tử so sánh tiêu chuẩn khác

Lọc NULL từ nhiều cột

Trong một số trường hợp, bạn có thể muốn truy xuất kết quả khi không có giá trị

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4 nào trên nhiều cột. Ví dụ: chúng tôi có một số bản ghi trong bảng
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
8

id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000

Hãy lưu ý rằng The Doors of Stone (

id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
8) chưa được xuất bản và do đó,
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
9 là
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4. Tương tự, Beowulf (
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
01) – thiên anh hùng ca cổ nổi tiếng của Anh – không rõ tác giả, vì vậy
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
9 là
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4

Trong trường hợp này, chúng tôi có thể muốn truy vấn các kết quả chỉ chứa bốn bản ghi đầu tiên, do đó loại trừ hai bản ghi cuối cùng có giá trị

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
4 trong
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
9 hoặc
id | title                | primary_author  | published_date
1  | The Hobbit           | Tolkien         | 09-21-1937
2  | The Silmarillion     | Tolkien         | 09-15-1977
3  | The Name of the Wind | Rothfuss        | 03-27-2007
4  | The Wise Man's Fear  | Rothfuss        | 03-01-2011
5  | The Doors of Stone   | Rothfuss        | NULL
6  | Beowulf              | NULL            | 01-01-1000
9. Điều này có thể được thực hiện với câu lệnh đơn giản này bằng cách sử dụng
SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
07 với nhiều toán tử so sánh

SELECT
  primary_author,
  published_date,
  title
FROM
  books
WHERE
  primary_author IS NOT NULL;
0

Ghi chú. Dấu ngoặc đơn không bắt buộc nhưng nên đặt các bộ so sánh được nhóm lại để dễ đọc hơn

Ở đó bạn có nó;

Empty hay NULL trong MySQL?

Ràng buộc IS NULL có thể được sử dụng bất cứ khi nào cột trống và ký hiệu ( ' ') được sử dụng khi có giá trị trống. mysql> CHỌN * TỪ ColumnValueNullDemo Ở ĐÂU Tên cột LÀ NULL HOẶC Tên cột = ' '; .

Không phải là null hoặc trống trong truy vấn SQL?

Điều kiện IS NOT NULL được sử dụng trong SQL để kiểm tra giá trị không NULL . Nó trả về TRUE nếu tìm thấy giá trị không NULL, ngược lại nó trả về FALSE. Nó có thể được sử dụng trong câu lệnh SELECT, INSERT, UPDATE hoặc DELETE.

Là NULL và không phải là null trong MySQL?

NULL có nghĩa là bạn không phải cung cấp giá trị cho trường. NOT NULL nghĩa là bạn phải cung cấp giá trị cho các trường . Bên ngoài JDBC, MySQL cho phép bạn bỏ qua giá trị cho cột NOT NULL nếu có DEFAULT trên cột.

Không phải là truy vấn null trong MySQL?

Ràng buộc NOT NULL buộc cột KHÔNG chấp nhận giá trị NULL . Điều này buộc một trường phải luôn chứa một giá trị, nghĩa là bạn không thể chèn bản ghi mới hoặc cập nhật bản ghi mà không thêm giá trị vào trường này.