SQL培训PPT-超实用

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

SQL培训2013年3月内容简介♦SQL指令:SQL如何被用来储存、读取、以及处理数据库之中的资料。♦表格处理:SQL如何被用来处理数据库中的表格。♦进阶SQL:介绍SQL进阶概念,以及如何用SQL来执行一些较复杂的运算。♦SQL实例:介绍一些典型的实例,以及与大规划相关的语句。SELECTSELECT栏位名FROM表格名;DISTINCT找出表格内的不同资料值的情况SELECTDISTINCT栏位名FROM表格名;例如:selectdistinctregion_namefromGEOGRAPHYt;WHERESELECT栏位名FROM表格名WHERE条件;SQL指令AND/ORSELECT栏位名FROM表格名WHERE简单条件{[AND|OR]简单条件}IN/NOTINSELECT栏位名FROM表格名WHERE栏位名IN('值一','值二',...)例:SELECT*FROMStore_InformationWHEREstore_nameIN('LosAngeles','SanDiego')BETWEEN......AND.......SQL指令SELECT栏位名FROM表格名WHERE栏位名BETWEEN'值一'AND'值二'例:SELECT*FROMStore_InformationWHEREDatesBETWEEN'Jan-06-1999'AND'Jan-10-1999'LIKE字符筛选(注意:区分大小写)SELECT栏位名FROM表格名WHERE栏位名LIKE{模式}例:SELECT*FROMStore_InformationWHEREstore_nameLIKE'%An%'SQL指令ORDERBY排序SELECT栏位名FROM表格名[WHERE条件]ORDERBY栏位名[ASC,DESC]ASC(默认)代表结果会以由小往大的顺序列出,而DESC代表结果会以由大往小的顺序列出例:SELECTstore_name,Sales,DatesFROMStore_InformationORDERBYSalesDESCGROUPBY分组SELECT栏位1,SUM(栏位2)FROM表格名GROUPBY栏位1SQL指令SELECTstore_name,SUM(Sales)FROMStore_InformationGROUPBYstore_nameALIAS别名SELECT表格别名.栏位1栏位别名FROM表格名表格别名selectt.store_name,sum(sales)合计fromSTORE_INFORMATIONtgroupbystore_name;函数AVG(平均)、COUNT(计数)、MAX(最大值)、MIN(最小值)、SUM(总合)SQL指令SELECT函数名(栏位名)FROM表格名selectcount(store_name)计数fromSTORE_INFORMATIONt;HAVING对函数产生的值来设定条件SELECT栏位1,SUM(栏位2)FROM表格名GROUPBY栏位1HAVING(函数条件)SELECTstore_name,SUM(sales)FROMStore_InformationGROUPBYstore_nameHAVINGSUM(sales)1500表格链接左连接(leftjoin),又称内部连接(innerjoin),在这个情况下,要两个表格内都有同样的值,那一笔资料才会被选出。SQL指令selectg.*,s.*fromgeographyg,store_informationswhereg.store_name=s.store_name笛卡儿连接selectg.*,s.*fromgeographyg,store_informations外部连接(outerjion),列出一个表格中每一笔的资料,无论它的值在另一个表格中有没有出现。在要选出所有资料的那个表格之后加上一个(+)selectg.store_name,sum(s.sales)salesfromgeographyg,store_informationswhereg.store_name=s.store_name(+)groupbyg.store_name;请注意:当第二个表格没有相对的资料时,SQL会传回NULL值。SQL指令CONCATENATE连接字符串有的时候,我们有需要将由不同栏位获得的资料串连在一起。每一种数据库都有提供方法来达到这个目的MySQL:CONCAT()Oracle:CONCAT(),||SQLServer:+CONCAT()的语法如下:CONCAT(字符串1,字符串2,字符串3,...)注意:Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字符串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字符串。例:selectg.region_name||''||g.store_namefromgeographyg;SQL指令SUBSTRING抓出一个栏位资料中的其中一部分MySQL:SUBSTR(),SUBSTRING()Oracle:SUBSTR()SQLServer:SUBSTRING()最常用到的方式如下(在这里我们用SUBSTR()为例):SUBSTR(str,pos):由str中,选出所有从第pos位置开始的字符。请注意,这个语法不适用于SQLServer上。SUBSTR(str,pos,len):由str中的第pos位置开始,选出接下去的len个字符。selectsubstr(store_name,3,6)fromgeographywherestore_name='LosAngeles';SQL指令TRIM移除SQL中的TRIM函数是用来移除掉一个字符串中的字头或字尾。最常见的用途是移除字首或字尾的空白。这个函数在不同的数据库中有不同的名称:MySQL:TRIM(),RTRIM(),LTRIM()Oracle:RTRIM(),LTRIM()SQLServer:RTRIM(),LTRIM()各种trim函数的语法如下:TRIM([[位置][要移除的字符串]FROM]字符串)[位置]的可能值为LEADING(起头),TRAILING(结尾),or(起头及结尾)。这个函数将把[要移除的字符串]从字符串的起头、结尾,或是起头及结尾移除。如果我们没有列出[要移除的字符串]是什么的话,那空白就会被移除。SQL指令LTRIM(字符串):将所有字符串起头的空白移除。RTRIM(字符串):将所有字符串结尾的空白移除。selectrtrim(store_name)fromgeographyg;--删除头和尾空白selecttrim(store_name)fromgeographyg;--删除头和尾字母“o”selecttrim(BOTH'o'fromstore_name)fromgeographyg;在起头处添加字段:lpad(tab_month,2,‘0’)月份格式改为“MM”2位selectlpad('7',2,'0')fromdualSQL指令内容简介♦SQL指令:SQL如何被用来储存、读取、以及处理数据库之中的资料。♦表格处理:SQL如何被用来处理数据库中的表格。♦进阶SQL:介绍SQL进阶概念,以及如何用SQL来执行一些较复杂的运算。♦SQL实例:介绍一些典型的实例。CREATETABLE建表语法是:CREATETABLE表格名(栏位1栏位1资料种类NOTNULL,栏位2栏位2资料种类,...)--CreatetablecreatetableGEOGRAPHY(region_nameVARCHAR2(20),store_nameVARCHAR2(20)NOTNULL)表格处理CREATETABLE建表语法是:CREATETABLE表格名(栏位1栏位1资料种类NOTNULL,栏位2栏位2资料种类,...)注意:字段类型char和varchar2区别CHAR的长度是固定的,而VARCHAR2的长度是可以变化的。比如,存储字符串“abc”,对于CHAR(20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2(20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。表格处理表格处理添加注释--AddcommentstothetablecommentontableGEOGRAPHYis'商店所属地理位置';--AddcommentstothecolumnscommentoncolumnGEOGRAPHY.region_nameis'地区名称';commentoncolumnGEOGRAPHY.store_nameis'商店名称';CONSTRAINT约束限制NOTNULLUNIQUECHECK主键(PrimaryKey)外来键(ForeignKey)表格处理UNIQUE唯一性UNIQUE限制是保证一个栏位中的所有资料都是有不一样的值。举例来说,在以下的语句中,CREATETABLECustomer(SIDintegerUnique,Last_Namevarchar(30),First_Namevarchar(30));SID栏位不能有重复值存在,而Last_Name及First_Name这两个栏位则是允许有重复值存在。请注意,一个被指定为主键的栏位也一定会含有UNIQUE的特性。相对来说,一个UNIQUE的栏位并不一定会是一个主键。表格处理CHECK核对CHECK限制是保证一个栏位中的所有资料都是符合某些条件。举例来说,在以下的语句中,CREATETABLECustomer(SIDintegerCHECK(SID0),Last_Namevarchar(30),First_Namevarchar(30));SID拦只能包含大于0的整数。注意,CHECK限制目前尚未被执行于MySQL数据库上。表格处理主键主键(PrimaryKey)中的每一笔资料都是表格中的唯一值。换言之,它是用来独一无二地确认一个表格中的每一行资料。主键可以是原本资料内的一个栏位,或是一个人造栏位(与原本资料没有关系的栏位)。主键可以包含一或多个栏位。当主键包含多个栏位时,称为组合键(CompositeKey)。注意,在用ALTERTABLE语句来添加主键之前,我们需要确认被用来当做主键的栏位是设定为『NOTNULL』;也就是说,那个栏位一定不能没有资料。Oracle:CREATETABLECustomer(SIDintegerPRIMARYKEY,Last_Namevarchar(30),First_Namevarchar(30));Oracle:ALTERTABLECustomerADDPRIMARYKEY(SID);表格处理•外来键•外来键是一个(或数个)指向另外一个表格主键的栏位。外来键的目的是确定资料的参考完整性(referentialintegrity)。换言之,只有被准许的资料值才会被存入数据库内。•举例来说,假设我们有两个表格:一个CUSTOMER表格,里面记录了所有顾客的资料;另一个ORDERS表格,里面记录了所有顾客订购的资料。在这里的一个限制,就是所有的订购资料中的顾客,都一定是要跟在CUSTOMER表格中存在。在这里,我们就会在ORDERS表格中设定一个外来键,而这个外来键是指向CUSTOMER表格中的主键。这样一来,我们就可以确定所有在ORDERS表格中的顾客都存在CUSTOMER表格中。换句话说,ORDERS表格之中,不能有任何顾客是不存在于CUSTOMER表格中的资料。表格处理表格处理在以上的例子中,ORDERS表格中的customer_SID栏位是一个指向CUSTOMERS表格中SID栏位的外来键。表格处理CREATEVIEW视图视观表(Views)可以被当作是虚拟表格。它跟表格的不同是,表格中有实际储存资料,而视观表是建立在表格之上的一个架构,它本身并不实际储存资料。建立一个视观表的语法如下:

1 / 57
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功