“1+X”(初級)03-SQL語言基礎_第1頁
“1+X”(初級)03-SQL語言基礎_第2頁
“1+X”(初級)03-SQL語言基礎_第3頁
“1+X”(初級)03-SQL語言基礎_第4頁
“1+X”(初級)03-SQL語言基礎_第5頁
已閱讀5頁,還剩86頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

SQL語言基礎學習完本課程后,你將能夠:1.了解SQL的基本概念、發(fā)展歷程、分類等2.掌握SQL中DDL、DML、DQL相關(guān)語句的使用3.掌握SQL的高級用法4.掌握阿里云大數(shù)據(jù)計算服務MaxCompute

SQL與標準SQL的差異課程目標課程目錄1.什么是SQL1.1SQL的產(chǎn)生和發(fā)展1.2

SQL的分類1.3

SQL與大數(shù)據(jù)分析2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹結(jié)構(gòu)化查詢語言(StructuredQueryLanguage),簡稱SQL,是數(shù)據(jù)庫編程的核心語言。SQL的發(fā)展是從1974年開始的,其發(fā)展過程如下:1974年-由Boyce和Chamberlin提出,當時稱SEQUEL。1976年-IBM公司的Sanjase研究所在研制RDBMSSYSTEMR時改為SQL。1979年-Oracle公司發(fā)表第一個基于SQL的商業(yè)化RDBMS產(chǎn)品。1982年-IBM公司出版第一個RDBMS語言SQL/DS。1985年-IBM公司出版第一個RDBMS語言DB2。1986年-美國國家標準化組織ANSI宣布SQL作為數(shù)據(jù)庫工業(yè)標準。SQL是一個標準的數(shù)據(jù)庫語言,是面向集合的描述性非過程化語言。SQL的產(chǎn)生和發(fā)展課程目錄1.什么是SQL1.1SQL的產(chǎn)生和發(fā)展1.2

SQL的分類1.3

SQL與大數(shù)據(jù)分析2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹SQL語言有以下三大類:數(shù)據(jù)查詢語言DQL,數(shù)據(jù)操縱語言DML,數(shù)據(jù)定義語言DDL。1)DDL(DataDefinitionLanguage):數(shù)據(jù)定義語言,用于創(chuàng)建、修改、刪除數(shù)據(jù)庫中的對象,例如:數(shù)據(jù)庫、表等,分別為:CREATE:創(chuàng)建ALTER:修改DROP:刪除2)DML(DataManipulationLanguage):數(shù)據(jù)操縱語言,用于對表中的數(shù)據(jù)進行新增、刪除、修改操作,分別為:INSERT:插入DELETE:刪除UPDATE:更新3)DQL(DataQueryLanguage):數(shù)據(jù)查詢語言,用于查詢中的數(shù)據(jù),分別為:SELECT、FORM、WHERE、OEDERBY、GROUPBY、HAVING等子句。SQL的分類課程目錄1.什么是SQL1.1SQL的產(chǎn)生和發(fā)展1.2

SQL的分類1.3

SQL與大數(shù)據(jù)分析2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹SQL與大數(shù)據(jù)分析SQL的強大功能語法簡單適用于數(shù)據(jù)分析的自然語言,基于關(guān)系代數(shù)、面向集合。SQL的語法相對于其他編程語言非常簡單,常用的關(guān)鍵字也就幾個,select、from、where、join、if等。沒有像Java、C++等編程語言定義的類、對象、繼承之類的復雜概念。高效的語言聲明式語言,直接表述想要的結(jié)果,而非獲得方式。完成同樣的統(tǒng)計功能,SQL代碼量較少。容易理解很容易將SQL代碼映射到二維表中的數(shù)據(jù),不同操作的代碼其實就是對應著二維表的不斷變換,相對容易理解。SQL與大數(shù)據(jù)分析誰在用SQL?只要跟數(shù)據(jù)相關(guān)的從業(yè)者都應該掌握SQL,在編程越來越普及的背景下,SQL并不是程序員專有技能。數(shù)據(jù)開發(fā)、數(shù)據(jù)庫工程師可以說是數(shù)據(jù)直接提供方,將采集的數(shù)據(jù)進行合理的組織,創(chuàng)建二維表存儲數(shù)據(jù),設計數(shù)據(jù)倉庫模型,以便分析團隊能夠便捷地、快速地獲取到想要的數(shù)據(jù)。數(shù)據(jù)分析、數(shù)據(jù)挖掘工程師做挖掘的數(shù)據(jù)很可能來自數(shù)據(jù)倉庫,使用SQL統(tǒng)計可以非常方便地了解數(shù)據(jù)、分析數(shù)據(jù),與數(shù)據(jù)團隊之間溝通成本更低。產(chǎn)品經(jīng)理和運營產(chǎn)品和運營會經(jīng)常進行數(shù)據(jù)分析,他們分析的數(shù)據(jù)最常見的來源是BI團隊提供的報表,但這種方式非常不靈活。因此對于產(chǎn)品和運營如果能掌握SQL自助地分析會大大提升分析效率。課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)2.1創(chuàng)建數(shù)據(jù)庫和表2.2修改數(shù)據(jù)庫和表2.3刪除數(shù)據(jù)庫和表3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹創(chuàng)建數(shù)據(jù)庫語法結(jié)構(gòu)使用createdatabase或createschema命令可以創(chuàng)建數(shù)據(jù)庫。其語法結(jié)構(gòu)如下。創(chuàng)建數(shù)據(jù)庫是指在數(shù)據(jù)庫系統(tǒng)中劃分一塊空間,用來存儲相應的數(shù)據(jù)。這是進行表操作的基礎,也是進行數(shù)據(jù)庫管理的基礎?!纠縿?chuàng)建一個名稱為mysqltest的數(shù)據(jù)庫。create{database|schema}[ifnotexists]databasename[default]charactersetcharset_name|[default]collatecollation_name;createdatabaseifnotexistsmysqltest;創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫在創(chuàng)建數(shù)據(jù)庫時,數(shù)據(jù)庫命名有以下幾項規(guī)則:不能與其他數(shù)據(jù)庫重名,否則將發(fā)生錯誤。名稱可以由任意字母、阿拉伯數(shù)字、下劃線(_)和“$”組成,可以使用上述的任意字符開頭,但不能使用單獨的數(shù)字,否則會造成它與數(shù)值相混淆。名稱最長可為64個字符,而別名最多可長達256個字符不能使用關(guān)鍵字作為數(shù)據(jù)庫名、表名。在默認情況下,Windows下數(shù)據(jù)庫名、表名的大小寫是不敏感的,而在Linux下數(shù)據(jù)庫名、表名的大小寫是敏感的。如果為了便于數(shù)據(jù)庫在平臺間進行移植,可以采用小寫來定義數(shù)據(jù)庫名和表名。創(chuàng)建數(shù)據(jù)表創(chuàng)建表的語法結(jié)構(gòu)表決定了數(shù)據(jù)庫的結(jié)構(gòu),表是存放數(shù)據(jù)的地方,一個庫需要什么表,各數(shù)據(jù)庫表中有什么樣的列,是要合理設計的。創(chuàng)建表的語法結(jié)構(gòu)如下:其中,column_definition:字段的定義。包括指定字段名、數(shù)據(jù)類型、是否允許空值,指定默認值、主鍵約束、唯一性約束、注釋字段名、是否為外鍵,以及字段類型的屬性等。字段的定義具體格式描述如下:

