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阶段;(分页查询)

例:

MySQL添加order by查询很慢 mysql先查询后添加_database

别名是产生在第五个查询阶段的。

别名有了之后,后面的执行阶段才能使用,也就是说别名只能是步骤5之后的查询才能被使用

答案:别名使用是在步骤5的,where阶段在第二阶段,不能够使用;order by 阶段在第六阶段,所以可以使用。

2.AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

例:

满足以下条件的才能成为经理

1.年龄小于等于30或者生日在2000以后;

2.密码为123;

不加():结果与预期结果不想符

MySQL添加order by查询很慢 mysql先查询后添加_数据_02


这条查询语句的意思是:

1.生日在2000以后并且密码为123;

2.或者年龄小于等于30。

加();

MySQL添加order by查询很慢 mysql先查询后添加_database_03

1.查询NULL

1.使用is null;(建议使用)

MySQL添加order by查询很慢 mysql先查询后添加_mysql_04


2.使用<=> null;

MySQL添加order by查询很慢 mysql先查询后添加_数据库_05

3.查询不为null的

使用is not null;

MySQL添加order by查询很慢 mysql先查询后添加_database_06

2.范围查询(查询范围包括a0和a1)(and)

between a0 and a1;

MySQL添加order by查询很慢 mysql先查询后添加_数据库_07


最好使用between a0 and a1;

MySQL添加order by查询很慢 mysql先查询后添加_mysql_08

3.in()查询

MySQL添加order by查询很慢 mysql先查询后添加_mysql_09

4.like模糊查询

where 字段名 like ‘X%’;

where 字段名 like ‘X_’;

%可以匹配任意字符(多个)

_匹配一个

可以用在查询的任意一个位置

MySQL添加order by查询很慢 mysql先查询后添加_MySQL添加order by查询很慢_10


MySQL添加order by查询很慢 mysql先查询后添加_mysql_11


MySQL添加order by查询很慢 mysql先查询后添加_mysql_12


MySQL添加order by查询很慢 mysql先查询后添加_mysql_13

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表示偏移,跳过

MySQL添加order by查询很慢 mysql先查询后添加_MySQL添加order by查询很慢_14


limit 1 offset 2:表示查询的是第三条。

MySQL添加order by查询很慢 mysql先查询后添加_database_15


MySQL添加order by查询很慢 mysql先查询后添加_数据库_16


limit 4,2;和limit 2 offset 4;是相等的.

MySQL添加order by查询很慢 mysql先查询后添加_database_17

**

6.修改(update)

**
语法:

update 表名 set 修改内容;

6.1全部数据修改:(很危险,一般不用)

update world set age = 18;

MySQL添加order by查询很慢 mysql先查询后添加_数据_18

6.2部分数据修改

update world set age = 18 where name = '姬如雪';

MySQL添加order by查询很慢 mysql先查询后添加_mysql_19

6.3 部分数据多列修改

update world set age = 18,day = 2004 where name = '姬如雪';

MySQL添加order by查询很慢 mysql先查询后添加_数据库_20

6.4表达式的修改

update world set age = age+1;

MySQL添加order by查询很慢 mysql先查询后添加_database_21