SQL入门教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

最多的存款总额 21000
最少的存款总额 12000
Let’s do it!
客户内码 81000000001 81000000002 81000000003
客户名称 佩奇 乔治 奥特曼
支行号 8220010 8220010 8220030
活期余额 2000 3000 1000
定期余额 10000 10000 20000
ACCT_ID 20100000000001 20100000000002 20100000000004 20100000000008
ACCT_BAL 1000 300 8000 20
RIGHT JOIN 右关联
SELECT * FROM CUST_INFO A RIGHT JOIN DEP_ACCT B ON A.CUST_IN_CODE = B.CUST_IN_CODE
客户内码
客户名称
支行号
活期余额
81000000002
乔治
8220010
3000
81000000001
佩奇
8220010
2000
Let’s do it!
客户内码 81000000001 81000000002 81000000003
客户名称 佩奇 乔治 奥特曼
支行号 8220010 8220010 8220030
SQL入门
数据库和数据库系统
数据库(Database,DB)是指长期存储在计算机内的, 有组织的,可共享的数据的集合。数据库中的数据按一定 的数学模型组织、描述和存储,具有较小的冗余度,较高 的数据独立性和易扩展性,并可为各种用户共享。
数据库管理系统(Database Management System,简 称DBMS)是维护和管理数据库的软件,是位于用户与操 作系统之间的一个数据管理软件。我们这里只讨论关系型 数据库管理系统(RDBMS),如DB2、MySQL、Oracle、 SQL Server等。
ACCT_ID 20100000000001 20100000000002 20100000000004 20100000000008
FULL JOIN 全关联
SELECT * FROM CUST_INFO A FULL JOIN DEP_ACCT B ON A.CUST_IN_CODE = B.CUST_IN_CODE
SELECT 客户内码, 客户名称, 支行号, 活期余额, 定期余额 FROM 客户存款表;
SELECT * FROM 客户存款表;
Let’s do it!
客户内码 81000000001 81000000002 81000000003
客户名称 佩奇 乔治 奥特曼
支行号 8220010 8220010 8220030
ACCT_ID 20100000000001 20100000000002 20100000000004 20100000000008
ACCT_BAL 1000 300 8000 20
INNER JOIN 内关联
SELECT * FROM CUST_INFO A INNER JOIN DEP_ACCT B ON A.CUST_IN_CODE = B.CUST_IN_CODE
数据库和数据库系统之间的关系
应用程序1 应用程序2
用户
通信语言:SQL(DQL、DML、 DDL、DCL)
数据库管理 系统
数据库
SQL入门
SQL是什么?
结构化查询语言,全称是 Structured Query Language。 SQL 是一门 ANSI(American National Standards Institute 美国国家 标准化组织)标准的计算机语言。是数据库的核心语言,是高级 的非过程化编程语言。它功能强大,效率高,简单易学易维护。
ACCT_BAL 1000 300 8000 20
关联查询
表:CUST_INFO
表:DEP_ACCT
CUST_IN_CODE 81000000001 81000000002 81000000003
CUST_NAME 佩奇 乔治 奥特曼
CUST_IN_CODE 81000000001 81000000001 81000000003 81000000004
活期余额 2000 3000 1000
定期余额 10000 10000 20000
Q:查询出上表龙山支行活期余额大于等于1000元的客户的信息(展示 字段客户内码、客户名称、支行号、活期余额),并按活期余额从大到 小排序。
SELECT 客户内码, 客户名称, 支行号, 活期余额 FROM 客户存款表 WHERE 支行号 = ‘822010’AND 活期余额 >= 1000 ORDER BY 活期余额 DESC;
注意乔治没有存 款账号
CUST_IN_CODE 81000000001 81000000001 81000000003
CUST_NAME 佩奇 佩奇 奥特曼
CUST_IN_CODE 81000000001 81000000001 81000000003
ACCT_ID 20100000000001 20100000000002 20100000000004
ACCT_BAL 1000 300 NULL 8000
关联查询
表:CUST_INFO
表:DEP_ACCT
CUST_IN_CODE 81000000001 81000000002 81000000003
CUST_NAME 佩奇 乔治 奥特曼
CUST_IN_CODE 81000000001 81000000001 81000000003 81000000004
关联查询
表:CUST_INFO
表:DEP_ACCT
CUST_IN_CODE 81000000001 81000000002 81000000003
CUST_NAME 佩奇 乔治 奥特曼
CUST_IN_CODE 81000000001 81000000001 81000000003 81000000004
活期余额 2000 3000 1000
Q:查询出上表中的支行号,并进行去重。
SELECT DISTINCT 支行号 FROM 客户存款表;
支行号 822010 822030
定期余额 10000 10000 20000
Let’s do it!
客户内码 81000000001 81000000002 81000000003
ACCT_BAL 1000 300 8000
关联查询
表:CUST_INFO
表:DEP_ACCT
CUST_IN_CODE 81000000001 81000000002 81000000003
CUST_NAME 佩奇 乔治 奥特曼
CUST_IN_CODE 81000000001 81000000001 81000000003 81000000004
客户内码 81000000001 81000000001 81000000003 81000000004
存款账号 20100000000001 20100000000002 20100000000004 20100000000008
余额 1000 300 8000 20
存款分户表,一个存款账号一条 记录,即存款账号在表中唯一 (作为主键)
但就像英语一样,虽然是标准语言,但不同的数据库管理系统或 多或少地包含一些自己特定的方言。
SQL入门
SQL入门
表:客户存款表
元组(记录) 元组(记录) 元组(记录)
属性(字段) 客户内码 81000000001 81000000002 81000000003
属性(字段) 客户名称 佩奇 乔治 奥特曼
属性(字段) 支行号 8220010 8220020 8220030
属性(字段) 活期余额 2000 3000 1000
属性(字段) 定期余额 10000 10000 20000
字段类型主要包括:
字符型 VARCHAR、CHAR,比如”abc”, “数据分析”, “1” 数值型 INT、DECIMAL、DOUBLE,比如 1, 25.23 时间型 DATE、TIMESTAMP,比如 2019-05-31, 2019-05-31 15:00:00
定期余额 10000 10000 20000
关联查询
表:CUST_INFO
客户内码 81000000001 81000000002 81000000003
客户名称 佩奇 乔治 奥特曼
客户信息表,一个客户一条记录, 即客户内码在表中唯一(作为主 键)
本质上是将两张表组合成一张宽表
表:DEP_ACCT
Q:查询出每个支行的存款总额以及客户数。
SELECT 支行号, SUM(活期余额 + 定期余额) AS 存款总额, COUNT(客 户内码) AS 客户数 FROM 客户存款表 GROUP BY 支行号;
支行号 822010 822030
存款总额 25000 21000
客户数 2 1
单表查询小结
客户内码 81000000001 81000000002 81000000003
Let’s do it!
客户内码 81000000001 81000000002 81000000003
客户名称 佩奇 乔治 奥特曼
支行号 8220010 8220020 8220030
活期余额 2000 3000 1000
定期余额 10000 10000 20000
Q:查询出上表所有记录,所有字段。
关联查询
表:CUST_INFO
客户内码
客户名称
81000000001
佩奇
81000000002
乔治
81000000003
奥特曼
表:DEP_ACCT
客户内码
存款账号
余额
81000000001
20100000000001 1000
81000000001
20100000000002 300
81000000003
CUST_IN_CODE 81000000001 81000000001 81000000003 NULL
CUST_NAME 佩奇 佩奇 奥特曼 NULL
CUST_IN_CODE 81000000001 81000000001 81000000003 81000000004
ACCT_ID 20100000000001 20100000000002 20100000000004 20100000000008
客户名称 佩奇 乔治 奥特曼
支行号 8220010 8220010 8220030
SELECT 字段1,字段2,… FROM 表名 WHERE 筛选条件 GROUP BY 分组字段1,分组字段2… HAVING 分组后的筛选条件 ORDER BY 排序字段1,排序字段2…
活期余额 2000 3000 1000
ACCT_ID 20100000000001 20100000000002 20100000000004 20100000000008
ACCT_BAL 1000 300 8000 20
LEFT JOIN 左关联
SELECT * FROM CUST_INFO A LEFT JOIN DEP_ACCT B ON A.CUST_IN_CODE = B.CUST_IN_CODE
注意乔治没有存 款账号
CUST_IN_CODE 81000000001 81000000001 81000000002 81000000003
CUST_NAME 佩奇 佩奇 乔治 奥特曼
CUST_IN_CODE 81000000001 81000000001 NULL 81000000003
ACCT_ID 20100000000001 20100000000002 NULL 20100000000004
客户名称 佩奇 乔治 奥特曼
百度文库
支行号 8220010 8220010 8220030
活期余额 2000 3000 1000
定期余额 10000 10000 20000
Q:查询出上表存款最多的一个人的存款总额和存款最少的一个人的存 款总额。
SELECT MAX(活期余额 + 定期余额) AS 最多的存款总额, MIN(活期余 额 + 定期余额) AS 最少的存款总额 FROM 客户存款表;
20100000000004 8000
81000000004
20100000000008 20
关联关键字: INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN
内关联:只保留左右两表能匹配上的记录。 左关联:保留左表全部记录,并在右表匹配出能满足关联条件的信息。 右关联:保留右表全部记录,并在左表匹配出能满足关联条件的信息。 全关联:保留左右两表全部记录,并进行匹配。
相关文档
最新文档