创建三张表
create table emp(
empno int(4) primary key not null,
ename varchar(6),
job varchar(9),
mgr int(4),
miredate date,
sal double(7,2),
comm double(7,2),
deptno int(2)
)
mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| empno | int(4) | NO | PRI | NULL | |
| ename | varchar(6) | YES | | NULL | |
| job | varchar(9) | YES | | NULL | |
| mgr | int(4) | YES | | NULL | |
| miredate | date | YES | | NULL | |
| sal | double(7,2) | YES | | NULL | |
| comm | double(7,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
insert emp values('1','Jack','salesman',null,now(),'4000',null,'3');
insert emp values('2','White','Manager',null,now(),'4500',null,'2');
insert emp values('3','cathy','Secretary ',null,now(),'4000',null,'1');
insert emp values('4','merry','Analyst ',null,now(),'3500',null,'4');
insert emp values('5','lucy','Assistant',null,now(),'2800',null,'5');
insert emp values('6','Hellen','Typist',null,now(),'2700',null,'6');
insert emp values('7','Kate','Receptionist',null,now(),'2500',null,'4');
insert emp values('8','jenny','salesman',null,now(),'5500',null,'3');
insert emp values('9','Andrew','Manager',null,now(),'6000',null,'1');
insert emp values('10','ford','salesman',null,now(),'2700',null,'7');
insert emp values('11','Angus','Assistant',null,now(),'3000',null,'3');
insert emp values('12','Andy','salesman',null,now(),'3500',null,'7');
insert emp values('14','jack','Secretary',null,now(),'2700',null,'2');
mysql> select * from emp;
+-------+--------+-----------+------+------------+---------+------+--------+
| empno | ename | job | mgr | miredate | sal | comm | deptno |
+-------+--------+-----------+------+------------+---------+------+--------+
| 1 | Jack | salesman | NULL | 2019-01-18 | 4000.00 | NULL | 3 |
| 2 | White | Manager | NULL | 2019-01-18 | 4500.00 | NULL | 2 |
| 3 | cathy | Secretary | NULL | 2019-01-18 | 4000.00 | NULL | 1 |
| 4 | merry | Analyst | NULL | 2019-01-18 | 3500.00 | NULL | 4 |
| 5 | lucy | Assistant | NULL | 2019-01-18 | 2800.00 | NULL | 5 |
| 6 | Hellen | Typist | NULL | 2019-01-18 | 2700.00 | NULL | 6 |
| 8 | jenny | salesman | NULL | 2019-01-18 | 5500.00 | NULL | 3 |
| 9 | Andrew | Manager | NULL | 2019-01-18 | 6000.00 | NULL | 1 |
| 10 | ford | salesman | NULL | 2019-01-18 | 2700.00 | NULL | 7 |
| 11 | Angus | Assistant | NULL | 2019-01-18 | 3000.00 | NULL | 3 |
| 12 | Andy | salesman | NULL | 2019-01-18 | 3500.00 | NULL | 7 |
| 14 | Jacob | Secretary | NULL | 2019-01-18 | 2700.00 | NULL | 2 |
+-------+--------+-----------+------+------------+---------+------+--------+
create table dept(
deptno int(4) primary key not null,
dname varchar(30)
)
insert dept values('1','planning');
insert dept values('2','administration');
insert dept values('3','sales');
insert dept values('4','project');
insert dept values('5','Secretarys');
insert dept values('6','technical');
insert dept values('7','sales_2');
mysql> select * from dept;
+--------+----------------+
| deptno | dname |
+--------+----------------+
| 1 | planning |
| 2 | administration |
| 3 | sales |
| 4 | project |
| 5 | Secretarys |
| 6 | technical |
| 7 | sales_2 |
+--------+----------------+
create table salgrade(
salno int(4) primary key not null,
lowsal double(7,2),
highsal double(7,2),
sgrade int(2)
);
insert salgrade values('1','2500','3000','1');
insert salgrade values('2','3000','3500','2');
insert salgrade values('3','3500','4000','3');
insert salgrade values('4','4000','4500','4');
insert salgrade values('5','4500','5000','5');
insert salgrade values('6','5000','5500','6');
insert salgrade values('7','5500','6000','7');
insert salgrade values('8','6000','6500','8');
insert salgrade values('9','6500','7000','9');
mysql> select * from salgrade;
+-------+---------+---------+--------+
| salno | lowsal | highsal | sgrade |
+-------+---------+---------+--------+
| 1 | 2500.00 | 3000.00 | 1 |
| 2 | 3000.00 | 3500.00 | 2 |
| 3 | 3500.00 | 4000.00 | 3 |
| 4 | 4000.00 | 4500.00 | 4 |
| 5 | 4500.00 | 5000.00 | 5 |
| 6 | 5000.00 | 5500.00 | 6 |
| 7 | 5500.00 | 6000.00 | 7 |
| 8 | 6000.00 | 6500.00 | 8 |
| 9 | 6500.00 | 7000.00 | 9 |
+-------+---------+---------+--------+
第一章 条件查询
案例:找出薪水大于3000的员工,要求显示员工名和薪水
mysql> select ename,sal from emp where sal>3000;
+--------+---------+
| ename | sal |
+--------+---------+
| Jack | 4000.00 |
| White | 4500.00 |
| cathy | 4000.00 |
| merry | 3500.00 |
| jenny | 5500.00 |
| Andrew | 6000.00 |
| Andy | 3500.00 |
+--------+---------+
案例:找出薪水在3000到5000的员工,要求显示员工名和薪水(between)
mysql> select ename,sal from emp where sal between 3000 and 5000;
mysql> select ename,sal from emp where sal >= 3000 and sal <= 5000;
+-------+---------+
| ename | sal |
+-------+---------+
| Jack | 4000.00 |
| White | 4500.00 |
| cathy | 4000.00 |
| merry | 3500.00 |
| Angus | 3000.00 |
| Andy | 3500.00 |
+-------+---------+
案例:找出补助为空的员工(is null)
mysql> select ename,comm from emp where comm is null;
+--------+------+
| ename | comm |
+--------+------+
| Jack | NULL |
| White | NULL |
| cathy | NULL |
| merry | NULL |
| lucy | NULL |
| Hellen | NULL |
| jenny | NULL |
| Andrew | NULL |
| ford | NULL |
| Angus | NULL |
| Andy | NULL |
| Jacob | NULL |
+--------+------+
案例:找出工作是Manager和salesman的员工(and or in)
mysql> select ename,job from emp where job='salesman' or job='manager';
mysql> select ename,job from emp where job in('salesman','manager');
+--------+----------+
| ename | job |
+--------+----------+
| Jack | salesman |
| White | Manager |
| jenny | salesman |
| Andrew | Manager |
| ford | salesman |
| Andy | salesman |
+--------+----------+
案例:模糊查询(%代表0到N个任意字符,_代表任意一个字符)
mysql> select ename,job from emp where job like "%s_";
+--------+--------+
| ename | job |
+--------+--------+
| Hellen | Typist |
+--------+--------+