Bootstrap

简单语法查询

9.1.简单查询

9.1.1语法

select 字段名1,字段名2,......from表名;

示例:使用test数据库

select ename from emp; select ename,job,hiredate from emp; select ename 姓名,job 职业,hiredate 入职时间 from emp; select empno,ename,sal‘your sal’from emp;

9.2用法

9.2.1字符串的连接

eg:编号为7369的雇员,姓名为SMITH,职位为clerk

select concat(‘编号为’,empno‘的雇员,姓名为’,ename,‘职位为’,job)from emp;

四则运算

select ename雇员姓名,sal*12年薪 from emp; select ename雇员姓名,(sal+comm)*12年薪 from emp;

注意:在mysql中,null值与任何值进行运算,结果为null

9.2.2去除重复列

选择:从原表中选择符合条件的行

投影:从选择中选择符合关系的列

select empno编号,ename姓名,sal工资,hiredate入职时间 from emp; where ename=‘smith’;

注:字符串要用单撇号或双撇号括起来(null为空值)

例:查询非null的情况

select*from emp where comm is not null;

单表查询

一、准备数据

语法:source:d:\init;随后我会给大家放到文末

二、基本查询

select 字段名1 as 别名1,字段名2,as 别名2 from表名 where 条件 order by排序【asc|desc】 select *from emp;查询emp

EMPNO雇员编号 JOB领导者 comm奖金 MGR职属领导 HIREDATE入职时间 sal工作 DEPTNO部门编号

注意:not in 不属于

例:查询emp中所有职位

select job from emp; select distinct job from emp;——distinct表示去掉重复值

小结:投影操作——从原表选择列

9.3限定查询(选择操作)

select 列名1 别名1,列名2 别名2......from 别名 where 条件;

小结:从原表中选择符合条件的行

9.3.1>、>=、

例:查询工资大于1500元的雇员信息

select *from emp where sql>1500;

例:查询雇员编号不是7349的雇员信息

select *from emp where empno <>7349;

例:查询姓名是smith的雇员编号,姓名,工资和入职时间

select empno,ename,sal,hiredate from emp where ename='smith';

注意:字符串要使用单撇号括起来,同时mysql中的ci字符不区分大小写

9.4多表查询

9.4.1简介

用户要查询的字段来自于多张表,一般来讲多张表之间都会存在着一对多的关系

父表:主关键字所在的表

子表:外部关键字所在的表

子表和父表之间一对多关系

9.4.2基本语法

select 字段名1,别名1,字段名2,别名2......from 表名1 表别名1 表名2 表别名2 where查询条件 and 连接条件 order by排序字段 asc|desc

例:将emp表与dept表进行多表查询(笛卡尔积)极力避免

select* from emp,dept;

连接查询:去掉重复属性的等值相连

deptno部门编号 loc部门地址 Dname部门名称

9.4.3连接查询示例

1.例:查询姓名,雇员编号、工资和所在部门的名称及位置

select ename as 雇员姓名,empno as 雇员编号,sal as 工资,dname as 部门名称 ,loc as 部门地址 from emp,dept where emp.deptno=dept.deptno; 内联:select e.ename as 雇员姓名, e.empno as 雇员编号, e.sal as 工资, d.dname as 部门名称, d.loc as 部门地址 from emp e inner join dept d on e.deptno = d.deptno;

2.例:查询雇员姓名、工资、入职时间、所在部门编号,部门名称

select e.ename as 雇员姓名,e.sal as 工资,e.hiredate as 入职时间,d.deptno,dname from emp e,dept d where e.deptno=d.deptno; 内联:select e.ename as 雇员姓名, e.sal as 工资, e.hiredate as 入职时间, d.deptno, d.dname from emp e inner join dept d on e.deptno = d.deptno;

3.例:查询雇员姓名、雇员工资、领导姓名、领导工资(自连接查询)

select e.ename as 雇员姓名,e.sal as 雇员工资, m.ename as 领导姓名,m.sal as 领导工资 from emp e,emp m where e.mgr=m.empno; 内联:select e.ename as 雇员姓名, e.sal as 雇员工资, m.ename as 领导姓名, m.sal as 领导工资 from emp e inner join emp m on e.mgr = m.empno;

4.例:查询雇员姓名、雇员工资、部门名称、领导姓名、领导工资

select e.ename 雇员姓名,e.sal 雇员工资,d.dname 部门名称,m.ename 领导姓名,m.sal 领导工资 from emp e,emp m,dept d where e.mgr=m.empno and e.deptno=d.deptno; 内联:select e.ename as 雇员姓名, e.sal as 雇员工资, d.dname as 部门名称, m.ename as 领导姓名, m.sal as 领导工资 from emp e inner join emp m on e.mgr = m.empno inner join dept d on e.deptno = d.deptno;

5.例:查询雇员姓名、雇员工资、部门名称、工资所在等级。(非等值查询

select e.ename 雇员姓名,e.sal 雇员工资,d.dname 部门名称, s.grade 工资等级 from emp e,dept d,salgrade s where e.deptno=d.deptno and e.sal between s.losal and s.hisal; 内联:select e.ename as 雇员姓名, e.sal as 雇员工资, d.dname as 部门名称, s.grade as 工资等级 from emp e inner join dept d on e.deptno = d.deptno inner join salgrade s on e.sal between s.losal and s.hisal;

6.例:查询雇员姓名,雇员工资,部门名称,雇员工资等级,领导姓名、领导工资,领导工资等级

select e.ename as 雇员姓名,e.sal as 雇员工资,d.dname as 部门名称,s.grade as 雇员工资等级,m.ename as 领导姓名,m.sal as 领导工资,ms.grade as 领导工资等级 from emp e,dept d,salgrade s,emp m,salgrade ms where e.deptno = d.deptno and e.mgr = m.empno and e.sal between s.losal and s.hisal and m.sal between ms.losal and ms.hisal; 内联:select e.ename as 雇员姓名, e.sal as 雇员工资, d.dname as 部门名称, s.grade as 雇员工资等级, m.ename as 领导姓名, m.sal as 领导工资, ms.grade as 领导工资等级 from emp e inner join dept d on e.deptno = d.deptno inner join salgrade s on e.sal between s.losal and s.hisal inner join emp m on e.mgr = m.empno inner join salgrade ms on m.sal between ms.losal and ms.hisal;

7.例:查询雇员编号,雇员姓名,工资和部门名称

select e.empno,e.ename,e.sal,d.dname from emp e,dept d where e.deptno=d.deptno; 内联:select e.empno, e.ename, e.sal, d.dname from emp e inner join dept d on e.deptno = d.deptno;

8.例:查询工资大于1500的雇员姓名,部门名称和领导姓名

select e.ename 雇员姓名,e.sal 雇员工资,d.dname 部门名称,m.ename 领导姓名 from emp e, dept d,emp m where e.deptno=d.deptno and e.mgr=m.empno and e.sal>1500; 内联:select e.ename as 雇员姓名, e.sal as 雇员工资, d.dname as 部门名称, m.ename as 领导姓名 from emp e inner join dept d on e.deptno = d.deptno inner join emp m on e.mgr = m.empno where e.sal > 1500;

;