程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 實戰SQL語句收集(不斷更新中--)

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

編輯:關於SqlServer

前言:這裡將我編程實踐中遇到的有價值的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子句可包括各種條件運算符:


您正在看的SQLserver教程是:實戰SQL語句收集(不斷更新中--)。比較運算符(大小比較):>、>=、=、<、<=、<>、!>、!<

范圍運算符(表達式值是否在指定的范圍):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


您正在看的SQLserver教程是:實戰SQL語句收集(不斷更新中--)。

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,


您正在看的SQLserver教程是:實戰SQL語句收集(不斷更新中--)。

(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


您正在看的SQLserver教程是:實戰SQL語句收集(不斷更新中--)。 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)

--刪除用戶課程收藏

<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved