版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
l?組成o數(shù)據(jù)庫表?一個數(shù)據(jù)庫通常包含一個或多個表。每個表由一個名字標(biāo)識(例如“客戶”或者“訂單”)。表包含帶有數(shù)據(jù)的記錄(行)。?例子?o數(shù)據(jù)操作語言(DML)?SELECT-從數(shù)據(jù)庫表中獲取數(shù)據(jù)?語法oSELECT列名稱FROM表名稱o注意:星號(*)是選取所有列?例子oSELECTLastName,FirstNameFROMPersons?UPDATE-更新數(shù)據(jù)庫表中的數(shù)據(jù)?語法oUPDATE表名稱SET列名稱=新值WHERE列名稱=某值?例子o子主題?DELETE-從數(shù)據(jù)庫表中刪除數(shù)據(jù)?語法oDELETEFROM表名稱WHERE列名稱=值?例子o子主題?注意o可以在不刪除表的情況下刪除所有的行。這意味著表的結(jié)構(gòu)、屬性和索引都是完整的?INSERTINTO-向數(shù)據(jù)庫表中插入數(shù)據(jù)?語法oINSERTINTO表名稱VALUES(值1,值2,....)oINSERTINTOtable_name(列1,列2,...)VALUES(值1,值?例子o子主題?關(guān)鍵字?DISTINCT語句o作用?DISTINCT用于返回唯一不同的值。o語法?SELECTDISTINCT列名稱FROM表名稱o例子??WHERE子句o作用?有條件地從表中選取數(shù)據(jù)o語法?SELECT列名稱FROM表名稱WHERE列運(yùn)算符值?操作符?o例子?子主題?AND和OR運(yùn)算符o作用?AND和OR可在WHERE子語句中把兩個或多個條件結(jié)合起來。如果第一個條件和第二個條件都成立,則o語法o例子??ORDERBYo作用?o語法o例子??TOP子句o作用?o語法???AND運(yùn)算符顯示一條記錄。如果第一個條件和第二個條件中只要有一個成立,則OR運(yùn)算符顯示一條記子主題ORDERBY語句用于根據(jù)指定的列對結(jié)果集進(jìn)行排如果您希望按照降序?qū)τ涗涍M(jìn)行排序,可以使用DESC子主題TOP子句用于規(guī)定要返回的記錄的數(shù)目。對于擁有數(shù)千條記錄的大型表來說,TOP子句是非常有用的。注釋:并非所有的數(shù)據(jù)庫系統(tǒng)都支持TOP子句。SQLServer?SELECTTOPnumber|percentcolumn_name(s)FROMtable_name?MySQL語法SELECTcolumn_name(s)FROMtable_nameLIMITnumberOracle?SELECTcolumn_name(s)FROMtable_nameWHEREROWNUM<=numbero例子?SQLServer?SELECTTOP2*FROMPersons?子主題?MySQL?SELECT*FROMPersonsLIMIT5?Oracle?SELECT*FROMPersonsWHEREROWNUM?LIKEo作用?LIKE操作符用于在WHERE子句中搜索列中的指定模o語法?SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameLIKEpatterno示例??通配符o作用?在搜索數(shù)據(jù)庫中的數(shù)據(jù)時,SQL通配符可以替代一個o包括?子主題o示例???NOTo示例?o示例?INo作用o語法?o示例?BETWEENo作用?o語法?子主題IN操作符允許我們在WHERE子句中規(guī)定多個值。SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameIN(value1,value2,...)操作符BETWEEN...AND會選取介于兩個值之間的數(shù)據(jù)范圍。這些值可以是數(shù)值、文本或者日期。SELECTcolumn_name(s)FROMtable_nameWHEREcolumn_nameBETWEENvalue1ANDvalue2注意?不同的數(shù)據(jù)庫對BETWEEN...AND操作符的處理方式是有差異的。某些數(shù)據(jù)庫會列出介于"Adams"和"Carter"之間的人,但不包括"Adams"和"Carter";某些數(shù)據(jù)庫會列出介于"Adams"和"Carter"之間并包括o示例?Alias(別名)o作用o語法?o?Joino示例????"Adams"和"Carter"的人;而另一些數(shù)據(jù)庫會列出介于"Adams"和"Carter"之間的人,Adams"Carter"。為列名稱和表名稱指定別名(Alias)。表的別名?SELECTcolumn_name(s)FROMtable_nameASalias_name列的別名?SELECTcolumn_nameASalias_nameFROMtable_name作用?利用內(nèi)連接可獲取兩表的公共部分的記錄(返回連接表中符合連接條件和查詢條件的數(shù)據(jù)行)示例?等值連接?通過某個字段使用=運(yùn)算符連接兩個表的鏈接也叫做等值連接補(bǔ)充o?where連接多個表也屬于內(nèi)連接,在數(shù)據(jù)庫中o外連接?左外連接?作用o?示例o?右外連接?作用o?示例是以左表為基準(zhǔn),將a.stuid=b.stuid的數(shù)據(jù)進(jìn)行連接,然后將左表沒有的對應(yīng)項(xiàng)顯示,右表的列為NULL(公共部分記錄集C+表A記錄集))在語句記錄集A1是以右表為基準(zhǔn),將a.stuid=b.stuid的數(shù)據(jù)進(jìn)行連接,然以將右表沒有的對應(yīng)項(xiàng)顯示,左表的列為NULL(公共部分記錄集C+表B記錄集B1。)在語記錄集B1?全外連接?作用o返回左表和右表中的所有行。當(dāng)某行在另一個表中沒有匹配行時,則另一個表的選擇列表列包含空值。如果表之間有匹配行,則整個結(jié)果集行包含基表的數(shù)?示例o、?注意?外連不但返回符合連接和查詢條件的數(shù)據(jù)行,還返回不符合條件的一些行。o交叉連接?作用?交叉聯(lián)接返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯(lián)接也稱作笛?示例??聯(lián)合查詢(union/unionall)o作用?合并兩個或多個SELECT語句的結(jié)果集union剔除重復(fù)的查詢數(shù)據(jù)unionall不剔除重復(fù)的查詢數(shù)據(jù)o語法oo注意??union內(nèi)部的select語句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時,每條select語句須相同。?SELECTINTOo作用?從一個表中選取數(shù)據(jù),然后把數(shù)據(jù)插入另一個表中。常用于創(chuàng)建表的備份復(fù)件或者用于對記錄進(jìn)行存檔。o語法?您可以把所有的列插入新表:SELECT*INTOnew_table_name[INexternaldatabase]FROMold_tablename或者只把希望的列插入新表:SELECTcolumn_name(s)INTOnew_table_name[INexternaldatabase]FROMold_tablenameo例子??自動增長(Auto-increment)o語法?會在新記錄插入表中時生成一個唯一的數(shù)字。我們通常希望在每次插入新記錄時,自動地創(chuàng)建主鍵字段的值。oMysql?示例?記錄遞增1。要讓AUTO_INCREMENT序列以其他的值起始,請使用下列SQL語法:ALTERTABLEPersonsAUTO_INCREMENT=100oSQLServer?HAVINGo作用oAccess?oOracle??NULL值(ISNULL和ISNOTNULL)oNULL值是遺漏的未知數(shù)據(jù)。默認(rèn)地,表的列可以存放NULLo比較NULL值就用ISNULL和ISNOTNULL操作符。o示例?SELECTLastName,FirstName,AddressFROMPersonsWHEREAddressISNULL?SELECTLastName,FirstName,AddressFROMPersonsWHEREAddressISNOTNULL?GROUPBYo作用?用于結(jié)合合計(jì)函數(shù),根據(jù)一個或多個列對結(jié)果集進(jìn)行分o語法?SELECT列名,合計(jì)函數(shù)(列名)FROM表名WHEREcolumn_nameoperatorvalueGROUPBY列名(這個列名要與SELECT后面的列名相同)o示例?SELECTCustomer,SUM(OrderPrice)FROMOrdersGROUPBYCustomer?SELECTCustomer,OrderDate,SUM(OrderPrice)FROMOrdersGROUPBYCustomer,OrderDateooo數(shù)據(jù)定義語言(DDL)?語法?示例??在SQL中增加HAVING子句原因是,WHERE關(guān)鍵字函數(shù)一起使用。SELECTcolumn_name,aggregate_function(column_name)FROMtable_nameWHEREcolumn_nameoperatorvalueGROUPBYcolumn_nameHAVINGaggregate_function(column_name)operatorvalueSELECTCustomer,SUM(OrderPrice)FROMOrdersGROUPBYCustomerHAVINGSUM(OrderPrice)<2000SELECTCustomer,SUM(OrderPrice)FROMOrdersWHERECustomer='Bush'ORCustomer='Adams'GROUPBYCustomerHAVINGSUM(OrderPrice)>1500?作用?創(chuàng)建或刪除表格。我們也可以定義索引(鍵),規(guī)定表之間的鏈接,?具體實(shí)現(xiàn)?CREATEDATABASE-創(chuàng)建新數(shù)據(jù)庫?ALTERDATABASE-修改數(shù)據(jù)庫?CREATETABLE-創(chuàng)建新表o語法?CREATETABLE表名稱(列名稱1數(shù)據(jù)類型,列名稱2數(shù)據(jù)類型,列名稱3數(shù)據(jù)類型,....)?ALTERTABLE-變更(改變)數(shù)據(jù)庫表o示例??DROPTABLE-刪除表?CREATEINDEX-創(chuàng)建索引(搜索鍵)?DROPINDEX-刪除索引o數(shù)據(jù)類型?MicrosoftAccess??MySQL數(shù)據(jù)類型?Text類型o?Number類型o注意?這些整數(shù)類型擁有額外的選項(xiàng)UNSIGNED。通常,整數(shù)可以是負(fù)數(shù)或正數(shù)。如果添加UNSIGNED屬性,那么范圍將從0開始,而不是某個負(fù)數(shù)。??Date類型oo注意?即便DATETIME和TIMESTAMP返回相同的格式,它們的工作方式很不同。在INSERT或UPDATE查詢中,TIMESTAMP自動把自身設(shè)置為當(dāng)前的日期和時YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD。?SQLServer?Character字符串o?Unicode字符串o?Binary類型o?Number類型o?Date類型o?其他數(shù)據(jù)類型oo約束?NOTNULL?作用LLNULLNOTNULL制字段始終包含值。這意味著,如果不向字段添加值,就無法錄或者更新記錄。?示例o?UNIQUE?作用EUNIQUEPRIMARYKEY約束均為列或列集合提供了唯一性的保證。PRIMARYKEY擁有自動定義的UNIQUE約束。?創(chuàng)建表時候增加約束示例o命名UNIQUE約束,以及為多個列定義UNIQUE約束?o單個列UNIQUE約束??修改表結(jié)構(gòu)的時候增加約束o?撤銷UNIQUE約束o?注意o請注意,每個表可以有多個UNIQUE約束,但是每個表只能有一個PRIMARYKEY約束。?PRIMARYKEY?作用oPRIMARYKEY約束唯一標(biāo)識數(shù)據(jù)庫表中的每條記錄。主鍵必須包含唯一的值。主鍵列不能包含NULL值。每個表都應(yīng)該有一個主鍵,并且每個表只能有一個主鍵。?創(chuàng)建表的時候增加約束示例o單個列約束?o多個列約束??修改表結(jié)構(gòu)的時候增加約束o?撤銷PRIMARYKEYo?FOREIGNKEY?作用o一個表中的FOREIGNKEY指向另一個表中的PRIMARYFOREIGNKEY約束也能防止非法數(shù)據(jù)插入外鍵列,因?yàn)樗仨毷撬赶虻哪莻€表中的值之一。?創(chuàng)建表的時候增加約束示例o單個列約束?o多個列約束??修改表結(jié)構(gòu)的時候增加約束o?撤銷PRIMARYKEYo?CHECK?作用oCHECK約束用于限制列中的值的范圍。如果對單個列定義CHECK約束,那么該列只允許特定的值。如果對一個表定義CHECK約束,那么此約束會在特定的列中對值進(jìn)行限制。?創(chuàng)建表的時候增加約束示例o單個列約束?o多個列約束??修改表結(jié)構(gòu)的時候增加約束o?撤銷CHECKo?DEFAULT?作用oDEFAULT約束用于向列中插入默認(rèn)值。如果沒有規(guī)定其他的值,那么會將默認(rèn)值添加到所有的新記錄。?創(chuàng)建表的時候增加約束示例o單個列約束??修改表結(jié)構(gòu)的時候增加約束o?撤銷DEFAULTo子主題o索引(CREATEINDEX)?作用?在不讀取整個表的情況下,索引使數(shù)據(jù)庫應(yīng)用程序可以更快地查找數(shù)據(jù)。索引是要占磁盤空間的。?概念?索引是一種特殊的文件(InnoDB數(shù)據(jù)表上的索引是表空間的一個組成部分),它們包含著對數(shù)據(jù)表里所有記錄的引用指針。更通俗的說,數(shù)據(jù)庫索引好比是一本書前面的目錄,能加快數(shù)據(jù)庫的查詢速度。?分類?聚簇索引o概念?聚簇索引是按照數(shù)據(jù)存放的物理位置為順序的,能提高多行檢索的速度?非聚簇索引o概念?沒有順序,對于單行的檢索很快?何時使用聚集索引或非聚集索引?o?普通索引?語法o子主題?作用o最基本的索引,它沒有任何限制,比如上文中為title字段創(chuàng)建,MyIASM中默認(rèn)的BTREE類型的?唯一索引?語法o?作用o索引,也是我們大多數(shù)情況下用到的索引。與普通索引類似,不同的就是:索引列的值必須唯一,但允許有空值(注意和主鍵不同)。如果是組合索引,則列值的組合必須唯一,創(chuàng)建方法和普通索引類似。?全文索引(FULLTEXT)?作用oMySQL從3.23.23版開始支持全文索引和全文檢索,F(xiàn)ULLTEXT索引僅可用于MyISAM表;他們可以從CHAR、VARCHAR或TEXT列中作為CREATETABLE語句的一部分被創(chuàng)建,或是隨后使用ALTERTABLE或CREATEINDEX被添FULLTEXT索引的表中,然后創(chuàng)建索引,其速度比把資料輸入現(xiàn)有FULLTEXT索引的速度更為快。不過切記對于大容量的數(shù)據(jù)表,生成全文索引是一個非常消耗時間非常消耗硬盤空間的?語法o?單列索引、多列索引?作用o多個單列索引與單個多列索引的查詢效果不同,因?yàn)閳?zhí)行查詢時,MySQL只能使用一個索引,會從多個索引中選擇一個限?組合索引(最左前綴)?作用o平時用的SQL查詢語句一般都有比較多的限制條件,所以為了進(jìn)一步榨取MySQL的效率,就要考慮建立組合索引?示例o?注意o創(chuàng)建復(fù)合索引時應(yīng)該將最常用(頻率)作限制條件的列放在最?注意?MySQL只對一下操作符才使用索引:<,<=,=,>,>=,between,in,以及某些時候的like(不以通配符%或_開頭的情形)。而理論上每張表里面最多可創(chuàng)建16個索引,不過除非是數(shù)據(jù)量真的很多,否則過多的使用索引也不是那么好玩的o視圖?概念?在SQL中,視圖是基于SQL語句的結(jié)果集的可視化的表。視圖包含行和列,就像一個真實(shí)的表。視圖中的字段就是來自一個或多個數(shù)據(jù)庫中的真實(shí)的表中的字段。我們可以向視圖添加SQL函數(shù)、WHERE以及JOIN語句,我們也可以提交數(shù)據(jù),就像這些來自于某個單一的?作用?視圖(view)是一種虛擬存在的表,是一個邏輯表,本身并不包含數(shù)t展現(xiàn)基表的部分?jǐn)?shù)據(jù);視圖數(shù)據(jù)來自定義視圖的查詢中使用的表,使用視圖動態(tài)生成。?語法?創(chuàng)建視圖oCREATEVIEWASSELECT(列1,列2...)?修改視圖oCREATEORREPLACEVIEW視圖名ASSELECT[...]FROM?刪除視圖oDROPVIEW視圖名;?查看視圖詳情oDESC視圖名;或者SHOWFIELDSFROM視圖名;?視圖的DML操作(增刪改查)o因?yàn)橐晥D本身沒有數(shù)據(jù),因此對視圖進(jìn)行的dml操作最終都體現(xiàn)在基表中o就像對普通表那樣子,但是有的視圖不能進(jìn)行DML操作?①select子句中包含distinct②select子句中包含組函數(shù)③select語句中包含groupby子句④select語句中包含orderby子句⑤select語句中包含union、unionall等集合運(yùn)算符⑥where子句中包含相關(guān)子查詢⑦from子句中包含多個表⑧如果視圖中有計(jì)算列,則不能更新⑨如果基表中有某個具有非空約束的列未出現(xiàn)在視圖定義中,則不能做insert操作?注意?數(shù)據(jù)庫的設(shè)計(jì)和結(jié)構(gòu)不會受到視圖中的函數(shù)、where或join語句的影?視圖總是顯示最近的數(shù)據(jù)。每當(dāng)用戶查詢視圖時,數(shù)據(jù)庫引擎通過使SQL重建數(shù)據(jù)。?視圖是虛擬表,本身不存儲數(shù)據(jù),而是按照指定的方式進(jìn)行查詢。?可以通過視圖插入數(shù)據(jù),但是只能基于一個基礎(chǔ)表進(jìn)行插入,不能跨?一般情況下,在創(chuàng)建有條件限制的視圖時,加上“WITHCHECKono示例??顯示指定視圖列名,要求視圖名后面的列的數(shù)量必須匹配select子句?優(yōu)點(diǎn)?簡單:使用視圖的用戶完全不需要關(guān)心后面對應(yīng)的表的結(jié)構(gòu)、關(guān)聯(lián)條件和篩選條件,對用戶來說已經(jīng)是過濾好的復(fù)合條件的結(jié)果集。?安全:使用視圖的用戶只能訪問他們被允許查詢的結(jié)果集,對表的權(quán)限管理并不能限制到某個行某個列,但是通過視圖就可以簡單的實(shí)?數(shù)據(jù)獨(dú)立:一旦視圖的結(jié)構(gòu)確定了,可以屏蔽表結(jié)構(gòu)變化對用戶的影響,源表增加列對視圖沒有影響;源表修改列名,則可以通過修改視?為了保障數(shù)據(jù)安全性,提高查詢效率?工作機(jī)制?調(diào)用視圖的時候,才會執(zhí)行視圖中的sql,進(jìn)行取數(shù)據(jù)操作。視圖的內(nèi)不會占用空間,由于是即時引用,視圖的內(nèi)容總是與真實(shí)表的內(nèi)容是一致的。我們不需要維護(hù)視圖的內(nèi)容,維護(hù)好真實(shí)表的內(nèi)容,就可以保證視圖?工作方式?替換式o概念?操作視圖時,視圖名直接被視圖定義給替換掉,結(jié)果就變成select*from(asc_name,asstu_namefromstudents,classcwherec.id=s.class_id),在提交給mysql執(zhí)行; (將視圖公式替換后,當(dāng)成一個整體sql進(jìn)行處理了。)?具化式o概念?mysql先得到了視圖執(zhí)行的結(jié)果,該結(jié)果形成一個中間結(jié)果暫時存在內(nèi)存中。之后,外面的select語句就調(diào)用了這些中間結(jié)果(臨時表)。(先處理視圖結(jié)果,后處理外面的查詢需求。)?mysql會自己確定使用哪種方式進(jìn)行處理的。?自己選擇方式oCREATE[ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]VIEW視圖名[(屬性清單)]ASSELECT語句[WITH[CASCADED|LOCAL]CHECKOPTION];ALGORITHM有三個處理方式替換式,可以進(jìn)行更新真實(shí)表中的數(shù)據(jù);TEMPTABLE:具化式,由于數(shù)據(jù)存儲在臨時表中,所以不可以進(jìn)行更新操作!當(dāng)你的參數(shù)定義是UNDEFINED(沒有定義o函數(shù)?有關(guān)Date的函數(shù)?MYSQL中oNOW()?作用?返回當(dāng)前的日期和時間?示例?CREATETABLEOrders(OrderIdintNOTNULL,ProductNamevarchar(50)NOTNULL,OrderDatedatetimeNOTNULLDEFAULTNOW(),PRIMARYKEY(OrderId))?SELECTNOW(),CURDATE(),CURTIME()CURDATE()?作用?返回當(dāng)前的日期。?示例?SELECTNOW(),CURDATE(),CURTIME()?CREATETABLEOrders(OrderIdintNOTNULL,ProductNamevarchar(50)NOTNULL,OrderDatedatetimeNOTNULLDEFAULTCURDATE(),PRIMARYKEYOrderIdCURTIME()?作用?返回當(dāng)前的時間。?示例?SELECTNOW(),CURDATE(),CURTIME()TEdate?作用?返回日期或日期/時間表達(dá)式的日期部分。?示例?SELECTProductName,DATE(OrderDate)ASOrderDateFROMOrdersWHEREOrderId=1oEXTRACT(unitFROMdate)?作用?返回日期/時間的單獨(dú)部分,比如年、月、日、?unit參數(shù)??示例?oDATE_ADD(date,INTERVALexprtype)?作用?向日期添加指定的時間間隔。?date參數(shù)是合法的日期表達(dá)式。?expr參數(shù)是您希望添加的時間間隔。?type參數(shù)??示例?oDATE_SUB(date,INTERVALexprtype)?作用?從日期減去指定的時間間隔。?date參數(shù)是合法的日期表達(dá)式?expr參數(shù)是您希望添加的時間間隔。?type參數(shù)??示例?oDATEDIFF(date1,date2)?作用?返回兩個日期之間的天數(shù)。?date1和date2參數(shù)是合法的日期或日期/時間表達(dá)?示例?SELECTDATEDIFF('2008-12-30','2008-12-29')ASDiffDate?SELECTDATEDIFF('2008-12-29','2008-12-30')ASDiffDate?注意?只有值的日期部分參與計(jì)算。oDATE_FORMAT(date,format)?作用?用于以不同的格式顯示日期/時間數(shù)據(jù)。?date參數(shù)是合法的日期。?format規(guī)定日期/時間的輸出格式。???示例??SQLServeroGETDATE()?作用?返回當(dāng)前日期和時間?示例?SELECTGETDATE()ASCurrentDateTime?CREATETABLEOrders(OrderIdintNOTNULLPRIMARYKEY,ProductNamevarchar(50)NOTNULL,OrderDatedatetimeNOTNULLDEFAULTGETDATE())oDATEPART(datepart,date)?作用?返回日期/時間的單獨(dú)部分?date參數(shù)是合法的日期表達(dá)式?datepart參數(shù)??示例?oDATEADD(datepart,number,date)?作用?在日期中添加或減去指定的時間間隔?date參數(shù)是合法的日期表達(dá)式。?number是您希望添加的間隔數(shù);對于未來的時間,此數(shù)是正數(shù),對于過去的時間,此數(shù)是負(fù)數(shù)。?datepart參數(shù)??示例?oDATEDIFF(datepart,startdate,enddate)?作用?返回兩個日期之間的時間?startdate和enddate參數(shù)是合法的日期表達(dá)式。?datepart參數(shù)??示例o語法?SELECTDATEDIFF(day,'2008-12-29','2008-12-30')ASDiffDateoCONVERT(data_type(length),data_to_be_converted,style)?作用?CONVERT()函數(shù)是把日期轉(zhuǎn)換為新數(shù)據(jù)類型格式顯示日期/時間數(shù)據(jù)。?data_type(length)規(guī)定目標(biāo)數(shù)據(jù)類型(帶有可選的長度)?data_to_be_converted含有需要轉(zhuǎn)換的值?style規(guī)定日期/時間的輸出格式。??示例??有關(guān)NULL的函數(shù)?SQLServer/MSAccessoISNULL()?MySQLoIFNULL()oCOALESCE()?OracleoNVL()?合計(jì)函數(shù)(Aggregatefunctions)?面向一系列的值,并返回一個單一的值。?AVG(column)o作用?返回某列的平均值?SELECTAVG(列名)FROM表名o示例?SELECTAVG(OrderPrice)ASOrderAverageFROMrders?SELECTCustomerFROMOrdersWHEREOrderPrice>(SELECTAVG(OrderPrice)FROMOrders)?COUNT(column)o作用?返回某列的行數(shù)(不包括NULL值)o語法?SELECTCOUNT(列名)FROM表名?SELECTCOUNT(*)FROM表名?SELECTCOUNT(DISTINCT列名)FROM表名?注意?COUNT(DISTINCT)適用于ORACLE和MicrosoftAccess。o示例?SELECTCOUNT(Customer)ASCustomerNilsenFROMOrdersWHERECustomer='Carter'?SELECTCOUNT(*)ASNumberOfOrdersFROMrders?COUNT(*)o作用?返回被選行數(shù)o語法?SELECTCOUNT(*)FROM表名o示例?SELECTCOUNT(*)FROMPersons?SELECTCOUNT(*)FROMPersonsWHEREAge>20?MAX(column)o作用?返回某列的最高值o語法?SELECTMAX(列名)FROM表名o示例?SELECTMAX(OrderPrice)ASLargestOrderPriceFROMOrders?MIN(column)o作用?返回某列的最低值o語法?SELECTMIN(列名)FROM表名o示例?SELECTMIN(OrderPrice)ASSmallestOrderPriceFROMOrders?SUM(column)o作用?返回某列的總和o語法?SELECTSUM(列名)FROM表名o示例?SELECTSUM(OrderPrice)ASOrderTotalFROMrders?FIRST()o作用?返回指定的字段中第一個記錄的值。o語法?SELECTFIRST(列名)FROM表名o示例?SELECTFIRST(OrderPrice)ASFirstOrderPriceFROMOrders?LAST()o作用?返回指定的字段中最后一個記錄的值。o語法?SELECTLAST(列名)FROM表名o示例?SELECTLAST(OrderPrice)ASLastOrderPriceFROMOrders?合計(jì)函數(shù)(比如SUM)常常需要添加GROUPBY語句?Scalar函數(shù)?面向某個單一的值,并返回基于輸入值的一個單一的值。?UCASE()o作用?把字段的值轉(zhuǎn)換為大寫。o語法?SELECTUCASE(列名)FROM表名o示例?SELECTUCASE(LastName)asLastName,FirstNameFROMPersons?LCASE()o作用oo?MID()ooo?LEN()ooo語法示例作用語法示例作用語法示例?ROUND()o作用?為小寫。SELECTLCASE(列名)FROM表名SELECTLCASE(LastName)asLastName,FirstNameFROMPersons用于從文本字段中提取字符。SELECTMID(column_name,start[,length])FROMtable_namestart:必需。規(guī)定開始位置(起始值是1)。length:可選。要返回的字符數(shù)。如果省略,則SELECTMID(City,1,3)asSmallCityFROMPersons字段中值的長度。SELECTLEN(列名)FROM表名SELECTLEN(City)asLengthOfCityFROMPersons用于把數(shù)值字段舍入為指定的小數(shù)位數(shù)。?工作模式o語法???o示例??FORMAT()o作用?o語法???o示例?o存儲過程?概念SELECTROUND(column_name,decimals)FROMtable_namedecimals必需。規(guī)定要返回的小數(shù)位數(shù)。SELECTProductName,ROUND(UnitPrice,0)asUnitPriceFROMProducts用于對字段的顯示進(jìn)行格式化。SELECTFORMAT(column_name,format)FROMtable_nameSELECTProductName,UnitPrice,FORMAT(Now(),'YYYY-MM-DD')asPerDateFROM?存儲過程(StoredProcedure)是在大型數(shù)據(jù)庫系統(tǒng)中,一組為了完成特定功能的SQL語句集,存儲在數(shù)據(jù)庫中,經(jīng)過第一次編譯后再次調(diào)用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(shù)(如果該存儲過程帶有參數(shù))來執(zhí)行它。存儲過程是數(shù)據(jù)庫中的一個重要??作用?優(yōu)點(diǎn)?1.存儲過程可以重復(fù)使用,大大減小開發(fā)人員的負(fù)擔(dān);?2.對于網(wǎng)絡(luò)上的服務(wù)器,可以大大減小網(wǎng)絡(luò)流量,因?yàn)橹恍枰獋鬟f存儲過程的名稱即可;?3,可以防止對表的直接訪問,只需要賦予用戶存儲過程的訪問權(quán)限。?語法?創(chuàng)建存儲過程o
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版?zhèn)€性化定制門窗安裝與綠色建材供應(yīng)合同2篇
- 二零二五版木地板工程進(jìn)度與成本管理合同4篇
- 二零二五年度游戲角色形象授權(quán)合同4篇
- 二零二五年度嬰幼兒奶粉安全風(fēng)險評估與管理體系建設(shè)合同4篇
- 二零二五年度城市綠化景觀提升項(xiàng)目種植合同3篇
- 二零二五年度影視MV拍攝與藝人肖像權(quán)授權(quán)合同
- 二零二五年度木材貿(mào)易代理與倉儲管理合同3篇
- 二零二五年度人防工程防雷接地檢測合同2篇
- 二零二四年度信用證項(xiàng)下跨境貿(mào)易融資合同模板3篇
- 二零二四年度液化氣供應(yīng)與綜合能源服務(wù)合同范本3篇
- 2024-2025學(xué)年山東省濰坊市高一上冊1月期末考試數(shù)學(xué)檢測試題(附解析)
- 江蘇省揚(yáng)州市蔣王小學(xué)2023~2024年五年級上學(xué)期英語期末試卷(含答案無聽力原文無音頻)
- 數(shù)學(xué)-湖南省新高考教學(xué)教研聯(lián)盟(長郡二十校聯(lián)盟)2024-2025學(xué)年2025屆高三上學(xué)期第一次預(yù)熱演練試題和答案
- 決勝中層:中層管理者的九項(xiàng)修煉-記錄
- 幼兒園人民幣啟蒙教育方案
- 軍事理論(2024年版)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 《無人機(jī)法律法規(guī)知識》課件-第1章 民用航空法概述
- 政治丨廣東省2025屆高中畢業(yè)班8月第一次調(diào)研考試廣東一調(diào)政治試卷及答案
- 齲病的治療 深齲的治療
- 網(wǎng)絡(luò)設(shè)備安裝與調(diào)試(華為eNSP模擬器)整套教學(xué)課件
- 銀行卡凍結(jié)怎么寫申請書
評論
0/150
提交評論