您好,欢迎访问三七文档
SQL入门数据库和数据库系统数据库(Database,DB)是指长期存储在计算机内的,有组织的,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余度,较高的数据独立性和易扩展性,并可为各种用户共享。数据库管理系统(DatabaseManagementSystem,简称DBMS)是维护和管理数据库的软件,是位于用户与操作系统之间的一个数据管理软件。我们这里只讨论关系型数据库管理系统(RDBMS),如DB2、MySQL、Oracle、SQLServer等。数据库和数据库系统之间的关系应用程序1应用程序2用户数据库管理系统数据库通信语言:SQL(DQL、DML、DDL、DCL)SQL入门SQL是什么?结构化查询语言,全称是StructuredQueryLanguage。SQL是一门ANSI(AmericanNationalStandardsInstitute美国国家标准化组织)标准的计算机语言。是数据库的核心语言,是高级的非过程化编程语言。它功能强大,效率高,简单易学易维护。但就像英语一样,虽然是标准语言,但不同的数据库管理系统或多或少地包含一些自己特定的方言。SQL入门SQL入门客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822002030001000081000000003奥特曼8220030100020000表:客户存款表属性(字段)属性(字段)属性(字段)属性(字段)属性(字段)元组(记录)元组(记录)元组(记录)字段类型主要包括:字符型VARCHAR、CHAR,比如”abc”,“数据分析”,“1”数值型INT、DECIMAL、DOUBLE,比如1,25.23时间型DATE、TIMESTAMP,比如2019-05-31,2019-05-3115:00:00Let’sdoit!客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822002030001000081000000003奥特曼8220030100020000Q:查询出上表所有记录,所有字段。SELECT客户内码,客户名称,支行号,活期余额,定期余额FROM客户存款表;SELECT*FROM客户存款表;Let’sdoit!客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822001030001000081000000003奥特曼8220030100020000Q:查询出上表龙山支行活期余额大于等于1000元的客户的信息(展示字段客户内码、客户名称、支行号、活期余额),并按活期余额从大到小排序。SELECT客户内码,客户名称,支行号,活期余额FROM客户存款表WHERE支行号=‘822010’AND活期余额=1000ORDERBY活期余额DESC;客户内码客户名称支行号活期余额81000000002乔治8220010300081000000001佩奇82200102000Let’sdoit!客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822001030001000081000000003奥特曼8220030100020000Q:查询出上表中的支行号,并进行去重。SELECTDISTINCT支行号FROM客户存款表;支行号822010822030Let’sdoit!客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822001030001000081000000003奥特曼8220030100020000Q:查询出上表存款最多的一个人的存款总额和存款最少的一个人的存款总额。SELECTMAX(活期余额+定期余额)AS最多的存款总额,MIN(活期余额+定期余额)AS最少的存款总额FROM客户存款表;最多的存款总额最少的存款总额2100012000Let’sdoit!客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822001030001000081000000003奥特曼8220030100020000Q:查询出每个支行的存款总额以及客户数。SELECT支行号,SUM(活期余额+定期余额)AS存款总额,COUNT(客户内码)AS客户数FROM客户存款表GROUPBY支行号;支行号存款总额客户数822010250002822030210001单表查询小结客户内码客户名称支行号活期余额定期余额81000000001佩奇822001020001000081000000002乔治822001030001000081000000003奥特曼8220030100020000SELECT字段1,字段2,…FROM表名WHERE筛选条件GROUPBY分组字段1,分组字段2…HAVING分组后的筛选条件ORDERBY排序字段1,排序字段2…关联查询客户内码客户名称81000000001佩奇81000000002乔治81000000003奥特曼客户信息表,一个客户一条记录,即客户内码在表中唯一(作为主键)客户内码存款账号余额81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCT存款分户表,一个存款账号一条记录,即存款账号在表中唯一(作为主键)本质上是将两张表组合成一张宽表关联查询客户内码客户名称81000000001佩奇81000000002乔治81000000003奥特曼客户内码存款账号余额81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCT关联关键字:INNERJOIN内关联:只保留左右两表能匹配上的记录。LEFTJOIN左关联:保留左表全部记录,并在右表匹配出能满足关联条件的信息。RIGHTJOIN右关联:保留右表全部记录,并在左表匹配出能满足关联条件的信息。FULLJOIN全关联:保留左右两表全部记录,并进行匹配。关联查询CUST_IN_CODECUST_NAME81000000001佩奇81000000002乔治81000000003奥特曼CUST_IN_CODEACCT_IDACCT_BAL81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCTINNERJOIN内关联SELECT*FROMCUST_INFOAINNERJOINDEP_ACCTBONA.CUST_IN_CODE=B.CUST_IN_CODECUST_IN_CODECUST_NAMECUST_IN_CODEACCT_IDACCT_BAL81000000001佩奇8100000000120100000000001100081000000001佩奇810000000012010000000000230081000000003奥特曼81000000003201000000000048000注意乔治没有存款账号关联查询CUST_IN_CODECUST_NAME81000000001佩奇81000000002乔治81000000003奥特曼CUST_IN_CODEACCT_IDACCT_BAL81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCTLEFTJOIN左关联SELECT*FROMCUST_INFOALEFTJOINDEP_ACCTBONA.CUST_IN_CODE=B.CUST_IN_CODECUST_IN_CODECUST_NAMECUST_IN_CODEACCT_IDACCT_BAL81000000001佩奇8100000000120100000000001100081000000001佩奇810000000012010000000000230081000000002乔治NULLNULLNULL81000000003奥特曼81000000003201000000000048000注意乔治没有存款账号关联查询CUST_IN_CODECUST_NAME81000000001佩奇81000000002乔治81000000003奥特曼CUST_IN_CODEACCT_IDACCT_BAL81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCTRIGHTJOIN右关联SELECT*FROMCUST_INFOARIGHTJOINDEP_ACCTBONA.CUST_IN_CODE=B.CUST_IN_CODECUST_IN_CODECUST_NAMECUST_IN_CODEACCT_IDACCT_BAL81000000001佩奇8100000000120100000000001100081000000001佩奇810000000012010000000000230081000000003奥特曼81000000003201000000000048000NULLNULL810000000042010000000000820关联查询CUST_IN_CODECUST_NAME81000000001佩奇81000000002乔治81000000003奥特曼CUST_IN_CODEACCT_IDACCT_BAL81000000001201000000000011000810000000012010000000000230081000000003201000000000048000810000000042010000000000820表:CUST_INFO表:DEP_ACCTFULLJOIN全关联SELECT*FROMCUST_INFOAFULLJOINDEP_ACCTBONA.CUST_IN_CODE=B.CUST_IN_CODECUST_IN_CODECUST_NAMECUST_IN_CODEACCT_IDACCT_BAL81000000001佩奇8100000000120100000000001100081000000001佩奇810000000012010000000000230081000000002乔治NULLNULLNULL81000000003奥特曼81000000003201000000000048000NULLNULL810000000042010000000000820然后呢将多张表关联后形成一张宽表后,后续操作就等于单表查询了呀SELECTA.CUST_IN_CODE,A.CUST_NAME,SUM(B.ACCT_BAL)ASDEP_BALFROMCUST_INFOAINNERJOINDEP_ACCTBONA.CUST_IN_CODE=B.CUST_IN_CODEWHEREB.AC
本文标题:SQL入门教程
链接地址:https://www.777doc.com/doc-4739478 .html