数据库中基于单表的简单查询
1.基于单表的简单查询1.1 语法
select 列名1 别名1,列名2 别名2,…… from 表名;
示例:----使用的是test数据库中的emp雇员表
1.2 用法
[*]字符串毗连
select concat('雇员编号为',empno,'的雇员,姓名为',ename,'职位为',job) from emp;
[*]四则运算 + - * /
例:查询雇员表中姓名和年薪?
select ename,(sal+comm)*12 年薪 from emp; select ename,(sal+ifnull(comm,0))*12 年薪 from emp; -- 使用ifnull()
提示:在mysql中,null与任何值进行四则运算,结果都为null
[*]去掉重复记录
例:查询所有职位?
select distinct job from emp; select ename job from emp;-- 有重复的行(记录)才可以去掉
小结:
投影:从源表选择列(字段、属性)
2、限定查询
语法:
select 字段名1 别名1,字段名2 别名2,…… from 表名 where 条件;
2.1 关系运算符
> >= <
示例:
例:查询工资大于1500元雇员信息?
select * from emp where sal>1500;
示例:
例:查询雇员编号不是7369的雇员信息?
select * from emp where empno != 7369;
例:查询姓名是smith的雇员编号,姓名,工资,入职时间?
select empno,ename,sal,hiredate from emp where ename='smith';
提示:
字符型常量在使用时需要家定界符 "" ''
2.2 null或not null
null空值:尚未确定的值,不确定的值
例如:查询尚未确定奖金的雇员信息?
select * from emp where comm is null; select * from emp where comm is not null;
2.3 and
例如:查询基本工资大于1000,而且可以获取奖金的雇员姓名,工资和奖金。
select ename,sal,comm from emp where sal>1000 and comm is not null;
2.4 or
例如:查询从事贩卖工作,或工资大于2000的雇员信息?
select * from emp where job ="seleman" or sal>=2000;
2.5 not
例如:查询从事非贩卖工作,而且工资小于1500的雇员编号,姓名,职位,工资和入职时间。
select empno,ename,job,sal,hiredate from emp where (sal<1500)job!="salesman";
留意:
(优先级)not>and
2.6 between...and...在...与...之间(包含临界值)
select * from emp where sal>1500 and sal<3000 select * from emp where sal between 1500 and 3000; --包含临界值 select * from emp where sal between 1501 and 2999;
查询1981年入职的雇员编号,姓名,入职时间,所在部门编号?
select empno,ename,hiredate,deptno from emp where hiredate between"1981-01-01" and "1981-12-31"; select empno,ename,hiredate,deptno from emp where hiredate>="1981-01-01" and hiredate<="1981-12-31";
留意:日期必须使用单撇号或双撇号括起来
2.7 in或not in---属于或不属于
例如:查询编号为7369 7499 7788的雇员信息
select * form emp where empno=7369 or empno=7499 or empno=7788; select * from emp where empno in(7369,7499,7788);
例如:查询姓名为Smith,allen,king的雇员编号,姓名,入职时间
select empon,ename,hiredate from emp where ename in ('Smith','allen','king');
2.8 likesq
用来进行模糊查询,需要结合通配符一起使用。
常用的通配符:
%匹配恣意长度字符。
_只能匹配单个字符。
例如:查询雇员姓名以s开头的雇员信息。
select * from emp where ename like 's%';
例如:查询雇员姓名中包含m的雇员信息。
select * from emp where ename like '%m%';
例如:查询从事贩卖工作,而且姓名长度为4个字符的雇员信息。
select * from emp where job='salesman'and ename like '____';
例如:查询1981年入职的雇员编号,姓名,入职时间,所在部门编号。
select * from emp where hiredate like '1981%';
3.排序
3.1语法
语法
select 列名1,列名2,... from 表名 where 条件 order by 排序字段1,排序字段2...;(升降)
例如:查询所有雇员信息,按照工资由低到高的排序。
select * from emp order by sal;
例如:查询部门10的雇员信息。按照工资由高到低进行排序,如果工资类似,按入职时间由早到晚进行排序。
select * from emp where depton=10 order by sal desc,hiredate;
越晚的日期越大,越早的日期越小。
例如:查询雇员编号,姓名,年薪,按年薪由高到低排序。
select empno,ename,(sal+ifnull(comm,0))*12 年薪 from emp order by 年薪 desc;
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]