志在指尖
用双手敲打未来

sql培训(sql教学视频分享)

sql培训

SQL(根底查询)
SQL(相关查询)
1.SQL(根底查询)
1.1.根本查询句子
1.1.1.FROM子句
SQL查询句子的语法如下:
01.SELECT<*,column[alias],…>FROMtable;
其间:SELECT用于指定要查询的列,FROM指定要从哪个表中查询。假如要查询一切列,能够在SELECT后边运用*号,假如只查询特定的列,能够直接在SELECT后边指定列名,列名之间用逗号隔开。例句如下,查询dept表中的一切记载:
01.SELECT*FROMdept;
1.1.2.运用别号
在SQL句子中能够经过运用列的别号改动标题的显现款式,或许表明核算成果的含义,运用语法是列的别号跟在列名后,中心能够加或不加一个“AS”关键字。例如:
01.SELECTempnoASid,ename”Name”,sal*12″AnnualSalary”FROMemp;
别号能够直接写,不必用双引号引起来。可是假如期望别号中区别大小写字符,或许别号中包含字符或空格,则必须用双引号引起来。
1.1.3.WHERE子句
在SELECT句子中,能够在WHERE子句中运用比较操作符约束查询成果,是可选的。
当查询条件中和数字比较,能够运用单引号引起,也能够不必,当和字符及日期类型的数据比较,则必须用单引号引起。例如查询部分10下的职工信息:
01.SELECT*FROMempWHEREdeptno=10;
查询职工表中职位是’SALESMAN’的职工:

