一.Select语句:
1.select语句基本结构:
select [distinct] select_items from table_name
[where search_condition]
[group by group_rules]
[having search_condition] ---->对group by产生的结构进行筛选
[order by oder_expression [asc|desc]]
2.select语句执行顺序:
1.DBMS首先执行from子句,根据from子句中一个或者多个表创建工作表。
注:工作表--->如果from子句中含有两个或者多个表,DBMS会对表进行交叉连接,交叉连接后的表成为工作表
2.如果含有where语句,则会根据where语句中的搜索条件作用于1中的工作表。DBMS会保留满足搜索条件的行,并删除不满足条件的行。
3.如果含有group by语句,DBMS会将2中的结果的行分成多个组,每个组所有行的group_rules字段具有相同的值(也就是会将含有相同group_rules字段的行合并)
4.如果含有having子句,会将having中的条件作用于3中生成的结果,类似where
5.DBMS将select子句作用于4中的结果(也就是筛选需要的字段)
6.order by语句对5中的结果进行排序
二.where中的复杂条件查询:
1.in运算符
where 字段 in (select语句、值的集合。。。)
等同于
where 字段 = 值1
or 字段 = 值2
...
注:使用in的好处:运行效率比or高,而且在in后面的括号内可以使用子查询
2.not运算符
not运算符主要是用于对布尔值进行取反
not boolean_expression
例子:where not name = "123"
3.like使用的一些通配符
1.%通配符:表示任意多个字符的匹配
2._通配符:表示任意一个字符的匹配
3.[]通配符:用来标识[]中出现的任意一个字符
例子:[%,#]:标识%或者#都满足此规则
4.escape将通配字符转义
like 'm%%' escape 'm':搜索以m%开头的任意值
escape作用:表示escape标识的字符后面的一个字符是转义字符,不是通配符