mysql欄位型別和查詢語句資料型別的關係
阿新 • • 發佈:2018-12-02
mysql欄位型別和查詢語句資料型別的關係
實驗
根據資料庫儲存的欄位型別和查詢語句中的資料型別列出下表:
資料庫 | 查詢語句 | 結果 |
---|---|---|
string | string | ① |
string | int | ② |
int | string | ③ |
int | int | ④ |
結果
素材表:
+-----------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | key | varchar(50) | NO | MUL | | | | name | varchar(100) | NO | | | | | key_value | int(10) unsigned | NO | | 0 | | +-----------+------------------+------+-----+---------+----------------+ | id | key | name | key_value | +----+--------+-----------+-----------+ | 2 | ddd | zhanghua | 3 | | 6 | dsssss | mary | 9 | | 8 | dsssss | mary | 0 | | 9 | dsll | 王華 | 0 | | 10 | 7 | 詹姆斯 | 987 | | 11 | 008 | 孩子 | 13 | | 12 | 78uu | zhanglei | 13 | | 13 | ytyy98 | fengxian | 131 | | 14 | y98ds | lubu | 0 | | 15 | zore | realfirst | 0 | +----+--------+-----------+-----------+
結果
進行where查詢
-
sting對string
select * from role where(`key`='8'); //查詢不到結果,只有當值為'008'的時候才能查詢到結果 +----+-----+--------+ | id | key | name | +----+-----+--------+ | 11 | 008 | 孩子 | +----+-----+--------+
-
sting對int
where子句中的資料型別為int的時候,mysql會自動把該行資料轉換成int進行對比。select * from role where (`key`=78); +----+------+----------+ | id | key | name | +----+------+----------+ | 12 | 78uu | zhanglei | +----+------+----------+ select * from role where (`key`=007); +----+-----+-----------+ | id | key | name | +----+-----+-----------+ | 10 | 7 | 詹姆斯 | +----+-----+-----------+ select * from role where (`key`=0); +----+--------+----------+ | id | key | name | +----+--------+----------+ | 2 | ddd | zhanghua | | 6 | dsssss | mary | | 8 | dsssss | mary | | 9 | dsll | 王華 | | 13 | ytyy98 | fengxian | | 14 | y98ds | lubu | +----+--------+----------+
-
int對sting
資料庫中欄位為int型的時候,對於查詢語句中的資料會自動轉成int型進行查詢。比如key_value=“cscd”,會自動轉成key_value=0,key_value='13csdc’轉成key_value=13。select * from role where(key_value='13csdc'); +----+------+----------+-----------+ | id | key | name | key_value | +----+------+----------+-----------+ | 11 | 008 | 孩子 | 13 | | 12 | 78uu | zhanglei | 13 | +----+------+----------+-----------+ select * from role where(key_value='kjhkj'); +----+--------+-----------+-----------+ | id | key | name | key_value | +----+--------+-----------+-----------+ | 8 | dsssss | mary | 0 | | 9 | dsll | 王華 | 0 | | 14 | y98ds | lubu | 0 | | 15 | zore | realfirst | 0 | +----+--------+-----------+-----------+
-
int對int
不累述;
總結
- 當查詢語句裡的資料型別為int的時候,會自動把資料庫中的欄位值進行轉化成int型進行類比。
- 當資料庫中的欄位資料型別為int型的時候,會自動把查詢語句中的約束值轉成int型進行查詢。