mysql字段类型和查询语句数据类型的关系

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查询

  1. sting对string

     select * from role where(`key`='8');
     //查询不到结果,只有当值为'008'的时候才能查询到结果
     +----+-----+--------+
    | id | key | name   |
    +----+-----+--------+
    | 11 | 008 | 孩子   |
    +----+-----+--------+
    
  2. 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     |
    +----+--------+----------+
    
  3. 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 |
    +----+--------+-----------+-----------+
    
  4. int对int
    不累述;

总结

  1. 当查询语句里的数据类型为int的时候,会自动把数据库中的字段值进行转化成int型进行类比。
  2. 当数据库中的字段数据类型为int型的时候,会自动把查询语句中的约束值转成int型进行查询。

猜你喜欢

转载自blog.csdn.net/weixin_38674371/article/details/82789625