col_nametype[notnull|null][defaultdefault_value][auto_increment][unique[key]|[primary]key][comment'string'][reference_definition]create[temporary]table[ifnotexists]table_name[([column_definition],...|[index_definition])];創(chuàng)建數(shù)據(jù)表例:創(chuàng)建表stations。CREATETABLEstations( station_idBIGINTCOMMENT'站點ID', station_nameSTRINGCOMMENT'站點名稱', station_citySTRINGCOMMENT'站點所屬地市', station_latSTRINGCOMMENT'站點緯度', station_lonSTRINGCOMMENT'站點經(jīng)度');課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)2.1創(chuàng)建數(shù)據(jù)庫和表2.2修改數(shù)據(jù)庫和表2.3刪除數(shù)據(jù)庫和表3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹修改數(shù)據(jù)庫數(shù)據(jù)庫創(chuàng)建后,如果需要,可以修改數(shù)據(jù)庫的參數(shù)。修改數(shù)據(jù)庫的語法格式如下:【例】將mysqltest庫修改字符集為gb2312,校對原則為gb2312_chinese_ci命令和運行結(jié)果如下: alter{database|schema}[db_name][default]charactersetcharset_name|[default]collatecollation_name;alterdatabasemysqltestdefaultcharactersetgb2312collategb2312_chinese_ci;修改數(shù)據(jù)表修改表是指修改數(shù)據(jù)庫中已存在的表的定義。修改表比重新定義表簡單,不需要重新加載數(shù)據(jù),也不會影響正在進行的服務。通過altertable語句來修改表。修改表包括增加字段、刪除字段、修改表名、修改字段數(shù)據(jù)類型、修改字段名、修改字段的排列位置、更改默認存儲引擎和刪除表的外鍵約束等。修改表語法格式。修改數(shù)據(jù)庫表語法格式如下:alter[ignore]tabletbl_namealtertable’books’

+add[column]column_definition[first|aftercol_name]//添加字段addcolumn‘book_name’

varchar(30);|change[column]old_col_namecolumn_definition//重命名字段change‘book_name’

‘new_book_name’;

|modify[column]column_definition[first|aftercol_name]//修改字段數(shù)據(jù)類型|drop[column]col_name //刪除列|rename[TO]new_tbl_name //對表重命名|orderbycol_name //按字段排序|convertTOcharactersetcharset_name[collatecollation_name]//將字符集轉(zhuǎn)換為二進制|[default]charactersetcharset_name[collatecollation_name]//修改表的默認字符集修改數(shù)據(jù)表altertable用于更改原有表的結(jié)構(gòu)。例如,可以增加或刪減字段、重新命名字段或表,還可以修改默認字符集。(1)增加字段。在創(chuàng)建表時,表中的字段就已經(jīng)定義完成。如果要增加新的字段,可以通過altertable語句進行增加。(2)修改表名。表名可以在一個數(shù)據(jù)庫中唯一的確定一張表。數(shù)據(jù)庫系統(tǒng)通過表名來區(qū)分不同的表。(3)修改字段的數(shù)據(jù)類型。altertable語句也可以修改字段的數(shù)據(jù)類型。(4)刪除字段。刪除字段是指刪除已經(jīng)定義好的表中的某個字段。【例】在student表的Email列后面增加一列address。alter

table

studentaddaddressvarchar(30)notnullafterEmail;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)2.1創(chuàng)建數(shù)據(jù)庫和表2.2修改數(shù)據(jù)庫和表2.3刪除數(shù)據(jù)庫和表3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹刪除數(shù)據(jù)庫刪除數(shù)據(jù)庫是指在數(shù)據(jù)庫系統(tǒng)中刪除已經(jīng)存在的數(shù)據(jù)庫。刪除數(shù)據(jù)庫之后,原來分配的空間將被收回。刪除數(shù)據(jù)庫語法格式如下:例如,刪除mysqltest庫命令如下:需要注意的是,刪除數(shù)據(jù)庫會刪除該數(shù)據(jù)庫中所有的表和所有數(shù)據(jù)。因此,刪除數(shù)據(jù)庫前最好存有備份。

dropdatabasemysqltest;dropdatabase[ifexists]db_name刪除數(shù)據(jù)表刪除表是指刪除數(shù)據(jù)庫中已存在的表。刪除表時,會刪除表中的所有數(shù)據(jù)。因此,在刪除表時要特別注意。刪除表的語法格式如下:droptabletable_name課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)3.1表記錄的插入3.2表記錄的修改3.3表記錄的刪除4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹表記錄的插入使用insertinto語句添加數(shù)據(jù),語法格式:說明:(1)使用insert語句可以向表中插入一行數(shù)據(jù),也可以插入多行數(shù)據(jù),最好一次插入多行數(shù)據(jù),各行數(shù)據(jù)之間用“,”分隔。(2)values子句:包含各列需要插入的數(shù)據(jù)清單,數(shù)據(jù)的順序要與列的順序相對應。若表名后不給出列名,則在values子句中要給出每一列的值,如果列值為空,則值必須置為null,否則會出錯。insert

[into]table_name[(col_name,...)]values({expr|default},...),(...),...|setcol_name={expr|default},...表記錄的插入例:往表dim_product插入數(shù)據(jù)insertinto`dim_product`(`product_id`,`product_name`,`price`,`product_category_id`)values('1','信封',25.83,'1'),('2','剪刀,尺子,鋸',42.25,'1'),('3','夾子及其配件',56.52,'1'),('4','家用電器',72.18,'1'),('5','容器,箱子',80.53,'1'),('6','標簽',5.49,'1'),('7','橡皮筋',2.96,'1'),('8','筆、美術(shù)用品',9.57,'1'),('9','紙張',14.36,'1'),('10','書架',170.27,'2'),('11','辦公裝飾品',33.90,'2'),('12','桌子',220.85,'2'),('13','椅子',181.98,'2'),('14','辦公機器',543.36,'3'),('15','復印機、傳真機',744.37,'3'),('16','電腦配件',42.12,'3'),('17','電話通信產(chǎn)品',98.64,'3');課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)3.1表記錄的插入3.2表記錄的修改3.3表記錄的刪除4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹表記錄的修改用update...set...命令可以修改一個表的數(shù)據(jù)。一般表記錄修改的語法格式如下:說明:(1)set子句:根據(jù)where子句中指定的條件,對符合條件的數(shù)據(jù)行進行修改。若語句中不設定where子句,則更新所有行(2)expr1、expr2……可以是常量、變量或表達式??梢酝瑫r修改所在數(shù)據(jù)行的多個列值,中間用逗號隔開?!纠繉W號生的課程號為c08106的平時成績daily修改為80分。updatetable_namesetcol_name1=[,col_name2=expr2...][where子句]updatescoresetdaily=80wherestudentno=&&courseno=‘c08106’;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)3.1表記錄的插入3.2表記錄的修改3.3表記錄的刪除4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹表記錄的刪除利用delete…from…語句可以從單個表中刪除指定表數(shù)據(jù),一般表記錄刪除的語法格式如下:說明:(1)quick修飾符:可以加快部分種類的刪除操作的速度。(2)from子句:用于指定從何處刪除數(shù)據(jù)。(3)where子句指定的刪除條件。如果省略where子句則刪除該表的所有行。(4)orderby子句:各行按照子句中指定的順序進行刪除,此子句只在與limit聯(lián)用時才起作用。(5)limit子句:用于告知服務器在控制命令被返回到客戶端前被刪除的行的最大值。(6)數(shù)據(jù)刪除后將不能恢復,因此,在執(zhí)行刪除之前一定要對數(shù)據(jù)做好備份。delete[low_priority][quick][ignore]fromtbl_name[where子句][orderby子句][limitrow_count]表記錄的刪除【例】刪除student01表中入學成績低于750分記錄。命令如下:deletefromstudent01whereentrance<750;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)查詢(select)select語句是SQL語言從數(shù)據(jù)庫中獲取信息的一個基本語句。該語句可以實現(xiàn)從一個或多個數(shù)據(jù)庫中的一個或多個表中查詢信息,并將結(jié)果顯示為另外一個二維表的形式,稱之為結(jié)果集(resultset)。select語句的基本的語法格式可歸納如下:select[all|distinct]selection_list fromtable_source[wheresearch_condition] [groupbygrouping_columns][withrollup] [havingsearch_condition][orderbyorder_expression[asc|desc]] [limitcount]查詢(select)(1)使用select語句查詢一個數(shù)據(jù)表。使用select語句時,首先要確定所要查詢的列?!?”代表所有的列?!纠坎樵僼eaching數(shù)據(jù)庫course表中的所有數(shù)據(jù)。(2)查詢表中的指定列。針對表中的多列進行查詢,只要在select后面指定要查詢的列名即可,多列之間用“,”分隔?!纠坎樵僺tudent表中的studentno、sname和phone數(shù)據(jù)。(3)可以從一個或多個表中獲取數(shù)據(jù)。使用select語句進行查詢,需要確定所要查詢的數(shù)據(jù)在哪個表中,或在哪些表中,在對多個表進行查詢時,同樣使用“,”對多個表進行分隔。進行多表查詢,主要采用多表連接或子查詢的方式,也可以通過where子句中使用連接運算來確定表之間的聯(lián)系,然后根據(jù)這個條件返回查詢結(jié)果。select*fromcourse;selectstudentno,sname,phonefromstudent;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)別名(as)為字段取別名利用select語句查詢數(shù)據(jù)時,輸出項一般顯示創(chuàng)建表時定義的字段名。MySQL可以為查詢顯示的每個輸出字段或表達式取一個別名,以增加結(jié)果集的可讀性。例如,可以用as關(guān)鍵字給字段取一個中文名。實現(xiàn)給select子句中的各項取別名其語法格式為:select項的原名as別名

【例】在student表中查詢出生日期在2001年以后的學生的學號、姓名、電話和年齡。分析:可以通過as為列或表達式更改名稱,增加可讀性。selectstudentnoas'學號',snameas'姓名',phoneas'手機號',year(now())-year(birthdate)as'年齡‘

fromstudentwhereyear(birthdate)>2001;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)去重(distinct)使用謂詞過濾記錄如果希望一個列表沒有重復值,可以利用distinct子句從結(jié)果集中除去重復的行。當使用distinct子句時,需要注意以下事項:(1)選擇列表的行集中,所有值的組合決定行的唯一性。(2)數(shù)據(jù)檢索包含任何唯一值組合的行,如果不指定distinct子句則將所有行返回到結(jié)果集中?!纠吭趕core表中查詢期末成績中有高于95的學生的學號和課程號,并按照學號排序。分析:不管學生有幾門課的成績高于95,只要有一門就可以顯示,利用distinct子句可將重復行消除。selectdistinctstudentno,snamefromscorewherefinal>95;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)過濾(where)使用where子句過濾結(jié)果集查詢符合指定條件的記錄數(shù)據(jù)。如果要從很多記錄中查詢出指定的記錄,那么就需要一個查詢的條件。設定查詢條件應用的是where子句,通過where子句可以實現(xiàn)很多復雜的條件查詢。在使用where子句時,需要使用一些比較運算符來確定查詢的條件。【例】查詢表student中入學成績在800分以上的學生的學號、姓名和電話信息。分析:本例中要求輸出學號、姓名和電話信息,即為select子句輸出表列數(shù)據(jù)源為表student,條件為入學成績在800分以上。selectstudentno,sname,phonefromstudentwhereentrance>800;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)集合判斷(in)帶in關(guān)鍵字的查詢in關(guān)鍵字可以判斷某個字段的值是否在于指定的集合中。如果字段的值在集合中,則滿足查詢條件,該記錄將被查詢出來;如果不在集合中,則不滿足查詢條件。實際上,使用in搜索條件相當于用or連接兩個比較條件,如“xin(10,15)”相當于表達式“x=10orx=15”。也可以使用notin關(guān)鍵詞查詢不在某取值范圍內(nèi)的記錄行數(shù)據(jù)?!纠坎樵儗W號分別為的1111、2222和3333的學生學號、課程號、平時成績和期末成績。分析:檢索條件中枚舉某些確定值的范圍,一般可以利用in關(guān)鍵字實現(xiàn)。selectstudentno,

courseno,

daily,

finalfromscorewherestudentnoin(‘1111’,2222’,3333');課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)范圍條件(between

and)帶betweenand的范圍查詢在where子句中,可以使用between搜索條件檢索指定范圍內(nèi)的行。使用between搜索條件時,使用between搜索條件相當于用and連接兩個比較條件,如“xbetween10and27”相當于表達式“x>=10andx<=27”。由此可見,在生成結(jié)果集中,邊界值也是符合條件的。檢索條件指定排除某個范圍的值,一般可以利用notbetween關(guān)鍵字實現(xiàn)?!纠坎樵冞x修課程號為c05109的學生學號和期末成績,并且要求平時成績在80到95之間。分析:檢索條件設置在某個的范圍內(nèi),一般可以利用between關(guān)鍵字實現(xiàn)。selectstudentno,finalfromscorewherecourseno='c05109’anddailybetween80and95;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)模糊匹配(like)帶like的字符匹配查詢使用通配符結(jié)合的like搜索條件,通過進行字符串的比較來選擇符合條件的行。當使用like搜索條件時,模式字符串中的所有字符都有意義,包括開頭和結(jié)尾的空格。like主要用于字符類型數(shù)據(jù)。字符串內(nèi)的英文字母和漢字都算一個字符。也可用通配符并使用notlike作為查詢條件。like屬于較常用的比較運算符,通過它可以實現(xiàn)模糊查詢。它有兩種通配符:“%”和下劃線“_”:“%”可以匹配一個或多個字符,可以代表任意長度的字符串,長度可以為0。“-_”只匹配一個字符。

【例】在student表中顯示所有姓馬的學生的姓名、生日和Email。分析:設置where條件實現(xiàn)上述要求,需要采用like邏輯運算。Like操作符可以和通配符一起將列的值與某個特定的模式作比較,列的數(shù)據(jù)類型可以是任何字符串類型。selectsname,birthdate,emailfromstudentwheresnamelike‘馬%'';課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)空值查詢(is

null)用isnull關(guān)鍵字查詢空值涉及空值的查詢用null來表示。createtable語句或altertable語句中的null表明在列中允許存在被稱為null的特殊數(shù)值,它不同于數(shù)據(jù)庫中的其他任何值。在select語句中,where子句通常會返回比較的計算結(jié)果為真的行。那么,在where子句中,如何處理null的值的比較呢?為了取得列中含有null的行,MySQL語句包含了操作符功能is[not]null。一個字段值是空值或者不是空值,要表示為:“isnull”或“isnotnull”。不能表示為:“=null”或“<>null”。如果寫成“字段=null”或“字段<>null”,系統(tǒng)的運行結(jié)果都直接處理為null值,按照false處理而不報錯。where子句有以下通用格式:columnis[not]null【例】在se_score表中查詢存在成績?yōu)榭盏膶W生的學號和課程號。分析:以成績?yōu)榭罩底鳛椴樵儣l件,即可查到學生的缺考狀況。selectstudentno,coursenofromse_coursewherescoreisnull;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)多條件查詢(and)帶and的多條件查詢where子句的主要功能是利用指定的條件選擇結(jié)果集中的行。符合條件的行出現(xiàn)在結(jié)果集中,不符合條件的行將不出現(xiàn)在結(jié)果集中。利用where子句指定行時,條件表達式中的字符型和日期類型值要放到單引號內(nèi),數(shù)值類型的值直接出現(xiàn)在表達式中?!纠吭趕core表中顯示期中高于90分、期末成績高于85分的學生學號、課程號和成績。分析:設置where條件實現(xiàn)上述要求,需要采用and邏輯運算,將兩個比較運算表達式連接起來。selectstudentno,courseno,daily,finalfromscorewheredaily>=90andfinal>=85;多條件查詢(or)帶or的多條件查詢帶or的多條件查詢,實際上是指只要符合多條件中的一個,記錄就會被搜索出來;如果不滿足這些查詢條件中的任何一個,這樣的記錄將被排除掉。or可以用來連接兩個條件表達式。而且,可以同時使用多個or關(guān)鍵字連接多個條件表達式?!纠坎樵冇嬎銠C學院的具有高級職稱教師的教師號、姓名和從事專業(yè)。分析:where子句設置的條件包括部門和職稱,其中高級職稱又包括教授和副教授兩類,需要包括or和and兩種邏輯運算。selectteacherno,tname,majorfromteacherwheredepartment='計算機學院'and(prof='副教授'orprof='教授');課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)排序(order

by)使用orderby子句對結(jié)果集排序利用orderby子句可以對查詢的結(jié)果進行升序(asc)或降序(desc)排列。排序可以依照某個列的值,若列值相等則根據(jù)第二個屬性的值,依此類推。利用orderby子句進行排序,需要注意如下事項和原則:(1)默認情況下,結(jié)果集按照升序排列。也可以在輸出項的后面加上關(guān)鍵字desc來實現(xiàn)降序輸出。如果對含有null值的列進行排序時,如果是按升序排列,null值將出現(xiàn)在最前面,如果是按降序排列,null值將出現(xiàn)在最后。(2)orderby子句包含的列并不一定出現(xiàn)在選擇列表中。(3)orderby子句可以通過指定列名、函數(shù)值和表達式的值進行排序。(4)orderby子句不可以使用text、ntext或image類型的列。(5)在orderby子句中可以同時指定多個排序項?!纠吭趕tudent表中查詢高于850分的學生學號、姓名和入學成績,并按照入學成績的降序排列。分析:升序asc是默認值,而降序desc必須表明,也可以給字段取別名。selectstudentno學號,sname姓名,entrance入學成績fromstudentwhereentrance>850orderbyentrancedesc;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)分組(group

by

&

having)groupby子句groupby子句可以將查詢結(jié)果按屬性列或?qū)傩粤薪M合在行的方向上進行分組,每組在屬性列或?qū)傩粤薪M合上具有相同的聚合值。如果聚合函數(shù)沒有使用groupby子句,則只為select語句報告一個聚合值。將一列或多列定義成為一組,使組內(nèi)所有的行在那些列中的數(shù)值相同。出現(xiàn)在查詢的select列表中的每一列都必須同時出現(xiàn)在groupby子句中。使用groupby關(guān)鍵字來分組。單獨使用groupby關(guān)鍵字,查詢結(jié)果只顯示每組的一條記錄?!纠坷胓roupby子句對score表數(shù)據(jù)分組,顯示每個學生的學號和平均總評成績??傇u成績計算公式如下:總評成績=daily*0.3+final*0.7分析:通過學號分組,可以求出每個學生的平均總評成績。avg()函數(shù)用于求平均值,round()函數(shù)用于對平均值的某位數(shù)據(jù)進行四舍五入。selectstudentno學號,round(avg(daily*0.3+final*0.7),2)as'平均分’fromscoregroupbystudentno;分組(group

by

&

having)having和where都是篩選,只有那些滿足搜索條件的行才用來構(gòu)造結(jié)果集。區(qū)別: where在select和groupby前面執(zhí)行,在結(jié)果返回之前起篩選作用,不能用聚合函數(shù)或別名; having在select和groupby后面執(zhí)行,在結(jié)果返回之后起篩選作用,可以用聚合函數(shù)或別名。having子句通常與groupby子句結(jié)合使用。也可以不帶groupby,此時having不能用聚合函數(shù)。標準SQL要求having必須指定group

by指定的列,或者是那些出現(xiàn)在聚合函數(shù)(比如sum)中的列。但是MySQL同時也支持having指定那些出現(xiàn)在select中的列,以及外部子查詢中的列?!纠坎樵儗W號在100以內(nèi),總分超過300分的學生學號和總分。分析:可以利用where篩選學號,利用having篩選分組結(jié)果即可。selectstudentno學號,sum(daily*0.3+final*0.7)as'總分’fromscorewherestudentno<100groupbystudentnohaving總分>=300;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)數(shù)量限制(limit)用limit限制查詢結(jié)果的數(shù)量limit是用來限制查詢結(jié)果的數(shù)量的子句??梢灾付ú樵兘Y(jié)果從哪條記錄開始顯示。還可以指定一共顯示多少條記錄。limit可以指定初始位置,也可以不指定初始位置?!纠坎樵僺tudent表的學號、姓名、出生日期和電話,按照entrance進行降序排列,顯示前3條記錄。使用limit還可以從查詢結(jié)果的中間部分取值。首先要定義兩個參數(shù),參數(shù)1是開始讀取的第1條記錄的編號(注意在總查詢結(jié)果中,第1條記錄編號為0);參數(shù)2是要查詢記錄的個數(shù)。【例】查詢score表中,期末成績final高于85分的,按照平時成績daily進行升序排列,從編號2開始,查詢5條記錄。selectstudentno,sname,birthdate,phonefromstudentorderbyentrancedesclimit3;select*fromscorewherefinal>85orderbydailyasclimit2,5;課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)4.1查詢(Select)4.2別名(

As

)4.3去重(Distinct)4.4過濾(Where)4.5集合判斷(In)5.

SQL高級應用6.

MaxCompute

SQL介紹4.6范圍條件(Betweenand)4.7模糊匹配(Like)4.8空值查詢(Isnull)4.9多條件查詢(And/Or)4.10排序(OrderBy)4.11分組(GroupBy&Having)4.12數(shù)量限制(Limit)4.13分支判斷(Casewhen)分支判斷(case

when)用case

when分支表達式來判斷條件,

提供兩種casewhen語法格式【例】根據(jù)每個顧客的購買次數(shù),將顧客分級SELECTcustomerName,

orderCount,CASEorderCount

WHEN1THEN'One-timeCustomer'WHEN2THEN'RepeatedCustomer'WHEN3THEN'FrequentCustomer'ELSE'LoyalCustomer’

ENDcustomerTypeFROM

cte

ORDERBYcustomerName;CASEcase_valueWHENwhen_valueTHEN

statement_list[WHENwhen_valueTHEN

statement_list]...[ELSEstatement_list]ENDCASECASEWHENsearch_conditionTHENstatement_list[WHENsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDCASE課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用5.1聯(lián)結(jié)查詢5.2子查詢5.3常用函數(shù)6.

MaxCompute

SQL介紹聯(lián)結(jié)查詢-合并(union)1)

用union連接查詢結(jié)果UNION操作符用于連接兩個以上的SELECT語句的結(jié)果組合到一個結(jié)果集合中。MySQLUNION操作符語法格式DISTINCT:

可選,刪除結(jié)果集中重復的數(shù)據(jù)。默認情況下UNION操作符已經(jīng)刪除了重復數(shù)據(jù),所以DISTINCT修飾符對結(jié)果沒啥影響。ALL:

可選,返回所有結(jié)果集,包含重復數(shù)據(jù)。操作對應的各個子查詢的列個數(shù)、名稱和類型必須一致?!纠坎樵僺ale_detail表的所有杭州地區(qū)和上海地區(qū)的記錄,并將它們合并起來。Select*fromsale_detailwhereregion=hangzhouunionallSelect

*fromsale_detailwhereregion=shanghaiSELECT…UNION[ALL|DISTINCT]SELECT…[UNION[ALL|DISTINCT]SELECT...]聯(lián)結(jié)查詢-連接(join)2)

用join連接查詢結(jié)果首先,需要了解笛卡爾積(Cartesianproduct),指兩個集合X和Y的乘積。例如,有A和B兩個集合,它們的值如下:A={1,2}B={3,4,5}集合A×B和B×A的結(jié)果集分別表示為:A×B={(1,3),(1,4),(1,5),(2,3),(2,4),(2,5)};B×A={(3,1),(3,2),(4,1),(4,2),(5,1),(5,2)};以上A×B和B×A的結(jié)果就叫做兩個集合的笛卡爾積。從以上結(jié)果可以看出:兩個集合相乘,不滿足交換率,即A×B≠B×A。A集合和B集合的笛卡爾積中的元素個數(shù),是A集合的元素個數(shù)×B集合的元素個數(shù)。多表查詢遵循的算法就是以上提到的笛卡爾積,表與表之間的連接可以看成是在做乘法運算。在實際應用中,應避免使用笛卡爾積,因為笛卡爾積中容易存在大量的不合理數(shù)據(jù),簡單來說就是容易導致查詢結(jié)果重復、混亂。聯(lián)結(jié)查詢-左連接(leftjoin)和右連接(rightjoin)2.1)

