查询语句
一、简单查询
注意:select后面可以跟某个表的字段名(变量名),也可以跟字面量/值(数据)
1.查询一个字段:select 字段名 from 表名;(注意:select和from是关键字,字段名和表名是标识符)
2.查询两个或多个字段:select 字段名,字段名 from 表名;(用逗号隔开即可)
3.查询所有字段:
(1)可以把所有字段都写上:select 字段名,字段名,字段名... from 表名;
(2)可以使用*号:select * from 表名;
缺点:效率低,可读性差,在实际开发中不建议使用()
4.给查询的列起别名:select 字段名 as 字段名别名 from 表名;
注意:(1)只是将查询列名显示为字段名别名,原名不会更改。因为select语句只是负责查询,永远不会进行修改工作
(2)as关键字可以进行省略
(3)改别名中间有空格:
select 字段名 as "别名+空格" from 表名;//别名加双引号
select 字段名 as '别名+空格' from 表名;//别名加单引号
注意:在所有数据库中,字符串统一使用单引号括起来,单引号是标准,因为双引号在Oracle数据库中无法使用,但是在MySQL数据库中可以使用
二、条件查询
1.什么是条件查询?
不是查询表中所有的数据,而是将表中符合条件的数据查询出来
2.语法格式:
select
字段1,字段2,字段3...
from
表名
where
条件;
3.有哪些条件?
(1)= 等于;!= ,<>不等于;<小于;>大于;<=小于等于;>=大于等于;
(2)and并且;or或者(注意:and优先级比or高,一起使用加括号)
(3)between...and...两值之间(遵循左小右大原则),等同于>= and <= ;//闭区间
(4)is null 判断是否为空;is not null 判断是否不为空;
注意:在数据库中null不能以等号进行衡量,需要使用is(not)null的形式,因为数据库中的null代表什么也没有,它不是一个值,所以不能使用等号进行衡量
(5)in包含,相当于多个or,(not in,不在这个范围中),用法:(not)in('具体的值','具体的值'...);
注意:in不是一个区间,使用的时候括号里面添加具体的值
(6)not 表示取反,主要用在 is和in中
比如:is null
is not null
in
not in等
三、模糊查询
like称为模糊查询,支持%与_匹配(%匹配多个字符,_匹配任意字符)
(1)找出姓名含有O的:select ename,sal from 表名 where ename like '%O%';
(2)找出姓名以T结尾的:select ename,sal from 表名 where ename like '%T';
(3)找出姓名以K开始的:select ename,sal from 表名 where ename like 'K%';
(4)找出姓名第二个字母是A的:select ename,sal from 表名 where ename like '_T%';
(5)找出姓名第三个字母是R的:select ename,sal from 表名 where ename like '__R%';
(6)找出姓名带有"_"的:select ename,sal from 表名 where ename like '%\_%';//里面的'\'表示转义
四、排序
1.单个字段进行排序:
将员工工资进行排序:
默认升序(order by):select ename sal from emp order by sal;
指定降序(order by xx desc):select ename sal from emp order by sal desc;
指定升序(order by xx asc):select ename sal from emp order by sal asc;
2.两个或多个字段进行排序:
按照员工薪资升序排序,薪资相同,按照名字首字母的升序排序:
select ename sal from emp order by sal asc,ename asc;
注意:sal在前,起主导作用,只有当sal相同时,才考虑启用ename排序
找出员工薪资1250-3000,并按照薪资降序排序:
select ename,sal sal from emp where sal between 1250 and 3000 order by sal desc;