實戰SQL語句收集(不斷更新中--)

來源:互聯網
上載者:User
語句
實戰SQL語句收集(不斷更新中--)

前言:這裡將我編程實踐中遇到的有價值的sql語句一路記下來,一方面方便自己查用,一方面也夯實下即將遺忘的回憶。整個過程中我會不斷更新,直到不能再加為止,同時,這裡只記錄最實用的咚咚,不效仿學院派的那一套。

 

一、常用SQL語句薈萃

1,查詢:

1.1,簡單查詢:select * from table where

 

1.2,串連查詢:

什麼是串連查詢?顧名釋義,就是查詢時涉及多個表的查詢。是以說到串連,廢話一下,要知道串連還是關聯式資料庫的主要特點呢。

串連查詢分為三種:外串連(OUTER JOIN),內串連(INNER JOIN),交叉串連(CROSS JOIN)。

1.2.1,內串連(INNER JOIN)使用比較子進行表間某(些)列資料的比較操作,並列出這些表中與串連條件相匹配的資料行。根據所使用的比較方式不同,內串連又分為等值串連、自然串連和不等串連三種。

1.2.2,外串連分為左外串連(LEFT OUTER JOIN或LEFT JOIN)、右外串連(RIGHT OUTER JOIN或RIGHT JOIN)和全外串連(FULL OUTER JOIN或FULL JOIN)三種。與內串連不同的是,外串連不只列出與串連條件相匹配的行,而是列出左表(左外串連時)、右表(右外串連時)或兩個表(全外串連時)中所有符合搜尋條件的資料行。

1.2.3,交叉串連(CROSS JOIN)沒有WHERE 子句,它返回串連表中所有資料行的笛卡爾積,其結果集合中的資料行數等於第一個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。串連操作中的ON (join_condition) 子句指出串連條件,它由被串連表中的列和比較子、邏輯運算子等構成。

1.2.4,無論哪種串連都不能對text、ntext和image資料類型列進行直接連接,但可以對這三種列進行間接串連。例如:

SELECT p1.pub_id,p2.pub_id,p1.pr_info
FROM pub_info AS p1 INNER JOIN pub_info AS p2
ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)

 

1.2.5,使用WHERE子句設定查詢條件

WHERE子句設定查詢條件,過濾掉不需要的資料行。例如下面語句查詢年齡大於20的資料:

SELECT *

FROM usertable

WHERE age>20

WHERE子句可包括各種條件運算子:

比較子(大小比較):>、>=、=、<、<=、<>、!>、!<

範圍運算子(運算式值是否在指定的範圍):BETWEEN…AND…

NOT BETWEEN…AND…

列表運算子(判斷運算式是否為列表中的指定項):IN (項1,項2……)

NOT IN (項1,項2……)

模式比對符(判斷值是否與指定的字元通配格式相符):LIKE、NOT LIKE

空值判斷符(判斷運算式是否為空白):IS NULL、NOT IS NULL

邏輯運算子(用於多條件的邏輯串連):NOT、AND、OR

1、範圍運算子例:age BETWEEN 10 AND 30相當於age>=10 AND age<=30

2、列表運算子例:country IN ('Germany','China')

3、模式比對符例:常用於模糊尋找,它判斷列值是否與指定的字串格式相匹配。可用於char、varchar、text、ntext、datetime和smalldatetime等類型查詢。

可使用以下通配字元:

百分比符號%:可匹配任意類型和長度的字元,如果是中文,請使用兩個百分比符號即%%。

底線_:匹配單個任一字元,它常用來限制運算式的字元長度。

方括弧[]:指定一個字元、字串或範圍,要求所匹配對象為它們中的任一個。

[^]:其取值也[] 相同,但它要求所匹配對象為指定字元以外的任一個字元。

例如:

限制以Publishing結尾,使用LIKE '%Publishing'

限制以A開頭:LIKE '[A]%'

限制以A開頭外:LIKE '[^A]%'

空值判斷符例:WHERE age IS NULL

2,更新:update table

 

3,插入:

3.1,一般插入:

INSERT INTO publishers
(pub_id, pub_name, city, state)
VALUES
('9001', 'Acme Publishing', 'New York', 'NY')

3.2,插入多行

使用 INSERT 語句可以向表添加多行資料。這些多行資料是從已經存有這些資料的另一個表中選取的。本例中,向 pubhold 表中添加有關在加利福尼亞和德克薩斯州的出版商的資料。這些資料可從 publishers 表中獲得。

INSERT pubhpold SELECT * FROM publishers
WHERE state = 'CA' OR state = 'TX'

 

4,刪除:

4.1,Delete語句聯合刪除:

DELETE FROM uu_SuiteToMinClassroomSect

WHERE min_classroom_sect_id IN

   (SELECT min_classroom_sect_id

   FROM uu_MinClassroomSect

   WHERE min_classroom_id = '112')

二、視圖使用細則

1,一個典型的視圖

CREATE VIEW View_uuGroupTaxis

AS

SELECT uu_GroupInfo.group_id, uu_GroupInfo.group_name,

      uu_GroupType.main_type, uu_GroupType.group_type_name,

      uu_GroupInfo.group_icon_url, ISNULL

          ((SELECT COUNT(*)

          FROM uu_GroupUser

          WHERE uu_GroupInfo.group_id = uu_GroupUser.group_id), 0)

      * 50 + ISNULL(uu_GroupInfo.fundCount, 0) + ISNULL

          ((SELECT COUNT(*)

          FROM Dv_Topic

          WHERE Dv_Topic.BoardID = uu_GroupInfo.subforum_id), 0) * 5 + ISNULL

          ((SELECT COUNT(*)

          FROM uu_GroupPhotos

          WHERE uu_GroupPhotos.group_id = uu_GroupInfo.group_id), 0)

      * 10 + ISNULL(uu_GroupInfo.topic_account, 0)

      * 2 + ISNULL(uu_GroupInfo.hit_account, 0) AS group_ActiveDegree,

      ISNULL

          ((SELECT COUNT(*)

          FROM uu_GroupUser

          WHERE uu_GroupInfo.group_id = uu_GroupUser.group_id), 0)

      AS group_memberNum, ISNULL(uu_GroupInfo.fundCount, 0) AS fundCount,

          (SELECT COUNT(*)

         FROM Dv_Topic

         WHERE Dv_Topic.BoardID = uu_GroupInfo.subforum_id) AS group_articleNum,

          (SELECT COUNT(*)

         FROM uu_GroupPhotos

         WHERE uu_GroupPhotos.group_id = uu_GroupInfo.group_id) AS group_PhotoNum,

      uu_GroupInfo.topic_account, uu_GroupInfo.hit_account,

          (SELECT user_name

         FROM uu_RegisterUser

         WHERE uu_RegisterUser.user_id = uu_GroupInfo.creator_id)

      AS group_CreatorName, uu_GroupInfo.create_time

FROM uu_GroupInfo INNER JOIN

      uu_GroupType ON

      uu_GroupInfo.group_type_id = uu_GroupType.group_type_id

 

三,預存程序的建立和調用

1,預存程序的調用

Execute procedureName @param=’value’

2,一個典型的帶參數預存程序

CREATE PROCEDURE P_delMiniclassProc

 @miniClassroom_id int

AS

declare @billtag varchar(4)

set nocount on

IF @miniClassroom_id is null

         begin

                   return(-1)

         end

else

                   BEGIN TRANSACTION

                   --刪除套餐資訊

                   DELETE FROM uu_SuiteToMinClassroomSect

                   WHERE min_classroom_sect_id IN

                      (SELECT min_classroom_sect_id

                      FROM uu_MinClassroomSect

                      WHERE min_classroom_id =@miniClassroom_id)

                   --刪除小課堂段資訊

                   delete from uu_MinClassroomSect

                   where min_classroom_id = @miniClassroom_id

                   --刪除小課堂使用者購買記錄

                   delete from uu_UserBuyMinClassroom

                   where min_classroom_id = @miniClassroom_id

                   --刪除對應小課堂年級學科資訊

                   delete from uu_MinClassroomToGradeClass

                   where min_classroom_id = @miniClassroom_id

                   --刪除小課堂發言

                   delete from uu_MinClassroomDiscuss

                   where min_classroom_id = @miniClassroom_id

                   --刪除課程討論

                   DELETE FROM uu_CourseDiscuss

                   WHERE course_id IN

                      (SELECT course_id

                      FROM uu_CourseInfo

                      WHERE min_classroom_id = @miniClassroom_id)

                   --刪除使用者課程收藏

                   DELETE FROM uu_UserCellectionCourse

                   WHERE course_id IN

                      (SELECT course_id

                      FROM uu_CourseInfo

                      WHERE min_classroom_id = @miniClassroom_id)

                   --刪除小課堂小課程的使用者購買資訊

                   DELETE FROM uu_UserBuyCourse

                   WHERE course_id IN

                      (SELECT course_id

                      FROM uu_CourseInfo

                      WHERE min_classroom_id = @miniClassroom_id)

                   commit  TRANSACTION

                   return(1)

GO

四,觸發器


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。