国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2008常用的數據庫知識整理

2024-08-31 00:54:24
字體:
來源:轉載
供稿:網友
SQL Server 2008常用的數據庫知識整理

數據庫知識點:

一、計算字段

1、NULLIF函數 將 null 的姓名轉化為“佚名”;

表達式:NULLIF ( exPRession1 , expression2 ) 含義:如果兩個表達式不等價, 則 NULLIF 返回第一個 expression1的值。 如果兩個表達式等價, 則 NULLIF 返回第一個 expression1類型的空值。

2、Beween And 計算字段   如:Fsalary Between Fage*1.5+2000 And Fage*1.8+50003、SQL的語法計算,取代代碼的計算   如: Update t set fgroup=id/10

二、組合查詢 Union

1、UNION操作符可以將兩個(或多個)查詢語句的兩個查詢結果集合并成一個結果集;2、連接原則:   一是每個結果集必須有相同的列數; 二是每個結果集的列必須類型相容。3、默認規則:   UNION運算符合并了兩個查詢結果集, 其中完全重復的數據行被合并為了一條4、UNION ALL獲得所有的結果集。

三、匹配

1、_(補位)----單字符匹配2、%(所有)----多字符匹配3、[]----集合匹配   如:[AB]%,以“A” 或者“B“開頭長度, 長度任意。   注:集合取反,“^”,如“[^AB]%”

四、in語句

1、多值檢測   如:SELECT FAge,FNumber,FName FROM T_Employee   WHERE FAge IN (23, 25, 28)2、范圍值檢測(不提倡,推薦用between...and...)

五、WHERE 1=1 使用動態組裝的SQL

1、指定一個永遠為真的條件,不需要再判斷where是否存在了;2、容易造成性能損失;3、最好where與and都要拼接。 

六、窗口函數ROW_NUMBER()

1、含義:計算每一行數據在結果集中的行號(從1開始計數)

2、例:SELECT ROW_NUMBER() OVER(ORDER BY FSalary),FNumber,FName,FSalary,FAge FROM T_Employee

3、擴展: 第3行到第5行的數據: SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY FSalary DESC) AS rownum, FNumber,FName,FSalary,FAge FROM T_Employee ) AS a WHERE a.rownum>=3 AND a.rownum<=5

七、數學函數

1、ABS()函數,求絕對值;2、POWER()函數:   一般power(sex,2),第一個參數為待求冪的表達式, 第二個參數為冪。   如select POWER(2,3) 結果為8。3、SQRT()函數,計算平方根;4、RAND()函數,求隨機數(select RAND();)5、舍入到最大整數,CEILING()函數;   舍入到最小整數, FLOOR()函數;   四舍五入,ROUND()函數。6、DATENAME()函數  可選值    別名       說明  Year   yy、 yyyy    年份  Quarter  QQ, q      季度  Month   mm, m       月份  Dayofyear dy, y  每年的某一日  Day      dd, d      日期  Week    wk, ww      星期 Weekday   dw       工作日  Hour      hh        小時  Minute   mi, n      分鐘  Second   ss, s       秒  Millisecond ms      毫秒  實例:select f_GUID,DATENAME(Weekday,BirthDate) 星期       from T_Teacher7、CAST()和CONVERT()兩個函數  實例:      select IDnumber,RIGHT(IDnumber,6) 后六位 from T_TeacherTest      select IDnumber,cast(RIGHT(IDnumber,6) AS INTEGER)+1 as '后六位'       from T_Teacher      select IDnumber,CONVERT(INTEGER,RIGHT(IDnumber,6))+1 as '后六位'       from T_Teacher(注意類型)

8、COALESCE()函數 功能:空值處理   表達式:COALESCE ( expression,value1,value2……,valuen)  實例: select f_name,f_csrq,COALESCE(f_csrq,'2015-10-10') as 重要時期    from T_Studentwhere f_name = '11' (若f_csrq為NULL,則重要時期為2015-10-10;否則,重要時期為f_csrq) select f_name,f_csrq,f_zz,COALESCE(f_csrq,f_zz,'2015-10-10') as 重要時期 from T_Student where f_name = '11' (若f_csrq為NULL,則再次判斷f_zz,理解同上) 簡化版:ISNULL()函數

