MySQL学习笔记——第五章:数据查询

MySQL入门学习笔记


第五章:数据查询

7.1 建表

首先创建几个表,供我们后续操作的使用。

-- 部门表
create table dept(
	deptno int primary key auto_increment, -- 部门编号
	dname varchar(14) ,	  -- 部门名字
	loc varchar(13)   -- 地址
) ;

-- 员工表
create table emp(
	empno int primary key auto_increment,-- 员工编号
	ename varchar(10), -- 员工姓名										-
	job varchar(9),	-- 岗位
	mgr int,	 -- 直接领导编号
	hiredate date, -- 雇佣日期,入职日期
	sal int, -- 薪水
	comm int,  -- 提成
	deptno int not null, -- 部门编号
	foreign key (deptno) references dept(deptno)
);
insert into dept values(10,'财务部','北京');
insert into dept values(20,'研发部','上海');
insert into dept values(30,'销售部','广州');
insert into dept values(40,'行政部','深圳');
insert into emp values(7369,'刘一','职员',7902,'1980-12-17',800,null,20);
insert into emp values(7499,'陈二','推销员',7698,'1981-02-20',1600,300,30);
insert into emp values(7521,'张三','推销员',7698,'1981-02-22',1250,500,30);
insert into emp values(7566,'李四','经理',7839,'1981-04-02',2975,null,20);
insert into emp values(7654,'王五','推销员',7698,'1981-09-28',1250,1400,30);
insert into emp values(7698,'赵六','经理',7839,'1981-05-01',2850,null,30);
insert into emp values(7782,'孙七','经理',7839,'1981-06-09',2450,null,10);
insert into emp values(7788,'周八','分析师',7566,'1987-06-13',3000,null,20);
insert into emp values(7839,'吴九','总裁',null,'1981-11-17',5000,null,10);
insert into emp values(7844,'郑十','推销员',7698,'1981-09-08',1500,0,30);
insert into emp values(7876,'郭十一','职员',7788,'1987-06-13',1100,null,20);
insert into emp values(7900,'钱多多','职员',7698,'1981-12-03',950,null,30);
insert into emp values(7902,'大锦鲤','分析师',7566,'1981-12-03',3000,null,20);
insert into emp values(7934,'木有钱','职员',7782,'1983-01-23',1300,null,10);	

create table salgrade(grade int,losal int,hisal int);
insert into salgrade(grade,losal,hisal) values(1,700,1200);
insert into salgrade(grade,losal,hisal) values(2,1201,1400);
insert into salgrade(grade,losal,hisal) values(3,1401,2000);
insert into salgrade(grade,losal,hisal) values(4,2001,3000);
insert into salgrade(grade,losal,hisal) values(5,3001,9999);

7.2 查询一个/多个字段

-- 语法格式
select 字段/字段列表 from 表名;

举例:查询员工的姓名

select ename from emp;

举例:查询员工的姓名,薪水和部门编号

select ename,sal,deptno
from emp;

7.3 查询结果设置别名

select 字段/字段列表 as 别名
from 表名;

举例:查询员工的姓名/薪水和年薪(按照12薪计算)

select ename,sal,sal*12 as 年薪
from emp;

7.4 条件查询

条件查询必须使用在where子句后面,where子句也必须放在from语句后面。

运算符说明
=等于
!= 或者 <>不等于
>大于
<小于
>=大于等于
<=小于等于
between … and …介于两个值之间
is null为空
is not null不为空
and
or或者
in包含
not in不包含
not取非
like模糊查询,常和%以及_连用
-- 语法格式
select 字段/字段列表 
from 表名 
where 条件;

7.4.1 等于

举例:查询员工的工资等于5000的员工姓名,薪水,和上级领导编号

select ename,sal,mgr
from emp
where sal=5000;

7.4.2 大于/小于

举例:查询员工的薪水在2000及以上的员工姓名,薪水和部门编号

select ename,sal,deptno
from emp
where sal>2000;

7.4.3 不等于

举例:输出员工薪水不等于2000的员工姓名和薪水。

select ename,sal 
from emp
where sal != 2000;

7.4.4 between … and …

举例:找出员工薪水在1100到1600之间的员工姓名,薪水和领导编号(包含两端的值)

select ename,sal,mgr
from emp
where sal between 1100 and 1600;

7.4.5 null

举例:找出哪些人没有津贴,输出员工姓名,薪水和津贴

select ename,sal,comm
from emp
where comm is null;

7.4.6 and/or 的使用

举例:找出薪水大于2000的并且部门编号是20或者30的员工姓名,薪水和部门编号

select ename,sal,deptno 
from emp 
where sal>2000 and (deptno = 20 or deptno=30);

7.4.7 in/not in 的使用

案例:查找工作岗位是经理或者分析师的员工姓名和工种。

select ename,job 
from emp 
where job in ('经理' , '分析师');

7.4.8 like模糊查询

关键字:模糊查询中有两个经常使用的关键字,一个是 % ,另一个是 _

%:代表任意多个字符

_:代表任意单个字符

举例:找出emp表中姓名含有 ‘一’ 的员工姓名,工种和员工编号。

select ename,job,empno
from emp
where ename like '%一%';

举例:找出员工姓名中第二个字是 ‘一’ 的员工姓名,薪水。

select ename,sal 
from emp 
where ename like '_一%';

7.5 数据排序

-- 语法结构
select 字段/字段列表 
from 表名
order by 字段名 排序方式;

7.5.1 升序排序 asc

举例:按照员工的薪水进行升序排序,输出员工的姓名和薪水

select ename, sal 
from emp 
order by sal asc;

7.5.2 降序排序 desc

举例:按照员工的部门编号升序排序,部门编号相同的按照薪水降序排序。

select * 
from emp 
order by deptno asc ,sal desc;
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值