查询所有的列: 方法一:把所有的列id用,连接写出来

                 方法二:select * from emp;

        1.给列起别名

查询所有员工的编号和姓名,使用别名:select eid as bh,ename as xm from emp;

中间as可省略,保留空格即可。如:select eid bh,ename xm from emp;

        2.显示不同的记录

①查询出都有哪些性别的员工:select  distinct  sex  from  emp;

②查询出员工都分布在哪些部门:select distinct deptid from emp;

        3.查询时执行计算

①查询出所有的员工姓名及其年薪:select ename,salary*12 from emp;

②年终奖30000,工资增加2000:select ename,(salary+2000)*12+30000 from emp;

③年终奖30000,工资增加2000,再起个别名:select ename n ,(salary+2000)*12+30000 nx from emp;

        4.查询结果排序

①查询所有部门,将部门编号降序排序:select * from dept order by did desc;

②查询所有部门,将部门编号升序排列:select * from dept order by did asc;

注解: asc → ascendant 升序的   desc→descendant降序的

                                                         desc→describe 描述

③查询所有员工,按照工资降序:select * from emp order by salary desc;

④查询所有员工,生日从小到大排列:select * from emp order by birthday asc;

注解:如果不加排序规则,默认为升序

           如果按照字符串排序,按照字符的Unicode编码排列

⑤查询所有员工,按照姓名排列:select * from emp order by ename;

⑥查询所有员工,按照工资升序排列,如果工资相同,按照姓名排列:

select * from emp order by salary asc,ename asc;   

两个查询结果条件中间 , 逗号隔开

⑦查询所有员工,要求女员工在前,性别相同按照生日从小到大排:

  select * from emp order by sex asc,birthday asc;

        5.条件查询

  • 查询出编号为5的员工:select * from emp where eid=5;
  • 查询出姓名为King的员工:select * from emp where ename='King';
  • 查询出所有女员工:select * from emp where sex=0;
  • 查询出工资在5000以上的员工:select * from emp where salary>5000;

注解:  比较运算符: >   <   >=   <=    =   !=(不等于)

  • 不在10号部门的员工:select * from emp where deptid!=10;
  • 查询出没有明确部门的员工:select * from emp where deptid is null;
  • 查询出有明确部门的员工:select *from emp where deptid is not null;

注解:两个null之间,不可以用比较运算符,要用is或is not查询

  • 查询工资在5000元以上的女员工:select * from emp where salary>5000 and sex=0;

两个条件查询, 都要满足用and(&&),只需满足一个用or(||)

  • 查询出6000-8000的员工:select * from emp where salary<8000 && salary>6000;
  • 查询出工资8000以上,6000以下的女员工:

select * from emp where (salary>8000  && sex=0 && (eid>10 || eid<5))  || (salary<6000 && sex=0  && (eid>10 || eid<5));

  • 查询出不在20号部门且不在30号部门的员工:

select * from emp where deptid!=30 && deptid!=20;

简写:select * from emp where deptid not in(20,30);

  • 查询出在20号部门或在30号部门的员工:

select * from emp where deptid=30 || deptid=20;

简写:select * from emp where deptid in (20,30);

        6.模糊条件查询

示例:查询出姓名中含有字母e的员工:select * from emp where ename like '%e%';

         % 匹配任意字符      >=0     注意:%和_必须与关键字like 结合使用

_ 匹配任意1个字符   =1     

练习:

  • 查询出姓名中以e结尾的员工:select * from emp where ename like '%e';
  • 查询出姓名中倒数第二个字符为e的:select * from emp where ename like '%e_';       

        7.分页查询

 查询的结果中有太多数据,一次显示不完,可以做成分页显示。

 需要有两个已知条件:①每页显示的数据量;②当前的页码  

 每页开始查询的值=(当前的页码-1)*每页数据量

 语法:select * from emp limit 开始查询的值,每页数据量;                 

练习:

  • 假设每页显示5条数据,查询出前4页每页的数据

第一页:select * from emp limit 0,5;

第二页:select * from emp limit 5,5;

第三页:select * from emp limit 10,5;

第四页:select * from emp limit 15,5;

  • 查询出工资最高的前3个女员工:

select * from emp where sex=0 order by salary desc limit 0,3;

   注解:开始的值必须提前计算好,limit后面不可以进行计算;

         开始的值和每页的数据量必须是数值型,不可加引号。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