1、SQL查询语句执行顺序:
查询中用到的关键词主要包含六个,并且他们的顺序依次为
select--from--where--group by--having--order by
2、MySQL处理null值:
MySQL提供了三大运算符:
- IS NULL: 当列的值是 NULL,此运算符返回 true;
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true;
- <=>: 比较操作符(不同于=运算符),当比较的的两个值为 NULL 时返回 true。
可以看到表中有一条数据的price值为null
用price=null试图单独查询出这一条数据,结果没有数据
因此需要用is null 为条件进行查询,is not null同理
3、查询结果更新到某一字段值
表数据:SELECT * FROM testone;
更新语句:UPDATE testone set name=(SELECT name FROM testone WHERE name='方世玉') WHERE name='';
报错:[Err] 1093 - You can't specify target table 'testone' for update in FROM clause;
分析:同表不支持 update子查询结果,将子查询结果,再select一次.
修改更新语句:UPDATE testone set name=(SELECT * FROM (SELECT name FROM testone WHERE name='方世玉')) WHERE name='';
还是报错:[Err] 1248 - Every derived table must have its own alias;
分析:每一个派生出来的表都必须有一个自己的别名.
再次修改更新语句:UPDATE testone set name=(SELECT * FROM (SELECT name FROM testone WHERE name='方世玉') AS t) WHERE name='';
执行正确;
查询表数据更新:SELECT * FROM testone;