Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation
Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement.Téléchargez la présentation en cliquant sur ce lien.Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.
SQL基本语法 2、比较运算符(=、>、<、>=、<=、<>、!=、!>、!<) 如: -- 查询薪水小于等于2500的员工 select * from emp where sal <= 2500;
SQL基本语法 3、逻辑运算符(or 、and、 not) 如: -- 查询工资大于等于1000小于等于1500得员工 select * from emp t where t.sal >= 1000 and t.sal <= 1500;
SQL基本语法 4、其他操作符 IN 和 NOT IN 成员 BETWEEN…AND…范围(在上限和下限之间) IS NULL 和 IS NOT NULL 找出NULL值或非NULL 值 例: select * from emp t where t.deptno in(10, 20); select * from emp t where t.sal between 2000 and 3000; select * from emp t where t.comm isnotnull;
SQL基本语法 LIKE 模式匹配(或模糊查询) 在搜索字符串中使用通配符 “%”和”_” ,“%”号代表0个或多个字符,而”_”则表示单个字符.如果搜索字符串中需要查询实际的”%”和”_”,那么就需要在搜索字符串中使用一个转义字符(ESCAPE character),如果查一个叫以”S%”开头的名字: select * from emp t where t.ename like 's\%%' escape '\'
SQL基本语法 5、 简单查询 Select [all|distinct]select_column_list] [form {table_name|view_name}] [where clause] [group by clause] [having clause] [order by clause]
简单查询 如: select * from emp;select ename,job from emp;select ename as姓名, job as职务 from emp; select ename 姓名, job 职务 from emp; select ename from emp where ename=‘SMITH’;select * from emp order by empno desc;select ename,count(job) from emp groupby ename;?为什么没有分组 selectcount(job) from emp groupby job;
组处理函数 函数 描述 MAX 返回列或表达式的最大值(数据最大,时间最晚) MIN 返回列或表达式的最小值(数据最小,时间最早) AVG 返回列或表达式的平均值 SUM 返回列或表达式的总和 COUNT 返回非NULL行的行数 VARIANCE 返回列或表达式的方差 STDDEV 返回列或表达式的标准偏差 注:样本中各数据与样本平均数的差的平方和的平均数叫做样本方差;样本方差的算术平方根叫做样本标准差。
组处理函数 --不包含组的查询 Select empno,sal,comm from emp Where deptno=30; --包含组的查询 Select avg(sal),avg(distinct sal),max(sal),min(sal), sum(sal),count(*),count(sal),count(distinct sal), count(distinct sal),count(comm) From emp where deptno=30;
分组 • 单列分组 --显示每个部门的平均工资和最高工资 Select deptno,avg(sal),max(sal) from emp group by deptno; • 多列分组 --显示每个部门、每种岗位的平均工资和最高工资 Select deptno,job,avg(sal),max(sal) from emp groupby deptno, job;
分组 • 使用ROLLUP和CUBE限定词生成报表 --显示每个部门、每种岗位的平均工资和最高工资及横向统计结果 Select deptno,job,avg(sal),max(sal) from emp groupbyrollup(deptno,job); --显示每个部门、每种岗位的平均工资和最高工资及纵向统计结果 Select deptno, job, avg(sal), max(sal) from emp groupbycube(deptno, job);
Having子句 Having 字句用来限制(过滤)分组处理后的结果显示,并且必须跟再Group by字句之后 --显示平均工资高于2000元的部门编号、平均工资和最高工资 select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal)>2000; --注意分组函数不能出现在where子句中 select deptno,avg(sal),max(sal) from emp where avg(sal)>2000 group by deptno;
相等连接 从笛卡儿集合中过滤相等条件的集合 如: Select d.deptno,d.dname,e.ename,e.sal From dept d,emp e Where d.deptno=e.deptno;
不等连接 从笛卡儿集合中过滤掉相等条件的集合 如: --查找部分编号为30的员工工资等级 Select a.ename, a.sal, b.grade from emp a, salgrade b where a.sal between b.losal and b.hisal and a.deptno = 30
自我连接 • 在一个表中进行的连接,表名在FROM字句中出现2次. 如: --查询雇员对应的管理员的名字 Select e.empno, e.ename, m.ename 管理员 From emp e, emp m Where m.empno = e.mgr;
合并查询 • 对几个连接查询的结果进行合并,我们称为合并查询 其基本语法是: SELECT 语句1 [UNION | UNION ALL | INTERSECT | MINUS] SELECT 语句2
union • 获取结果集的并集,并自动去除重复行,以第一列的结果进行排序 如: Select empno,ename,mgr from emp Where deptno=30 Union Select empno,ename,mgr from emp Where job=‘MANAGER’;
union all • 获取结果集的并集,不去除重复行,不排序 如: Select empno,ename,mgr from emp Where deptno=30 Union all Select empno,ename,mgr from emp Where job=‘MANAGER’;
intersect • 获取结果集的交集,只会显示同时存在于结果集合中的数据,并且以第一列的结果进行排序 如: Select empno,ename,mgr from emp Where deptno=30 intersect Select empno,ename,mgr from emp Where job=‘MANAGER’;
minus • 获取结果集的差集,只会显示在第一个结果集中存在,但在第二个结果集中不存在的数据,并且以第一列的结果进行排序 如: Select empno,ename,mgr from emp Where deptno=30 minus Select empno,ename,mgr from emp Where job=‘MANAGER’;
单行子查询 • 子查询只返回一行数据,而父查询可以多行 --显示工资最高的雇员信息 Select ename, deptno, sal from emp Where sal = (selectmax(sal) from emp);
多行子查询 • 子查询返回多行数据。 --显示与部门编号为20的岗位相同的雇员信息 Select ename, deptno, sal, job from emp Where job in (selectdistinct job from emp where deptno = 20); --显示不与部门编号为20的岗位相同的雇员信息 Select ename, deptno, sal, job from emp where job notin (selectdistinct job from emp where deptno = 20);
多行子查询 --显示高于部门编号为20的所有雇员的工资的雇员信息 select ename, deptno, sal, job from emp where sal > all (select sal from emp where deptno = 20); ?思考: 怎么把上句变为单行* --显示高于部门编号为20的任何雇员的工资的雇员信息 select ename, deptno, sal, job from emp where sal > any (select sal from emp where deptno = 20);
相关子查询 • 子查询中引用了父查询中某些表或者列 --显示每个部门的最高工资的雇员信息 select deptno, (selectmax(sal) from emp b where b.deptno = a.deptno) maxsa from emp a orderby deptno; --增加distinct selectdistinct deptno, (selectmax(sal) from emp b where b.deptno = a.deptno) maxsal from emp a orderby deptno;
Connexion au compte
Connectez-vous pour publier votre contenu sur SlideServe.