《SQL入门语句介绍.ppt》由会员分享,可在线阅读,更多相关《SQL入门语句介绍.ppt(89页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、SQL基础教程(第二版)作者: MICK 出版社: 人民邮电出版社译者: 孙淼 / 罗勇 出版年: 2017-6-1页数: 320购买渠道: 当当、京东等2推荐书籍 本书是畅销书SQL基础教程第2版,介绍了关系数据库以及用来操作关系数据库的SQL语言的使用方法。书中通过丰富的图示、大量示例程序和详实的操作步骤说明,让读者循序渐进地掌握SQL的基础知识和使用技巧,切实提高编程能力。另外,本书还将重要知识点总结为“法则”,方便读者随时查阅。 一一. . SQLSQL语言简介语言简介 二. SQL中的SELECT语句 三. SQL中的常用函数 四. SQL中的子句 五. SQL中的表连接3目录SQL
2、 语言简史 目前,已被大多数商品化关系数据库采用,如:Oracle(甲骨文)、Sybase、DB2、Informix、SQL Server、Teradata。 结构化查询语言Structured Query Language,简称SQL语言,1974年诞生于IBM 公司在加利福尼亚州的San Jose试验室中。其特点: 语言简洁、功能丰富、使用灵活。4 SQL语言共分为四大类: 1、数据查询语言数据查询语言最基本的SQL语言 负责进行数据查询而不会对数据本身进行修改的语句。 2、数据操纵语言 对数据进行存取。 3、数据定义语言 负责数据结构的定义。 4、数据控制语言 控制用户存取数据的权限。S
3、QL语言分类5客户营销客户营销通用查询通用查询Title in hereTitle n here信息创造价值信息创造价值考核评价考核评价灵活查询灵活查询建模分析建模分析数据挖掘数据挖掘掌握SQL语言的必要性6SELECT Name as “姓名” ,Zone_Num as “地区号” ,Branch_Num as “支行号” ,Mobile as “手机号”FROM Custom_InfoWHERE Zone_Num=0200 and Wap_MobBank_Ind=0字段表名筛选条件SQL脚本举例-提取未开通手机银行客户清单ORDER BY Name排序 通过SQL提取本地区的客户中未开通手
4、机银行的客户信息,联系客户向其营销手机银行产品。7 一. SQL语言简介 二二. . SQLSQL中的中的SELECTSELECT语句语句 三. SQL中的常用函数 四. SQL中的子句 五. SQL中的表连接目录8 Select 语句 SELECT 语句是SQL 中最基本、应用最多的语句,它会从数据库中检索需要的数据并把结果返回给用户。F可以说,通用查询、灵活查询中所需要用到的SQL语言几乎都会包含SELECT语句的使用。F学会了使用SELECT语句,也就掌握了通用查询、灵活查询工具的基本技巧。二、SQL中的SELECT语句9可以使用通配符“*”显示所有的字段。例如: SELECT * -返
5、回所有列。返回所有列。可以罗列出所需要的字段。例如: SELECT 字段1 ,字段2 ,字段n -返回指定的字段。返回指定的字段。 二、SQL中的SELECT语句10数据表 Custom_Info二、SQL中的SELECT语句11任务一 从数据表中找到客户编号为“020001234567891”的那条记录。二、SQL中的SELECT语句12任务一SELECT *FROM Custom_InfoWHERE Party_Id=020001234567891Select 部分表名筛选条件二、SQL中的SELECT语句13任务二 找出所属地区为0200或3000的所有客户,输出他们的姓名、性别代码、所
6、属地区和总资产(以“万元”为单位)。二、SQL中的SELECT语句14任务二SELECT Name ,Zone_Num ,Gender_Cd ,Total_Asset/10000 as AssetFROM Custom_InfoWHERE Zone_Num=0200 or Zone_Num=3000Select 部分表名筛选条件以万元为单位二、SQL中的SELECT语句15任务三 所属地区为0200或3000、并且总资产大于等于100万的客户,输出他们的的姓名、所属地区、性别代码和总资产(以“万元”为单位)。二、SQL中的SELECT语句16任务三SELECT Name ,Zone_Num ,
7、Gender_Cd ,Total_Asset/10000 as AssetFROM Custom_InfoWHERE (Zone_Num=0200 or Zone_Num=3000) and Total_Asset = 1000000 二、SQL中的SELECT语句17 练习练习1 从数据表中找到所属地区为1001,并且总资产大于40万的客户,输出他们的客户编号、姓名、出生日期、手机号码和总资产。参考结果参考结果二、SQL中的SELECT语句18 一. SQL语言简介 二. SQL中的SELECT语句 三三. . SQLSQL中的常用函数中的常用函数 四. SQL中的子句 五. SQL中的表连
8、接目录19三、SQL中的常用函数聚合函数聚合函数SUM 求和函数求和函数 COUNT 计数函数计数函数MAX/MIN 最大最大/最小值最小值AVG 平均值函数平均值函数字符串函数字符串函数SUBSTR 截取函数截取函数 20 SUM 求和函数 用途:用途:对于满足WHERE子句中限制条件的记录,返回某一列所有数值之和。 任务:任务:计算0200地区所有客户的总资产之和(以万元为单位)三、SQL中的常用函数21 SUM 求和函数SELECT sum ( Total_Asset ) /10000 as Sum_AssetFROM Custom_InfoWHERE Zone_Num=0200三、SQ
9、L中的常用函数22 COUNT 计数函数 用途:用途:返回满足WHERE子句中限制条件的记录个数 任务:任务:计算0200地区的男性客户数量三、SQL中的常用函数23 COUNT 计数函数SELECT count ( * ) as numberFROM Custom_InfoWHERE Zone_Num=0200 and Gender_Cd=1三、SQL中的常用函数24 MAX/MIN 最大值/最小值函数 用途:用途:对于满足WHERE子句中限制条件的记录,返回某一列的最大值/最小值。 任务:任务:计算0200地区的总资产最大和最小的客户的总资产是多少。三、SQL中的常用函数25 MAX/MI
10、N 最大值/最小值函数SELECT max( Total_Asset ) as Max_Asset , min ( Total_Asset ) as Min_AssetFROM Custom_InfoWHERE Zone_Num=0200三、SQL中的常用函数26 AVG 平均值函数 用途:用途:对于满足WHERE子句中限制条件的记录,返回某一列的平均值。 任务:任务:计算0200地区的客户平均资产。三、SQL中的常用函数27 AVG 平均值函数SELECT avg ( Total_Asset ) as Avg_AssetFROM Custom_InfoWHERE Zone_Num=0200
11、三、SQL中的常用函数28 SUBSTR 截取函数 用途:用途:从字符串中的任意位置截取指定长度的字符串。标准格式为 substr(Field,m,n),它有三个参数,第一个参数为目标字符串,第二个参数是将要输出的子串的起点,第三个参数是将要输出的子串的长度。 任务:任务:找出0200地区所有客户的姓名的第一个字。三、SQL中的常用函数29 SUBSTR 截取函数SELECT substr ( Name,1,2 ) as Family_NameFROM Custom_InfoWHERE Zone_Num=0200三、SQL中的常用函数30练习练习2统计手机“139”号段的客户的最大资产和最小资
12、产分别是多少?提示:可以在Where部分中使用Substr函数,对手机号进行筛选。参考结果参考结果三、SQL中的常用函数31如何学习应用更多函数?如何学习应用更多函数?-参考书籍-网络资料-软件帮助文档三、SQL中的常用函数32 一. SQL语言简介 二. SQL中的SELECT语句 三. SQL中的常用函数 四四. . SQLSQL中的子句中的子句 五. SQL中的表连接目录33 分组子句分组子句 GROUP BY HAVING 筛选子句筛选子句 排序子句排序子句 ORDER BY四、SQL中的子句34CASE WHEN 条件控制语句条件控制语句 where子句查询条件子句查询条件 WHER
13、E 字符模糊匹配(字符模糊匹配(LIKE) 5WHERE子句中的子句中的查询条件查询条件3 列举筛选(列举筛选(IN、NOT IN) 4 范围筛选(范围筛选(BETWEENAND) 比较运算符比较运算符1 逻辑运算符逻辑运算符 2四、SQL中的子句35在WHERE子句的条件表达式中,可以用的比较运算符有: 比较运算符作查询条件比较运算符作查询条件1四、SQL中的子句36 比较运算符作查询条件比较运算符作查询条件1任务:任务:筛选手机号非空、且基金余额不为0的客户,输出客户的姓名、手机号、基金余额。中间业务产品表 Products四、SQL中的子句37SELECT Party_Name ,Mob
14、ile ,Fund_BalFROM ProductsWHERE Mobile is not null and Fund_Bal0 比较运算符作查询条件比较运算符作查询条件1手机号非空基金余额不为0四、SQL中的子句38在WHERE子句的条件表达式中,可以用的逻辑运算符有: 逻辑运算符作查询条件逻辑运算符作查询条件 2四、SQL中的子句39用途:用途:关键字IN,用于查询满足所有罗列条件的信息。 格式:字段值 IN (value1, value2, 表达式n)任务:任务:筛选地区号为1001、3000的所有客户记录3 IN、NOT IN作查询条件作查询条件 四、SQL中的子句40SELECT *
15、 FROM Custom_InfoWHERE Zone_Num in (1001,3000)3 IN、NOT IN作查询条件作查询条件 四、SQL中的子句414 BETWEENAND 作查询条件作查询条件 用途:用途:在两个值之间进行筛选。 对数值型使用对数值型使用BETWEENAND进行范围筛选进行范围筛选 对字符型使用对字符型使用BETWEENAND进行范围筛选进行范围筛选 四、SQL中的子句424 BETWEENAND 作查询条件作查询条件 对数值型使用对数值型使用BETWEENAND进行范围筛选进行范围筛选 任务:任务:筛选总资产在10万100万之间的客户,输出 客户的姓名、总资产。四
16、、SQL中的子句43SELECT Name ,Total_Asset FROM Custom_InfoWHERE Total_Asset between 100000 and 10000004 BETWEENAND 作查询条件作查询条件 四、SQL中的子句444 BETWEENAND 作查询条件作查询条件 对字符型使用对字符型使用BETWEENAND进行范围筛选进行范围筛选 任务:任务:筛选姓名在“王五”和“赵六”之间的客户,输出客户的姓名。四、SQL中的子句454 BETWEENAND 作查询条件作查询条件 SELECT * FROM Custom_InfoWHERE Name betwee
17、n 王五 and 赵六四、SQL中的子句46 前面提到的查询实际上都是精确查询,即对查询的字段值有准确的描述。但在实际应用中往往要用到模糊查询,根据某一关键字搜索相关信息。 通常,运算符LIKE和通配符%组合起来使用,即可实现模糊查询。 字符模糊匹配(字符模糊匹配(LIKE) 5四、SQL中的子句47 字符模糊匹配(字符模糊匹配(LIKE) 5 任务:任务:筛选单位中含“铝业”的客户,输出客户的姓名、单位名称。Products四、SQL中的子句48 字符模糊匹配(字符模糊匹配(LIKE) 5SELECT Party_Name ,Corp_NameFROM ProductsWHERE Corp_
18、Name like %铝业%四、SQL中的子句49 GROUP BY 子句子句 用途:用途:以指定的字段作为分组标志,实现分组汇总。 任务一:任务一:计算各个地区的客户的总资产是多少。四、SQL中的子句50 GROUP BY 子句 任务一SELECT Zone_Num ,sum( Total_Asset ) as AssetFROM Custom_InfoGROUP BY Zone_Num分组标志汇总函数分组标志四、SQL中的子句51 GROUP BY 子句 任务二:任务二:对于每个地区的每个网点,计算其客户数量、客户总资产、客户平均资产、单客户最大资产和单客户最小资产。四、SQL中的子句52
19、 GROUP BY 子句 任务二SELECT Zone_Num ,Branch_Num ,COUNT(*) as number ,SUM(Total_Asset) as Sum_Asset ,AVG(Total_Asset) as Avg_Asset ,MAX(Total_Asset) as Max_Asset ,MIN(Total_Asset) as Min_AssetFROM Custom_InfoGRORP BY Zone_Num ,Branch_Num 分组标志汇总函数分组标志四、SQL中的子句53 ORDER BY 子句 用途:用途:对输出结果按照一定次序进行排序。 任务一:任务一:
20、取出0200地区的所有客户记录,并按照客户总资产从小到大进行排列。四、SQL中的子句54 ORDER BY 子句 任务一SELECT *FROM Custom_InfoWHERE Zone_Num=0200ORDER BY Total_AssetOrder By 子句默认升序排列ASC四、SQL中的子句55 ORDER BY 子句 任务二:任务二:计算每个地区、每个网点的所有客户总资产,按照地区号从小到大从小到大的次序排列。对于同一个地区的各网点,按照所有客户总资产从大到小从大到小排列。四、SQL中的子句56 ORDER BY 子句 任务二SELECT Zone_Num ,Branch_Num
21、 ,SUM(Total_Asset) as Sum_AssetFROM Custom_InfoGRORP BY Zone_Num ,Branch_NumORDER BY Zone_Num ,Sum_Asset DESC分组标志汇总函数分组标志Order By 子句四、SQL中的子句57 HAVING 子句子句 用途:用途:对分组汇总后的数据进行限制筛选。 任务:任务:对于客户数量大于1的每个地区的每个网点,计算其客户数量、客户总资产、客户平均资产、单客户最大资产和单客户最小资产。四、SQL中的子句58 HAVING 子句SELECT Zone_Num ,Branch_Num ,COUNT(*)
22、 as number ,SUM(Total_Asset) as Sum_Asset ,AVG(Total_Asset) as Avg_Asset ,MAX(Total_Asset) as Max_Asset ,MIN(Total_Asset) as Min_AssetFROM Custom_InfoGRORP BY Zone_Num ,Branch_Num HAVING Number1分组标志汇总函数分组标志Having 子句四、SQL中的子句59CASE WHEN是SQL编程中常用的条件控制语句。新数据项加工新数据项加工汇总信息加工汇总信息加工筛选条件控制筛选条件控制CASE WHEN四、S
23、QL中的子句60 用途:用途:根据现有字段,利用Case When语句进行逻辑判断,可加工得到新的字段。 任务一:任务一:对于全体客户,按照其资产金额进行资产等级认定,输出其客户编号、姓名、总资产和资产等级资产等级。? ?Case When-新数据项加工新数据项加工四、SQL中的子句61SELECT Party_Id ,Name ,Total_Asset ,CASE WHEN Total_Asset5000 THEN 普通客户 WHEN Total_Asset50000 THEN 潜力客户 WHEN Total_Asset200000 THEN 中端客户A WHEN Total_Asset10
24、00000 THEN 中端客户B WHEN Total_Asset8000000 THEN 高端客户 ELSE 私人银行客户 END AS levelFROM Custom_Info四、SQL中的子句Case When-新数据项加工新数据项加工62 用途:用途:Case When 语句与汇总函数(如Sum函数)相结合,能够实现更加灵活的汇总信息加工功能。 任务二:任务二:统计80前与80后生人中,男、女客户的人数。Case When-汇总信息加工汇总信息加工四、SQL中的子句63SELECT CASE WHEN Birth_Dt =1000000 ELSE Total_Asset=500000
25、 END四、SQL中的子句Case When-筛选条件控制筛选条件控制66练习练习3统计男性、女性客户的数量和总资产分别是多少,按照从总资产从大到小的顺序排列。提示一:男、女性别的表示方法参见CASE WHEN语句的 任务一;提示二:先做分组汇总,再按照汇总字段进行排序。参考结果参考结果四、SQL中的子句67 一. SQL语言简介 二. SQL中的SELECT语句 三. SQL中的常用函数 四. SQL中的子句 五五. . SQLSQL中的表连接中的表连接目录68 表连接 在很多情况下,我们想要查询的内容分布在很多张不同的数据表中,这时就需要用到表的连接。所谓表的连接,就是按照一定的连接条件,
26、将两张或多张独立的数据表中的特定列拼接成一张合成表,在这张合成表上再进行各种操作(如创建新字段、汇总、排序等)就和我们之前讲述的操作方法基本一致了。 内连接: INNER JOIN 左/右连接: LEFT/RIGHT JOIN 外连接: FULL JOIN 合并: UNION/UNION ALL五、SQL中的表连接69数据表 五、SQL中的表连接70 内连接 用途:用途:将两张数据表拼接为一张,返回的记录要求在两张表中同时存在。 任务一:任务一:找到同时有资产和负债的客户,取出他们的客户编号、资产、负债以及资产与负债之和。五、SQL中的表连接71SELECT a.Id ,a.Asset ,b.
27、Loan ,a.Asset+b.Loan as AllFROM Asset as aINNER JOIN Loan as bON a.Id = b.Id 内连接 任务一Select 部分From 部分表连接 部分等值连接条件定义基表五、SQL中的表连接72 内连接 任务二:任务二:找到同时有资产和负债且资产大于负债的客户,取出他们的客户编号、资产和负债。五、SQL中的表连接73SELECT a.Id ,a.Asset ,b.LoanFROM Asset as aINNER JOIN Loan as bON a.Id = b.Id and a.Asset b.Loan 内连接 任务二定义基表等值
28、连接条件不等值连接条件五、SQL中的表连接74 左连接 用途:用途:将两张数据表拼接为一张,返回的记录以左表为准。 任务一:任务一:找出所有有资产的客户,取出他们的客户编号、资产和负债。五、SQL中的表连接75SELECT a.Id ,a.Asset ,coalesce ( b.Loan,0 ) as Loan FROM Asset as aLEFT JOIN Loan as bON a.Id = b.Id 左连接 任务一定义基表五、SQL中的表连接76 左连接 任务二:任务二:找出所有持有产品数量大于等于3的客户,取出他们的客户编号、持有产品数量、资产和负债,按持有产品数量从大到小排序。五、
29、SQL中的表连接77SELECT a.Id ,a.Product ,coalesce( b.Asset,0 ) as Asset ,coalesce( c.Loan,0 ) as LoanFROM Product as aLEFT JOIN Asset as bON a.Id = b.IdLEFT JOIN Loan as cON a.Id = c.IdWHERE a.product = 3ORDER BY a.Product DESC; 左连接 任务二定义基表连续使用两次左连接五、SQL中的表连接78 外连接 用途:用途:将两张数据表拼接为一张,在任何一张表中出现过的记录都将返回。 任务:任
30、务:找出所有拥有资产或有负债的客户(二者有其一即可),取出他们的客户编号、资产和负债。五、SQL中的表连接79 外连接SELECT coalesce ( a.Id,b.Id ) as Id ,coalesce ( a.Asset,0 ) as Asset ,coalesce ( b.Loan,0 ) as Loan FROM Asset as aFULL JOIN Loan as bON a.Id = b.Id五、SQL中的表连接80 合并 用途:用途:将两张数据表上下合并为一张(不需要连接条件),要求两张表的列数量和对应列的数据类型必须一致。其中union将去掉合并后重复的行,union a
31、ll则会保留合并后的重复行。 任务:任务:找出所有在Asset表或Loan表中出现过的客户,取出他们的客户编号。+五、SQL中的表连接81 UNION 和 UNION ALL的区别:SELECT a.IdFROM Asset as aUNIONSELECT b.IdFROM Loan as bSELECT a.IdFROM Asset as aUNION ALLSELECT b.IdFROM Loan as b五、SQL中的表连接82 横向连接 INNER JOIN:左右表交集 LEFT JOIN:以左表为准 纵向拼接 UNION:去除重复行 UNION ALL:不去除重复行 五、SQL中的表
32、连接83SELECT FROM left|inner join on WHERE Group By Having Order By asc|desc要展现的字段列表查询的开始表结果分组结果排序SELECTSELECT语法语法 需要连接的表和连接条件查询条件课程总结8485 养成良好的编程风格,可提高程序的可读性,利于后期的维护、复用。 当SQL语句扩展至数十、数百行后,若未按照一定的编写规则,则难以跟踪、除错。以下列出几条通用的规则: 1 1、关键字大写。、关键字大写。SQL语句不区分大小写,但子句开头的关键字通常采用大写形式。 2 2、断行。、断行。建议以SELECT、FROM、JOIN、W
33、HERE、GROUP BY、ORDER BY等关键字开头的语句,进行断行。 3 3、缩排、对齐。、缩排、对齐。嵌套子查询应缩排;select语句中的字段名应上下对齐;而where筛选条件中,以and、or开头的语句不但要缩排还要上下对齐。 4 4、语句注释。、语句注释。对业务代码、渠道代码、状态代码、复杂的筛选条件都应加中文注释,提高程序的可读性。SQL编程规则85常用技巧: 1 1、快速提取数据表中前、快速提取数据表中前5050行数据行数据. .select top 50 * from tablename where . 2 2、将选定内容变为注释或取消注释。、将选定内容变为注释或取消注释。
34、变为注释:Ctrl+/ 取消注释:Ctrl+Shift+/ 3 3、转换语句中的字母大小和小写。、转换语句中的字母大小和小写。变为小写:Ctrl+Shift+L 变为大写:Ctrl+Shift+U SQL编程规则86上机练习87案例: 统计二级分行辖内的各网点个人客户普通定期存款预计3个月内到期情况。 1.按网点统计到期情况:要求展现字段:网点号、网点名称、客户编号、客户名称、账号、到期金额、到期日期、客户手机号。 2.按客户提取到期清单:要求展现字段:网点号、网点名称、到期客户数、到期账户数、到期金额、预计3个月以内的到期客户数、预计3个月以内的到期账户数、预计3个月以内的到期金额、预计6个月以内的到期客户数、预计6个月以内的到期账户数、预计6个月以内的到期金额。谢谢!谢谢!88结束结束