sql
01.SELECTename,sal,jobFROMempWHEREjob=’SALESMAN’;
1.1.4.SELECT子句
假如只查询表的部分列,需求在SELECT后指定列名,例如:
01.SELECTempno,ename,sal,jobFROMemp;
1.2.查询条件
1.2.1.运用>,<,>=,<=,!=,<>,=
在WHERE子句中的查询条件,能够运用比较运算符来做查询。比方:查询职工表中薪水低于2000元的职工信息:
01.SELECTename,salFROMempWHEREsal<2000;
查询职工表中不属于部分10的职工信息(!=等价于<>):
01.SELECTename,sal,jobFROMempWHEREdeptno!=10;
查询职工表中在2002年1月1号今后入职的职工信息,比较日期类型数据:
01.SELECTename,sal,hiredateFROMemp
02.WHEREhiredate>to_date(‘2002-1-1′,’YYYY-MM-DD’);
1.2.2.运用AND,OR关键字
02.WHEREsal>1000ANDjob=’CLERK’;
查询薪水大于1000或许职位是’CLERK’的职工信息:
01.SELECTename,sal,jobFROMemp
02.WHEREsal>1000ORjob=’CLERK’;
1.2.3.运用LIKE条件(含糊查询)
当用户在履行查询时,不能彻底确认某些信息的查询条件,或许只知道信息的一部分,能够凭借LIKE来完成含糊查询。LIKE需求凭借两个通配符:
?%:表明0到多个字符
?_:标识单个字符
这两个通配符能够合作运用,结构灵活的匹配条件。例如查询职工姓名中第二个字符是‘A’的职工信息:
01.SELECTename,jobFROMempWHEREenameLIKE’_A%’;
1.2.4.运用IN和NOTIN
在WHERE子句中能够用比较操作符IN(list)来取出契合列表规模中的数据。其间的参数list表明值列表,当列或表达式匹配于列表中的任何一个值时,条件为TRUE,该条记载则被显现出来。
IN页能够理解为一个规模比较操作符,只不过这个规模是一个指定的值列表,NOTIN(list)取出不契合此列表中的数据记载。例如查询职位是MANAGER或许CLERK的职工:
01.SELECTename,jobFROMempWHEREjobIN(‘MANAGER’,’CLERK’);
查询不是部分10或20的职工:
01.SELECTename,jobFROMempWHEREdeptnoNOTIN(10,20);
1.2.5.BETWEEN…AND…
BETWEEN…AND…操作符用来查询契合某个值域规模条件的数据,最常见的是运用在数字类型的数据规模上,但对字符类型和日期类型数据也相同适用。例如查询薪水在1500-3000之间的职工信息:
01.SELECTename,salFROMemp
02.WHEREsalBETWEEN1500AND3000;
1.2.6.运用ISNULL和ISNOTNULL
空值NULL是一个特殊的值,比较的时分不能运用”=”号,必须运用ISNULL,不然不能得到正确的成果。例如查询哪些职工的奖金数据为NULL:
01.SELECTename,sal,commFROMemp
02.WHEREcommISNULL;
1.2.7.运用ANY和ALL条件
在比较运算符中,能够呈现ALL和ANY,表明“悉数”和“任一”,可是ALL和ANY不能独自运用,需求合作单行比较操作符>、>=、<、<=一同运用。其间:
?>ANY:大于最小
?<ANY:小于最大
?>ALL:大于最大
?<ALL:小于最小
例如,查询薪水比职位是“SALESMAN”的人高的职工信息,比任意一个SALESMAN高都行:
01.SELECTempno,ename,job,sal,deptno
02.FROMemp
03.WHEREsal>ANY(
04.SELECTsalFROMempWHEREjob=’SALESMAN’);
1.2.8.查询条件中运用表达式和函数
当查询需求对选出的字段进行进一步核算,能够在数字列上运用算术表达式(+、-、*、/)。表达式契合四则运算的默许优先级,假如要改动优先级能够运用括号。
算术运算主要是针对数字类型的数据,对日期类型的数据能够做加减操作,表明在一个日期值上加或减一个天数。
查询条件中运用字符串函数UPPER,将条件中的字符串变大写后再参加比较:
01.SELECTename,sal,jobFROMempWHEREename=UPPER(‘rose’);
查询条件中运用算数表达式,查询年薪大于10w元的职工记载:
01.SELECTename,sal,jobFROMempWHEREsal*12>100000;
1.2.9.运用DISTINCT过滤重复
数据表中有或许存储相同数据的行,当履行查询操作时,默许状况会显现一切行,不论查询成果是否有重复的数据。当重复数据没有实际意义,经常会需求去掉重复值,运用DISTINCT完成。例如查询职工的部分编码,包含一切重复值:
01.SELECTdeptnoFROMemp;
查询职工的部分编码,去掉重复值:
01.SELECTDISTINCTdeptnoFROMemp;
DISTINCT后边的列能够组合查询,下例查询每个部分的职位,去掉重复值。留意是deptno和job联合起来不重复:
01.SELECTDISTINCTdeptno,jobFROMemp;
1.3.排序
1.3.1.运用ORDERBY字句
对查询出的数据按一定规则进行排序操作,运用ORDERBY子句。语法如下:
留意,ORDERBY必须呈现在SELECT中的最后一个子句。下例对职工表按薪水排序:
01.SELECTename,sal
02.FROMemp
03.ORDERBYsal;
1.3.2.ASC和DESC
排序时默许按升序摆放,即由小及大,ASC用来指定升序排序,DESC用来指定降序排序。
因为NULL值视作最大,则升序摆放时,排在最后,降序摆放时,排在最前。假如不写ASC或DESC,默许是ASC,升序摆放。例如,按职工的司理升序排序:
01.SELECTempno,ename,mgrFROMemp
02.WHEREdeptno=10ORDERBYmgr;
降序摆放,必须指明,按职工的薪水倒序排序:
01.SELECTename,salFROMemp
02.ORDERBYsalDESC;
1.3.3.多个列排序
当以多列作为排序标准时,首先按照榜首列进行排序,假如榜首列数据相同,再以第二列排序,以此类推。多列排序时,不论正序仍是倒序,每个列需求独自设置排序方式。
01.SELECTename,deptno,salFROMemp
02.ORDERBYdeptnoASC,salDESC;
1.4.聚合函数
1.4.1.什么是聚合函数
查询时需求做一些数据核算,比方:查询职工表中各部分职工的均匀薪水,各部分的职工人数。当需求核算的数据并不能在职工表里直观列出,而是需求依据现有的数据核算得到成果,这种功能能够运用聚合函数来完成,即:将表的悉数数据区分为几组数据,每组数据核算出一个成果。
因为是多行数据参加运算回来一行成果,也称作分组函数、多行函数、集合函数。用到的关键字:
?GOURPBY按什么分组
?HAVING进一步约束分组成果
1.4.2.MAX和MIN
用来取得列或表达式的最大、最小值,能够用来核算任何数据类型,包含数字、字符和日期。例如获取组织下的最高薪水和最低薪水,参数是数字:
01.SELECTMAX(sal)max_sal,MIN(sal)min_sal
02.FROMemp;
核算最早和最晚的入职时间,参数是日期:
01.SELECTMAX(hiredate)max_hire,MIN(hiredate)min_hire
02.FROMemp;
1.4.3.AVG和SUM
AVG和SUM函数用来核算列或表达式的均匀值和和值,这两个函数只能操作数字类型,并疏忽NULL值。例如获得组织下悉数职工的均匀薪水和薪水总和:
01.SELECTAVG(sal)avg_sal,SUM(sal)sum_salFROMemp;
1.4.4.COUNT
COUNT函数用来核算表中的记载条数,相同疏忽NULL值。例如获取职工表中一共有多少名职工记载:
01.SELECTCOUNT(*)total_numFROMemp;
获得职工表中有多少人是有职位的(疏忽没有职位的职工记载)
01.SELECTCOUNT(job)total_jobFROMemp;
1.4.5.聚合函数对空值的处理
聚合函数疏忽NULL值。即当emp表中的某列有NULL值,比方某新入职职工没有薪水,比较两条句子的成果:
01.SELECTAVG(sal)avg_salFROMemp;
02.SELECTAVG(NVL(sal,0))avg_salFROMemp;
1.5.分组
1.5.1.GROUPBY子句
上面的比方都是以整个表作为一组。假如期望得到每个部分的均匀薪水,而不是整个组织的均匀薪水,需求把整个数据表按部分区分红一个个小组,每个小组中包含一行或多行数据,在每个小组中再运用分组函数进行核算,每组回来一个成果。语法如下:
01.SELECT<*,column[alias],…>
02.FROMtable[WHEREcondition(s)]
03.[GROUPBYgroup_by_expression]
04.[HAVINGgroup_condition]
05.[ORDERBYcolumn[ASC|DESC]];
其间区分的小组有多少,终究的成果集行数就有多少。
1.5.2.分组查询
1.5.3.HAVING字句
HAVING子句用来对分组后的成果进一步约束,比方按部分分组后,得到每个部分的最高薪水,能够继续约束输出成果。必须跟在GROUPBY后边,不能独自存在。例如查询每个部分的最高薪水,只有最高薪水大于4000的记载才被输出显现:
01.SELECTdeptno,MAX(sal)max_salFROMemp
02.GROUPBYdeptnoHAVINGMAX(sal)>4000;
1.6.查询句子的履行次第
当一条查询句子中包含一切的子句,履行次第依下列子句次第:
1.FROM子句:履行次第为从后往前、从右到左。数据量较少的表尽量放在后边。
2.WHERE子句:履行次第为自下而上、从右到左。将能过滤掉最大数量记载的条件写在WHERE子句的最右。
3.GROUPBY:履行次第从左往右分组,最好在GROUPBY前运用WHERE将不需求的记载在GROUPBY之前过滤掉。
4.HAVING子句:耗费资源。尽量防止运用,HAVING会在检索出一切记载之后才对成果集进行过滤,需求排序等操作。
5.SELECT子句:少用*号,尽量取字段称号。ORACLE在解析的过程中,经过查询数据字典将*号依次转换成一切的列名,耗费时间。
6.ORDERBY子句:履行次第为从左到右排序,耗费资源。
2.1.相关根底
2.1.1.相关的概念
实际运用中所需求的数据,经常会需求查询两个或两个以上的表。这种查询两个或两个以上数据表或视图的查询叫做衔接查询,衔接查询通常建立在存在相互联系的父子表之间。语法如下:
01.SELECTtable1.column,table2.column
02.FROMtable1,table2
03.WHEREtable1.column1=table2.column2;
或许:
01.SELECTtable1.column,table2.column
02.FROMtable1JOINtable2
03.ON(table1.column1=table2.column2);
2.1.2.笛卡尔积
笛卡尔积指做相关操作的每个表的每一行都和其它表的每一行做组合,假定两个表的记载条数分别是X和Y,笛卡尔积将回来X*Y条记载。当两个表相关查询时,不写衔接条件,得到的成果即是笛卡尔积。例如:
01.SELECTCOUNT(*)FROMemp;–14条记载
02.SELECTCOUNT(*)FROMdept;–4条记载
03.SELECTemp.ename,dept.dnameFROMemp,dept;–56条记载
2.1.3.等值衔接
等值衔接是衔接查询中最常见的一种,通常是在有主外键相相关系的表间建立,并将衔接条件设定为有联系的列,运用等号”=”衔接相关的表。例如查询职工的姓名、职位以及所在部分的姓名和所在城市,运用两个相关的列做等值操作:
01.SELECTe.ename,e.job,d.dname,d.loc
02.FROMempe,deptd
03.WHEREe.deptno=d.deptno;
2.2.相关查询
2.2.1.内衔接
内衔接回来两个相关表中一切满意衔接条件的记载。例如查询职工的姓名和所在部分的姓名:
01.SELECTe.ename,d.dname
02.FROMempe,deptd
03.WHEREe.deptno=d.deptno
上面的语法也能够写为:
01.SELECTe.ename,d.dname
02.FROMempeJOINdeptd
03.ON(e.deptno=d.deptno);
2.2.2.外衔接
内衔接回来两个表中一切满意衔接条件的数据记载,在有些状况下,需求回来那些不满意衔接条件的记载,需求运用外衔接,即不只回来满意衔接条件的记载,还将回来不满意衔接条件的记载。比方把没有职工的部分和没有部分的职工查出来。外衔接的语法如下:
01.SELECTtable1.column,table2.column
02.FROMtable1[LEFT|RIGHT|FULL]JOINtable2
03.ONtable1.column1=table2.column2;
了解驱动表的概念。
外衔接查询的比方,Emp表做驱动表:
01.SELECTe.ename,d.dname
02.FROMempeLEFTOUTERJOINdeptd
03.ONe.deptno=d.deptno;
Dept表做驱动表:
01.SELECTe.ename,d.dname
02.FROMempeRIGHTOUTERJOINdeptd
03.ONe.deptno=d.deptno;
2.2.3.全衔接
全外衔接是指除了回来两个表中满意衔接条件的记载,还会回来不满意衔接条件的一切其它行。即是左外衔接和右外衔接查询成果的总和。例如:
01.SELECTe.ename,d.dname
02.FROMempeFULLOUTERJOINdeptd
03.ONe.deptno=d.deptno;
2.2.4.自衔接
自衔接是一种特殊的衔接查询,数据的来源是一个表,即相相关系来自于单表中的多个列。表中的列参照同一个表中的其它列的状况称作自参照表。
自衔接是经过将表用别号虚拟成两个表的方式完成,能够是等值或不等值衔接。例如查出每个职工的司理姓名,以及他们的职工编码:
01.SELECTworker.empnow_empno,worker.enamew_ename,manager.empnom_empno,manager.enamem_ename
02.FROMempworkerjoinempmanager
03.ONworker.mgr=manager.empno;
SQL(高级查询)
1.1.子查询
1.1.1.子查询在WHERE子句中
在SELECT查询中,在WHERE查询条件中的约束条件不是一个确认的值,而是来自于别的一个查询的成果。为了给查询提供数据而首先履行的查询句子叫做子查询。
子查询:嵌入在其它SQL句子中的SELECT句子,大部分时分呈现在WHERE子句中。子查询嵌入的句子称作主查询或父查询。主查询能够是SELECT句子,也能够是其它类型的句子比方DML或DDL句子。
依据回来成果的不同,子查询可分为单行子查询、多行子查询及多列子查询。
图示:
例如查找和SCOTT同职位的职工:
01.SELECTe.ename,e.job
02.FROMempe
03.WHEREe.job=
04.(SELECTjobFROMempWHEREename=’SCOTT’);
假如子查询回来多行,主查询中要运用多行比较操作符,包含IN、ALL、ANY。其间ALL和ANY不能独自运用,需求合作单行比较操作符>、>=、<、<=一同运用。
例如查询出部分中有SALESMAN但职位不是SALESMAN的职工的信息:
01.SELECTempno,ename,job,sal,deptno
02.FROMemp
03.WHEREdeptnoIN
04.(SELECTdeptnoFROMempWHEREjob=’SALESMAN’)
05.ANDjob<>’SALESMAN’;
在子查询中需求引用到主查询的字段数据,运用EXISTS关键字。EXISTS后边的子查询至少回来一行数据,则整个条件回来TRUE。假如子查询没有成果,则回来FALSE。例如列出来那些有职工的部分信息:
01.SELECTdeptno,dnameFROMdeptd
02.WHEREEXISTS
03.(SELECT*FROMempe
04.WHEREd.deptno=e.deptno);

sql教学视频分享

sql教学视频:https://ke.qq.com/course/list/sql%E5%9F%B9%E8%AE%AD?mt=1001&sort=102&price_max=49900

未经允许不得转载:IT技术网站 » sql培训(sql教学视频分享)
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载