第二章:排序和条件限制
select [distinct] {column_name..|*|exp|alias_name
from table_name
oeder by column_name 排序的标记
执行顺序:from ->select ->order by
order by 优先级最低,总是最后执行
排序的标记:ASC升序(可省略,默认) DESC降序
查询员工的名字的薪水,薪水以升序排序select last_name,salary from s_emp order by salary asc;
注意:排序的列可以不出现在排序的后面
order by后面也可以直接跟角标,该角标是select后面排序列的位置,角标从1开始
select last_name,salary from s_emp order by 2 desc;
order by后面可以跟多个排序规则,先按照第一个排,第一个排相等,在按照第二个排序
select id,last_name,salary from s_emp order by salary asc,2 asc;
如果排序的列出现null值,你可以认为null是无穷大
select id,last_name,commission_pct from s_emp order by commission_pct;
注意:排序的时候,升序null值在后面,降序null值在后面。
建议:排序的时候对有null的值排序,可以追加其他的排序列
条件限制语句
select [distinct] {column_name..|*|exp|alias_name
from table_name
where 条件
oeder by column_name 排序的标记
执行顺序:from ->where ->select ->order by
注意:from查询的是整张表的内容,where是对from查询的整张表内容进行一行一行的筛选,
符合条件的留下,不符合条件的忽略,尽量不写where
逻辑比较符 = < > <= >=
查询部门标号为41号的部门信息 select id,name,region_id from s_dept where id=41;
注意:字符串和时间类型的值用单引号引起来,字符串值表示的时候区分大小写,
中文环境的时间格式是dd-Mon-yy,英文环境dd-mm-yy
查询入职时间大于等于1970年1月1日的员工信息
select id,last_name,salary,star_date from s_emp where start_date>='01-1月-90'
SQL比较符
between and 在某一个范围之内,闭区间[x,y]
查询员工工资在795到1450直接的员工信息
select id,last_name,salary from s_emp where salary between 795 and 1450;
not between and
查询员工工资不在795到1450直接的员工信息(找出薪水小于795和大于1450的员工信息)
select id,last_name,salary from s_emp where salary not between 795 and 1450;
in(list) 在某一个范围
查询部门为41或43号部门的员工信息
selece id,last_name,salary,dept_id from s_emp where dept_id in(41,43);
not in(list) 不在某一个范围
and 并且(前后两个条件都要成立)
or 或者(前后两个条件只要成立一个就行)
注意:and和or并存的时候 and优先级高于or
不相等 <> != ^=
查询除了部门为41或43号部门的其他部门的员工信息
selece id,last_name,salary,dept_id from s_emp where dept_id!=41 and dept_id<>43;
like 模糊查询,模糊匹配 _表示单个字符的占位 %表示匹配0到多个字符 &_手动输入字符代替_
查询用户名第二个字母是m的员工信息
select id,last_name,salary feom s_emp where last_name like '_m%';
转义 可以是任意的符号,escape单词限定的都可以作为转义
查询以_开头的员工信息
insert into s_emp(id,last_name) values(26,'_zhangsan');
select id,last_name,salary from s_emp where last_name like '\_%' escape '\'
is null判断是否为空
查询没有薪水的员工信息
select id,last_name,salary from s_emp where salary is null;
is not null判断不为空