not in、!= 等負向條件查詢在有 null 值的情況下返回永遠為空結果,查詢容易出錯
create table table_2 (
`id` int (11) not
null,
user_name varchar(20) not
null
)create table table_3 (
`id` int (11) not
null,
user_name varchar(20)
)insert into table_2 values (4,"zhaoliu_2_1"),(2,"lisi_2_1"),(3,"wangmazi_2_1"),(1,"zhangsan_2"),(2,"lisi_2_2"),(4,"zhaoliu_2_2"),(3,"wangmazi_2_2")
insert into table_3 values (1,"zhaoliu_2_1"),(2, null)
--1、not
in子查詢在有null值的情況下返回永遠為空結果,查詢容易出錯
select user_name from table_2 where user_name not
in (select user_name from table_3 where id!=
1)+-------------+
| user_name |
|-------------|
+-------------+
--2、單列索引不存null值,復合索引不存全為null的值,如果列允許為null,可能會得到「不符合預期」的結果集
-- 如果name允許為null,索引不儲存null值,結果集中不會包含這些記錄。所以,請使用not
null約束以及預設值。
select
* from table_3 where name !=
'zhaoliu_2_1'
empty set (0.00 sec)
--3、如果在兩個字段進行拼接:比如題號+分數,首先要各欄位進行非null判斷,否則只要任意乙個欄位為空都會造成拼接的結果為null。
select concat("1",null) from dual; -- 執行結果為null。
--4、如果有 null column 存在的情況下,count(null column)需要格外注意,null 值不會參與統計。
select
* from table_3;
+------+-------------+
| id | user_name |
|------+-------------||1
| zhaoliu_2_1 ||2
|<
null
>||
21| zhaoliu_2_1 ||22
|<
null
>
|+------+-------------+
4rows
inset
select count(user_name) from table_3;
+--------------------+
| count(user_name) |
|--------------------||2
|+--------------------+
--5、注意 null 欄位的判斷方式, =
null 將會得到錯誤的結果。
create index idx_test on table_3 (user_name);
select
* from table_3 where user_name is null
\g select
* from table_3 where user_name =
null
\g desc select
* from table_3 where user_name =
'zhaoliu_2_1'
\g desc select
* from table_3 where user_name =
null
\g desc select
* from table_3 where user_name is null
\g
null 列需要更多的儲存空間
mysql資料庫中使用null遇到的問題及解決辦法
not in 等負向條件查詢在有 null 值的情況下返回永遠為空結果,查詢容易出錯 舉例說明 create table table 2 id int 11 not null,user name varchar 20 not null create table table 3 id int 11 n...
QT中使用MySQL資料庫
1.鏈結mysql 首先正確安裝mysql資料庫。然後將libmysql.lib檔案放在qt安裝路徑下的對應編譯器的lib資料夾下,如f software qt5.9.5 5.9.5 mingw53 32 lib。將libmysql.dll檔案放在qt安裝路徑對應編譯器的bin資料夾下。最後可正常鏈...
C 中使用mysql資料庫方法
通過vc開發mysql資料庫應用軟體有多種方式 一 通過myodbc介面 二 通過connector c l介面 三 通過mysql c api介面 四 第三方封裝的mysql類 在經過反覆比較,我還是選擇了mysql c api方式來進行mysql的開發。在vc中使用mysql的步驟如下 2 安裝...