前端学习(一)-----数据库(02查询)

目录

一、数据库查询

1.简单查询

 2.复杂查询


一、数据库查询

1.简单查询

(1) 查询特定的列

select  id,name from stu;

(2)全信息查询

select * from stu;

(3)给列起别名

select  id 编号,name 姓名 from stu;

(4)distinct

#查询出都有哪些班级的学生

select distinct clazzID from stu;

(5)查询时执行计算

#一年的生活费

select alimoney*12 from stu;

(6)查询结果排序(asc升,desc降)

select * from stu order by id asc,alimoney asc;

(7)条件查询

select * from stu where alimoney is null;

#查询出工资在8000以上的男员工有哪些

select * from emp where salary>8000 and sex=1;

select * from emp where salary>8000 && sex=1;

#查询出工资为6000-8000的员工

select * from emp where salary>=6000 and salary<=8000;

select * from emp where salary between 6000 and 8000;

#查询出20号部门或者30号部门的员工

select * from emp where deptId=20  or deptId=30;

select * from emp where deptId between 20 and 30;

select * from emp where deptId in(20,30);

#查询出不在20号部门并且不在30号部门的员工

select * from emp where deptId not in(20,30);

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

(8) 模糊条件查询

#查询出姓名中含有e的员工

 select * from emp where ename like '%e%';

#查询出姓名中以e结尾的员工

select * from emp where ename like '%e';

#查询出姓名中倒数第二个字符是e的员工

select * from emp where ename like '%e_';

 (9) 分页查询

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

select * from emp limit 86,5;

#查询出工资最高的前三个人

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

 2.复杂查询

(1) 聚合查询/分组查询

        聚合函数:count(),sum(),avg(),max(),min()

#查询出所有员工的数量

  select count(*) from emp;

#使用员工的编号列查询所有员工的数量

  select count(eid) from emp;  #推荐使用主键列

#使用员工部门编号列查询所有员工的数量

  select count(deptId) from emp;

#查询出所有女员工的工资总和

  select sum(salary) from emp where sex=0;

#查询出20号部门的平均工资

  select avg(salary) from emp where deptId=20;

#查询出年龄最大的员工的生日(生日最小)

  select min(birthday) from emp;

#查询10号部门的最高工资是多少

  select max(salary) from emp where deptId=10;

#查询出男女员工的数量、平均工资分别是多少  

  select count(eid),avg(salary),sex,ename from emp group by sex;

#查询出各部门的工资总和、最高工资、最低工资

  select sum(salary),max(salary),min(salary),deptId from emp group by deptId;

#获取日期中的年份 1993-7-6

  select  year('1993-7-6');

#查询出1993年出生的员工有哪些

  select * from emp where year(birthday)=1993;

#md5加密

  select  md5('123456');

(2) 子查询

 select * from emp where year(birthday)=(  select year(birthday) from emp where                                                                                       ename='tom')  

                                                                   and  ename!='tom';

(3) 多表查询

        前提:表之间已建立关联

 select ename,dname from emp,dept  where deptId=did;

 select emp.ename,dept.dname from emp,dept  where emp.deptId=dept.did;

  • 内连接

select ename,dname from emp inner join dept on deptId=did;

  • 左外连接

select ename,dname from emp left outer join dept on deptId=did;

  • 右外连接

select ename,dname from emp right outer join dept on deptId=did;

  • 全连接

        full join on,mysql不支持全连接

        union  联合后,合并相同的记录

        union all  联合后,不合并相同的记录

        全连接解决方法:联合左外连接与右外连接,并合并相同的记录

 (select ename,dname from emp left outer join dept on deptId=did)

   union

 (select ename,dname from emp right outer join dept on deptId=did);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值