9、CASE函數 表達式:    CASE        WHEN condition1 THEN returnvalue1        WHEN condition 2 THEN returnvalue2        WHEN condition 3 THEN returnvalue3        ……        ELSE defaultreturnvalue       END   實例:      select Status,(case Status       when '0' then '待審核'       when '1' then '審核中'       when '2' then '審核通過'       else '審核不通過'      end       ) as 狀態      from CheckTable

10、PATINDEX()函數 表達式:PATINDEX ( '%pattern%' , expression )    含義:它返回指定表達式中模式'%pattern%'第一次出現的起始位置;       如果在全部有效的文本和字符數據類型中沒有找到該模式,則返回零。      (可以使用通配符)    實例:      select f_name,PATINDEX('%小%',f_name) as 索引位置fromT_Student

            select f_name,PATINDEX('%_小%',f_name) as 索引位置fromT_Student

      

11、幾個相關不太重要的函數   (1)REPLICATE ()函數,用來得到一個子字符串重復了若干次所組成的字符串,      表達式:REPLICATE (str,count);   (2)REVERSE()函數,將一個字符串的順序顛倒;  (3)ISDATE()函數,用來確定輸入表達式是否為有效日期;   (4)ISNUMERIC()函數,用來確定表達式是否為有效的數值類型;

八、索引與約束

1、索引     創建:create index 索引名 on 表名(字段)     刪除:drop index 表名.索引名          drop index 索引名 on 表名(MySQL用法)          drop index 索引名(Oracle 和 DB2的用法)2、約束:非空約束、唯一約束(UNIQUE 約束,如身份證)、CHECK 約束(如age>0)        主鍵約束(PRIMARY KEY)、外鍵約束()      實例:           CardID(CardID VARCHAR(18) UNIQUE           Age INT CHECK(Age >0)

九、表連接

 1、內連接(inner join) 2、不等值連接 3、交叉連接 4、自連接 5、外部連接 6、左外部連接(left join) 7、右外部連接(right join) 8、全外部連接(full outer join)注:表連接一般只是【表名】left join 【表名】 on...    在這里就不一一展示了,展示8個,只是為了面試時多說幾個連接方式,增加面試官的的好感。

十、子查詢

1、單值子查詢(標量子查詢):查詢一個列的一行記錄  (1)、select 字段名,(一個select 的查詢語句--只有一個記錄)     實例:select 1 as 測試,        (select f_name from Student where f_NO = '1') as 子查詢        
  (2)、select 字段名 from 表名 where 某個字段 = (一個select查詢語句--只有某列某個記錄,即某個值)
2、列值子查詢(表子查詢):查詢一個列的一行記錄   select a.name,b.name from a ,(select * from student s where s.Id < 1000) b3、集合運算符與子查詢(in、any、all、exists)   (1) in (select 查詢語句)    select * from Student where name in    (select f_name from StudentTest where name= '王小小')    
   (2)、any與in用法相同,任何的
   (3)、all與in用法相同,所有的
   (3)、exists與in用法相同,除了

未完待續。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡阳县| 泗水县| 廉江市| 汶上县| 通州市| 沐川县| 高安市| 客服| 新民市| 湄潭县| 瓮安县| 双城市| 平邑县| 江陵县| 富源县| 昭平县| 五大连池市| 都昌县| 巴彦淖尔市| 明溪县| 东港市| 汕尾市| 会昌县| 永平县| 油尖旺区| 建始县| 石嘴山市| 金坛市| 多伦县| 安丘市| 兴安盟| 嘉义市| 绥宁县| 沾化县| 军事| 东乡县| 曲阜市| 米易县| 庄浪县| 玛多县| 易门县|