首頁 > 專家說

sql server 2005所有代碼的意思

來源:新能源網(wǎng)
時(shí)間:2024-08-17 13:28:08
熱度:

sql server 2005所有代碼的意思【專家解說】:一、SELECT子名 SELECT select_list //指定由查詢返回的列 [ INTO new_table

【專家解說】:一、SELECT子名 SELECT select_list //指定由查詢返回的列 [ INTO new_table ] //創(chuàng)建新表并將結(jié)果行從查詢插入新表中 FROM table_source //指定從其中檢索行的表或視圖 [ WHERE search_condition ] //指定限制返回行的搜索條件 [ GROUP BY group_by_expression ] //指定查詢結(jié)果的分組條件 [ HAVING search_condition ] //指定組或聚合的搜索條件 [ ORDER BY order_exception [ ASC | DESC ]] //指定結(jié)果集的排序 1、選擇所有列 SELECT * FROM table_source 2、選擇部分列 SELECT fieldname1 [ , fieldname2 , ...] FROM table_source 3、使用列別名 SELECT fieldname1 AS alias [ , fieldname2 AS alias , ... ] FROM table_source 4、WHERE子句用到的條件運(yùn)算符 比較運(yùn)算符: > , < , >= , <= , !> , !< , = , <> , != 范圍運(yùn)算符:BETWEEN... AND , NOT BETWEEN ... AND 列表運(yùn)算符:IN , NOT IN 模糊運(yùn)算符:LIKE , NOT LIKE 邏輯運(yùn)算符:AND , OR , NOT 空值判斷符:IS NULL , IS NOT NULL 5、模糊查詢 SELECT語句提供了LIKE 和 NOT LIKE 進(jìn)行模式匹配,即實(shí)現(xiàn)模糊查詢 % : 由零個(gè)或更多字符組成的任意字符串 SELECT * FROM tb_book WHERE bookname LIKE 'JSP%' _ : 任意單個(gè)字符 SELECT * FROM tb-book WHERE bookname LIKE '_SP' [ ] : 指定一個(gè)字符、字符串或范圍,要求所匹配的對象為它們中的一個(gè) SELECT * FROM tb_book WHERE bookname LIKE '[ A , J]SP' [^ ]: 指定一個(gè)字符、字符串或范圍,要求所匹配的對象為指定范圍之外的字符 SELECT * FROM tb_book WHERE bookname LIKE '[^A]SP' 6、遇到查詢出指定列為空值的記錄,并將該列用特定的值替換 SELECT id, name, bankname, isNull(bankno, '暫無') from tb_customer where bankno is null 7、去除查詢結(jié)果中的重復(fù)記錄 SELECT DISTINCT fieldname1 [ , fieldname2 , ....] FROM table_source [WHERE search_condition] DISTINCT :返回惟一的行 ALL : 返回所有限定的行,為默認(rèn)值,一般不會用它 8、限制結(jié)果集返回的行數(shù) 在SQL Server中使用TOP關(guān)鍵字 SELECT TOP n [ PERCENT ] fieldname1 [ , fieldname2 , ...] FROM table_source [ WHERE search_condition] // n表示返回的行數(shù),如指定PERCENT,則n必須是整數(shù),表示返回的記錄數(shù);若指定PERCENT,則n可以是小 數(shù),取值為0 ~ 100,表示結(jié)果集的百分比返回記錄數(shù) 在MySQL中使用LIMIT關(guān)鍵字 SELECT fieldlist //字段名 FROM table_source //從其中獲取數(shù)據(jù)的表的名稱 [ WHERE selectcriteria ] //查詢條件 [ LIMIT [ offset , ] rows ] //offset:要返回的第一行的偏移量,初始行的偏移量是0,rows:返回行的最大數(shù) 9、聚合函數(shù) count():用于統(tǒng)計(jì)結(jié)果集中全部記錄行的數(shù)量,最多為人147483647 SELECT COUNT([ ALL | DISTINCE ] expression ) / COUNT(*) FROM table_source sum():對某一列的數(shù)值進(jìn)行求和 SELECT SUM ([ ALL | DISTINCT ] expression ) FROM table_source [ WHERE search_condition ] // ALL:默認(rèn)值,對全部數(shù)據(jù)進(jìn)行計(jì)算 // DISTINCT:可選值, 表示對去除重復(fù)記錄后的數(shù)據(jù)進(jìn)行計(jì)算 // expression:進(jìn)行求和的列或是列名組成的表達(dá)式 avg() :對某一列的數(shù)值進(jìn)行求平均數(shù) SELECT AVG( [ ALL | DISTINCT ] expression ) FROM table_source [ WHERE search_condition ] min() : 找出某一列元素的最小值 SELECT MIN( expression ) / MAX( expression ) FROM table_source [ WHERE search_condition ] max() : 找出某一列元素的最大值 10、Group By子句 SELECT fieldnameList [ , func(fieldname1) [ AS alias][ , func(fieldname2)...] FROM table_source [ GROUP BY [ ALL ] expression [ , .... n ] [ WITH { CUBE | ROLLUP } ]] // ALL : 該參數(shù)包含于選定列表中匹配的所有組合結(jié)果集,用戶可以指定包含那些行都不滿足WHERE子句指定的搜 索條件的組和結(jié)果集。如果用戶指定了ALL,將對組中不滿足搜索條件的匯總列返回空值 // expression :該參數(shù)是對查詢執(zhí)行分組的表達(dá)式,expression也稱為分組列,可以是列或列的非聚集表達(dá)式。在選擇 列表內(nèi)定義的列的別名不能用于指定分組列。 // CUBE :該參數(shù)指定在查詢的結(jié)果集內(nèi)不僅包含由GROUP BY提供的正常行,還包括匯總行。在結(jié)果集內(nèi)返回每個(gè) 可能的組和子組組合的GROUP BY匯總行,GROUP BY匯總行在結(jié)果中顯示為null , 但可用來表示所有值 // ROLLUP:該參數(shù)是指定在結(jié)果集內(nèi)不僅包含由GROUP BY子句提供的正常行,還包含匯總行。按層次結(jié)構(gòu)順序, 從組內(nèi)的最低級別到最高級別匯總組。組的層次結(jié)構(gòu)取決于指定分組列時(shí)所使用的順序。更改分組列的順序 會影響在結(jié)果集內(nèi)生成的行數(shù) 注意事項(xiàng): a) 在SELECT子句中的列名列表中,除了聚集函數(shù)外,其他所出現(xiàn)的列一定要在GROUP BY子句中有定義才行 b) SELECT子句的一列名列表中不一定要有聚集函數(shù),但至少要用到GROUP BY子句列表中的一個(gè)項(xiàng)目 c) 在SQL Server中text , ntext , image數(shù)據(jù)類型的列不能作為GROUP BY 子句的分組依據(jù) d) GROUP BY子句不能使用列別名 11、HAVING子句 用于指定組或聚合的搜索條件,它只能與SELECT語句一起使用,能常在GROUP BY子句中使用它,若不使用GROUP BY子句,則它的行為與WHERE子句相同。 它可對GROUP BY子句分組的結(jié)果進(jìn)行再次篩選,最后輸出符合HAVING子句中指定條件的記錄。 它可以包含聚合函數(shù), 不能使用text, image , ntext數(shù)據(jù)類型。 12、帶SOME和ANY的子查詢 是否有返回值滿足搜索要求,且SOME 與 ANY完全等價(jià) SELECT fieldlist FROM table_source WHERE scalar_expression {=|<>|!=|>|>=|!>|<|<=|!<} {SOME / ANY}(subquery) // SOME / ANY:指定進(jìn)行比較 // subquery :包含某列結(jié)果集的子查詢 定量比較運(yùn)算符不支持取反操作,不能在SOME或ANY前加NOT,但可以使用不等號<>獲取相同的查詢結(jié)果。 13、帶ALL的子查詢 表達(dá)式的值與子查詢結(jié)果中的所有值相比都必須滿足比較運(yùn)算符 SELECT fieldlist FROM table_source WHERE scalar_expression {=|<>|!=|>|>=|!>|<|<=|!<} ALL (subquery) 14、帶EXISTS子查詢 該子查詢不產(chǎn)生任何數(shù)據(jù),只返回true 或 false SELECT fieldlist FROM table_source WHERE [ NOT ] EXISTS (subquery) // EXISTS : 指滿足條件的那些記錄,一旦找到第一條匹配的記錄后,就馬上停止查找 // subquery : 返回單列結(jié)果集的子查詢,子查詢是一個(gè)受限的SELECT語句,不允許有COMPUTE子句和INTO關(guān)鍵字 15、內(nèi)連接查詢 內(nèi)連接返回的結(jié)果集是兩個(gè)表中符合條件的數(shù)據(jù),而舍棄不符合條件的數(shù)據(jù) SELECT fieldlist FROM tb_name1 [ INNER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition> ] 16、外連接查詢 外連接返回的是至少一個(gè)表中的所有行,只要這些行符合WHERE或HAVING搜索條件。 a) 左外連接:返回的結(jié)果集包含左表中的所有數(shù)據(jù)(符合WHERE或HAVING)及右表中的符合連接條件的數(shù)據(jù),對于 左表中缺少的右表中的屬性值用null表示。 SELECT fieldlist FROM tb_name1 LEFT [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] b)右外連接:返回的結(jié)果集包含右表中的所有數(shù)據(jù)(符合WHERE 或 HAVING)及左表中的符合連接條件的數(shù)據(jù),對于 右表中缺少的左表中的屬性值用null表示。 SELECT fieldlist FROM tb_name1 RIGHT [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] c)全外連接:返回的結(jié)果集包含左表與右表中所有符合WHERE或HAVING搜索條件的數(shù)據(jù),對于缺少的左表或右表中的 屬性值用null表示。 SELECT fieldlist FROM tb_name1 FULL [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] 17、交叉連接 返回的結(jié)果集是兩個(gè)表的迪卡兒乘積,行數(shù)等于第一個(gè)表的行數(shù)與第二個(gè)表的行數(shù)的乘積,若在交叉連接中指定 WHERE條件,則交叉連接等于內(nèi)連接 SELECT fieldlist FROM tb_name1 CROSS JOIN tb_name2 [ WHERE <search_condition>] 在交叉連接中不能使用ON設(shè)置連接條件。 18、自連接 指表與其自身進(jìn)行連接,使用自連接時(shí),必須為每個(gè)連接表起一個(gè)別名。 例:SELECT DISTINCT a.* from tb_name a INNER JOIN tb_name b ON a.basicpay=b.basicpay WHERE b.name='wgh' 二、INSERT語句 INSERT [ INTO ] table_name [ ( column_list )] VALUES (data_values) 三、UPDATE語句 UPDATE <table_name | view_name> SET <column_name>=<expression> [ , ... , <last column_name>=<las expression>] [WHERE <search_condition>] 四、DELETE語句 DELETE FROM <table_name> [ WHERE <search condition>]