MySQL表的增删改查(2)
- 1.为什么别名不能使用在**where**中,但是可以使用在**order by**中?
- 1.查询NULL
- 3.查询不为null的
- 2.范围查询(查询范围包括a0和a1)(and)
- 3.in()查询
- 4.like模糊查询
- 5.分页查询(limit)
- 6.修改(update)
- 6.1全部数据修改:(很危险,一般不用)
- 6.2部分数据修改
- 6.3 部分数据多列修改
- 6.4表达式的修改
在这里面有个面试题:
1.为什么别名不能使用在where中,但是可以使用在order by中?
MySQL执行顺序:
1.from阶段;
2.where阶段;
3.group by阶段;(分组查询)
4.having阶段;(分组查询条件)
5.select阶段;
6.order by阶段;
7.limit阶段;(分页查询)
例:
别名是产生在第五个查询阶段的。
别名有了之后,后面的执行阶段才能使用,也就是说别名只能是步骤5之后的查询才能被使用
答案:别名使用是在步骤5的,where阶段在第二阶段,不能够使用;order by 阶段在第六阶段,所以可以使用。
2.AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分
例:
满足以下条件的才能成为经理
1.年龄小于等于30或者生日在2000以后;
2.密码为123;
不加():结果与预期结果不想符
这条查询语句的意思是:
1.生日在2000以后并且密码为123;
2.或者年龄小于等于30。
加();
1.查询NULL
1.使用is null;
(建议使用)
2.使用<=> null;
3.查询不为null的
使用is not null;
2.范围查询(查询范围包括a0和a1)(and)
between a0 and a1;
最好使用between a0 and a1;
3.in()查询
4.like模糊查询
where 字段名 like ‘X%’;
where 字段名 like ‘X_’;
%可以匹配任意字符(多个)
_匹配一个
可以用在查询的任意一个位置
5.分页查询(limit)
查询一个页面上的部分信息(截取了部分行信息)
limit限制查询最多300条,如果数据量不够,那么查询也不会报错
语法:
-- 起始下标为 0
1-- 从 0 开始,筛选 n 条结果
SELECT ... FROMtable_name [WHERE ...] [ORDERBY ...] LIMIT n;
2-- 从 s 开始,筛选 n 条结果
SELECT ... FROMtable_name [WHERE ...] [ORDERBY ...] LIMIT s, n;
3-- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用
SELECT ... FROMtable_name [WHERE ...] [ORDERBY ...] LIMIT n OFFSET s;
3中的offset表示偏移,跳过
limit 1 offset 2:表示查询的是第三条。
limit 4,2;和limit 2 offset 4;是相等的.
**
6.修改(update)
**
语法:
update 表名 set 修改内容;
6.1全部数据修改:(很危险,一般不用)
update world set age = 18;
6.2部分数据修改
update world set age = 18 where name = '姬如雪';
6.3 部分数据多列修改
update world set age = 18,day = 2004 where name = '姬如雪';
6.4表达式的修改
update world set age = age+1;