用join連接查詢結(jié)果:left

join和right

join左(外)連接leftjoin右(外)連接rightjoinSELECT<字段名>FROM<表1>LEFTOUTERJOIN<表2><ON子句>SELECT c.customerNumber, c.customerName, o.orderNumber, o.statusFROM

customers

cLEFTJOINorders

oONc.customerNumber=o.customerNumber;【例】查詢所有顧客的ID、姓名、訂單號和訂單狀態(tài)(顧客可能有0個或者更多訂單,任意一個訂單一定屬于某個顧客)SELECT<字段名>FROM<表1>RIGHTOUTERJOIN<表2><ON子句>聯(lián)結(jié)查詢-內(nèi)連接(inner

join)2.2)

用join連接查詢結(jié)果:inner

join內(nèi)連接innerjoinSELECT<字段名>FROM<表1>INNER

JOIN<表2><ON子句>SELECTorderNumber,orderDate,orderLineNumber,productName,quantityOrdered,priceEachFROM

ordersINNERJOIN

orderdetailsUSING(orderNumber)INNERJOIN

productsUSING(productCode)ORDERBYorderNumber,orderLineNumber;【例】查詢訂單號、時間、訂單行號、產(chǎn)品名稱、銷售數(shù)量、單價聯(lián)結(jié)查詢-交叉連接(cross

join)2.3)

用join連接查詢結(jié)果:cross

joinSELECT<字段名>FROM<表1>CROSSJOIN<表2>[WHERE子句]或SELECT<字段名>FROM<表1>,<表2>[WHERE子句]SELECT*FROMtb_courseCROSSJOINtb_students_infoWHEREtb_students_info.course_id=tb_course.id;【例】查詢tb_course表中的course_id字段和tb_students_info表中的course_id字段相等的內(nèi)容交叉連接cross

join課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用5.1聯(lián)結(jié)查詢5.2子查詢5.3常用函數(shù)6.

MaxCompute

SQL介紹子查詢子查詢基礎:子查詢是嵌套在另一個查詢(如SELECT、INSERT、UPDATE或DELETE)中的查詢。子查詢可以嵌套在另一個子查詢中。MySQL子查詢稱為內(nèi)部查詢,而包含子查詢的查詢稱為外部查詢。子查詢可以在使用該表達式的任何地方使用,并且必須用括號括起來?!纠坎樵冊诿绹k事處工作的員工。SELECTlastName,firstNameFROM

employeesWHERE

officeCodeIN( SELECTofficeCode FROM

offices WHERE

country='USA’ );子查詢-過濾(where)where子句中的子查詢:可以使用比較運算符(例如,=,>,<)將子查詢返回的單個值與WHERE子句中的表達式進行比較?!纠坎樵兙哂凶罡吒犊铑~的客戶。SELECTcustomerNumber,checkNumber,amountFROM

paymentsWHERE

amount=( SELECTMAX(amount) FROMpayments );子查詢-集合判斷(in

&

not

in)帶IN和NOTIN運算符的MySQL子查詢:如果子查詢返回多個值,則可以在WHERE子句中使用其他運算符,如IN或NOTIN運算符?!纠坎樵兾聪掠唵蔚目蛻簟ELECTcustomerNameFROM

customersWHERE

customerNumberNOTIN( SELECTDISTINCT

customerNumber FROM

orders );子查詢-來自(from)from子句中的子查詢:在FROM子句中使用子查詢時,子查詢返回的結(jié)果集將用作臨時表。此表稱為派生表或物化的子查詢。【例】查詢銷售訂單中,訂單物品數(shù)的最大、最小和平均數(shù)。SELECTMAX(items),MIN(items),FLOOR(AVG(items))FROM

( SELECTorderNumber,COUNT(orderNumber)ASitems FROM

orderdetails GROUPBYorderNumber )ASlineitems;子查詢-關(guān)聯(lián)關(guān)聯(lián)子查詢:在前面的示例中,可以注意到子查詢都是獨立的,這意味著可以將子查詢作為獨立查詢執(zhí)行。與獨立子查詢不同,關(guān)聯(lián)子查詢是使用外部查詢中的數(shù)據(jù)的子查詢。換句話說,關(guān)聯(lián)子查詢依賴于外部查詢。對外部查詢中的每一行,都會計算一次關(guān)聯(lián)子查詢?!纠坎樵冑徺I價格高于每個產(chǎn)品線中所有產(chǎn)品平均購買價格的產(chǎn)品。SELECTproductname,buypriceFROM

productsp1WHERE

buyprice>( SELECTAVG(buyprice) FROM

products

WHERE

productline=ductline)子查詢-行檢測(EXISTS

&

NOTEXISTS)具有EXISTS和NOTEXISTS的子查詢:當子查詢與EXISTS或NOTEXISTS運算符一起使用時,子查詢返回布爾值TRUE或FALSE。EXISTS或NOTEXISTS運算符通常用于關(guān)聯(lián)子查詢中?!纠坎樵冎辽僮隽艘粋€總價值大于60K銷售訂單的客戶。這一步查詢的是總值大于60K的銷售訂單,假設返回了3行,意味著有3個銷售訂單的總值大于60K??梢允褂蒙厦娴牟樵冏鳛殛P(guān)聯(lián)子查詢。SELECTorderNumber,SUM(priceEach*quantityOrdered)totalFROMorderdetailsINNERJOINordersUSING(orderNumber)GROUPBYorderNumberHAVINGSUM(priceEach*quantityOrdered)>60000;子查詢-行檢測(EXISTS

&

NOTEXISTS)具有EXISTS和NOTEXISTS的子查詢:當子查詢與EXISTS或NOTEXISTS運算符一起使用時,子查詢返回布爾值TRUE或FALSE。EXISTS或NOTEXISTS運算符通常用于關(guān)聯(lián)子查詢中。【例】查詢至少做了一個總價值大于60K銷售訂單的客戶。SELECTcustomerNumber,customerNameFROM

customersWHEREEXISTS(SELECT orderNumber, SUM(priceEach*quantityOrdered)FROMorderdetailsINNERJOINordersUSING(orderNumber)

WHERE

customerNumber=customers.customerNumberGROUPBYorderNumberHAVINGSUM(priceEach*quantityOrdered)>60000);課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用5.1聯(lián)結(jié)查詢5.2子查詢5.3常用函數(shù)6.

MaxCompute

SQL介紹常用函數(shù)其他函數(shù)41值函數(shù)數(shù)學運算函數(shù)字符串處理函數(shù)日期處理函數(shù)窗口函數(shù)3常見統(tǒng)計量類排名類其他2聚合函數(shù)常見統(tǒng)計量類字符串類類型轉(zhuǎn)換函數(shù)分支判斷函數(shù)其他值函數(shù)-數(shù)學運算函數(shù)三角類ACOS/COSASIN/SINATANCOTTAN整形類CEIL/CEILINGFLOORROUNDTRUNCATECONV運算類ABSLN/LOGEXP/POW/SQRTMIN/MAXDIV/MOD隨機數(shù)RAND值函數(shù)-字符串處理函數(shù)長度類LENGTHBIT_LENGTHCHAR_LENGTH查找類INSTRSUBSTRSUBSTRING_INDEXLEFT/RIGHTLOCATEFIND_IN_SET轉(zhuǎn)換類ASCIICHAR整形類CONCATLOWER/UPPERTRIMLTRIM/RTRIMLPAD/RPADFORMATREPEATREVERSE正則類REGEXPREGEXP_INSTRREGEXP_LIKEREGEXP_REPLACEREGEXP_SUBSTR值函數(shù)-日期類型處理函數(shù)ADDDATEADDTIMEDATEDIFFSUBDATEPERIOD_DIFFDATE_FORMATTIMESTAMPSEC_TO_TIMESTR_TO_DATETIMEFROM_UNIXTIMENOWCURDATECURTIMEDATEDAYOFMONTHEXTRACTLAST_DAYMAKEDATE日期運算類日期獲取類日期轉(zhuǎn)換類聚合函數(shù)COUNTAVGMAX/MINSUMSTDDEVSTDDEV_SAMPVARIANCEVAR_SAMPGROUP_CONCATJSON_ARRAYAGGJSON_OBJECTAGG窗口函數(shù)(8.0版本)統(tǒng)計量COUNTSUMAVGMAX/MINSTDDEVSTDDEV_SAMP排名類ROW_NUMBERRANKDENSE_RANKPERCENT_RANKCUME_DIST其他類LAGLEADFIRST_VALUELAST_VALUENTH_VALUENTILE其他常用函數(shù)BINARY將字符串轉(zhuǎn)換為BINARY字符串CAST將值轉(zhuǎn)換為特定類型CASEWHEN根據(jù)表達式value的計算結(jié)果返回數(shù)值IF根據(jù)條件value,返回不同數(shù)值IFNULL空值判斷,返回定義數(shù)值NULLIF數(shù)值判斷,返回空值USER客戶端提供的用戶名和主機名DATABASE返回默認(當前)數(shù)據(jù)庫名稱CONNECTION_ID返回連接ID(線程ID)ROW_COUNT返回更新的行數(shù)課程目錄1.什么是SQL2.數(shù)據(jù)定義語言(DDL)3.數(shù)據(jù)操縱語言(DML)4.數(shù)據(jù)查詢語言(DQL)5.

SQL高級應用6.

MaxCompute

SQL介紹6.1

MaxCompute

SQL基礎概念6.2

MaxCompute

SQL語法MaxComputeSQL是什么?MaxComputeSQL是個數(shù)據(jù)倉庫工具,Query解析后,計算和存儲交由底層的飛天實現(xiàn)。MaxComputeSQL支持常用的SQL語法,包括窗口函數(shù)MaxComputeSQL可以看做對標準SQL的支持,但是不能簡單等同于數(shù)據(jù)庫MaxComputeSQL不支持事務、主外鍵約束、索引等MaxComputeSQL長度有限制,目前是不能超過2MMaxComputeSQL適用于海量數(shù)據(jù)(TB/PB級別)的數(shù)據(jù)運算MaxComputeSQL的每個作業(yè)的準備,提交等階段要花費較長時間,實時性不高數(shù)據(jù)的組織Project項目空間Table表Partition分區(qū)-MaxCompute的所有對象都隸屬于項目空間-計量計費及安全控制的基本單元-所有的數(shù)據(jù)都存儲在表里-支持表分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論