西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

首頁西西教程數(shù)據(jù)庫教程 → MS Sql server 2008基礎知識詳細介紹

MS Sql server 2008基礎知識詳細介紹

相關軟件相關文章發(fā)表評論 來源:西西整理時間:2013/1/22 11:38:41字體大。A-A+

作者:西西點擊:0次評論:0次標簽: Sqlserver2008

  • 類型:數(shù)據(jù)庫類大。10.5M語言:中文 評分:1.4
  • 標簽:
立即下載

數(shù)據(jù)庫中常用的概念

Sql本身是一個服務器,沒有界面,Management Studio  只是一個sql server管理工具而已,不是服務器。

Sql server 在管理工具下面的服務SQL Server (MSSQLSERVER) 

主鍵:就是唯一定位的一條數(shù)據(jù)的列。不會有重復的列才能當主鍵, 一個表可以沒有主鍵,但是會非常難以處理,因此建議都要設主鍵。

兩種主鍵:

業(yè)務主鍵:使用有業(yè)務意義的字段做主鍵,如身份證號、職工編號。

邏輯主鍵:使用任何沒有意義的字段做主鍵,完全給程序看的。推薦用邏輯主鍵

常識:

1、sql語句中字符串是用單引號

2、 sql語句大小寫不敏感的。

PSE: collapse" cellspacing="0" cellpadding="0" border="1">
分類備注和說明類型說明
二進制數(shù)據(jù)類型存儲非子符和文本的數(shù)據(jù)Image可用來存儲圖像
文本數(shù)據(jù)類型字符數(shù)據(jù)包括任意字母、符號或數(shù)字字符的組合Char固定長度的非 Unicode 字符數(shù)據(jù)
Varchar可變長度非 Unicode 數(shù)據(jù)
Nchar固定長度的 Unicode 數(shù)據(jù)
Nvarchar可變長度 Unicode 數(shù)據(jù)
Text存儲長文本信息(指針,2G)
保存的是字節(jié)數(shù)據(jù)
Ntext存儲可變長度的長文本
日期和時間日期和時間在單引號內輸入Datetime日期和時間
數(shù)字數(shù)據(jù)該數(shù)據(jù)僅包含數(shù)字,包括正數(shù)、負數(shù)以及分數(shù)int
smallint
整數(shù)
float
real
數(shù)字
貨幣數(shù)據(jù)類型用于十進制貨幣值Money 
Bit數(shù)據(jù)類型表示是/否的數(shù)據(jù)Bit存儲布爾數(shù)據(jù)類型

Guid 算法是一種可以產(chǎn)生唯一標識的高效算法,它使用網(wǎng)卡MAC、地址、納秒級時間、芯片ID碼等算出來的,這樣保證每次生成的GUID永遠不會重復,無論是同一個計算機上還是不同的計算機。/

數(shù)據(jù)庫的類型uniqueidentifier

SQLServer中生成GUID的函數(shù)newid(),.Net中生成Guid的方法:Guid.NewGuid()

use 數(shù)據(jù)庫名,打開該數(shù)據(jù)庫,有時候在新建查詢時沒選擇對應的數(shù)據(jù)庫,所以用這條語句。或者手動選擇該數(shù)據(jù)庫

Insert語句可以省略表名后的列名,但是不推薦

如果插入的行中有些字段的值不確定,那么Insert的時候不指定那些列即可。

當不提供字段名時,插入值需要加入默認值defaulf 也就默認值用defaulf表示

插入數(shù)據(jù)  insert  into 表名 (字段名) values  (值)

例:insert into student ([name],age,sex,birthday) values ('張三',21,1,1995-02-26)

字段與值一一對應

1. 新建一個表

語法:create table 表名 (字段1 類型1,字段2 類型2,……)

添加主鍵 primart key (字段)

例:

    CREATE TABLE T_Employee     --創(chuàng)建一個表表名是T_Employee

    (FNumber VARCHAR(20),   --字段 類型

    FName VARCHAR(20),

    FAge INT,

    FSalary NUMERIC(10,2),

    PRIMARY KEY (FNumber)); -- 設置主鍵

2. 刪除整個表:Drop Table 表名

更新

語法:update Table set col=value,col2=value2 where ...

update 表名 set 字段 = 值,字段2 = 值2 where 條件

更新一個列:UPDATE T_Person Set Age=30

更新多個列:UPDATE T_Person Set Age=30,Name=‘tom’

更新一部分數(shù)據(jù): UPDATE T_Person Set Age=30 where Name=‘tom’,用where語句表示只更新Name是’tom’的行,注意SQL中等于判斷用單個=,而不是==

Where中還可以使用復雜的邏輯判斷UPDATE T_Person Set Age=30 where Name=‘tom’ or Age<25,or相當于C#中的||(或者)

update Person1 set NickName=N'二十歲'  在字符前面加上N代表使用Unicode編號

where (Age>20 and Age<30) or(Age=80)

Where中可以使用的其他邏輯運算符:or(或)、and(與)、not(非)、<、>、>=、<=、!=(或<>)等

3. 修改表

       添加字段

語法:alter  table 表名 add 字段 類型

例:ALTER TABLE T_Employee ADD FSubCompany VARCHAR(20);

4. 刪除

語法:delete [from] Table where col=data

         delete [from] 表名 價目where 條件

刪除表中全部數(shù)據(jù):delete from 表名

Delete只是刪除數(shù)據(jù),表還在,和Drop Table不同。

Delete 也可以帶where子句來刪除一部分數(shù)據(jù):DELETE FROM T_Person WHERE FAge > 20

刪除表中全部的數(shù)據(jù)

1、  Delete 表名  刪除之后的id繼續(xù)上一次的值后。

2、runcate Table 表名  同時還原標識 也就是說設置默認的id從1開始

5. 檢索

語法: select col,col2[,*] from Table where ...

            Select 字段 from 表名 where 條件

簡單的數(shù)據(jù)檢索 :SELECT * FROM表名

只檢索需要的列 :SELECT 字段 表名

列別名:SELECT FNumber AS 編號,FName AS 姓名,FAge AS Age111 FROM T_Employee

使用where檢索符合條件的數(shù)據(jù):SELECT 字段 FROM 表名 WHERE 條件。故事:新員工的數(shù)據(jù)檢索噩夢。

還可以檢索不與任何表關聯(lián)的數(shù)據(jù):select 1+1;select newid();select getdate();

6. 函數(shù)

1、   聚合函數(shù)

最大值 MAX(字段)

最小值 MIN(字段)

平均值 AVG (字段)

求和   SUM (字段)

數(shù)量  COUNT(*)

2、   數(shù)字函數(shù)

執(zhí)行備注中的代碼

  ABS() :求絕對值。

CEILING():舍入到最大整數(shù) 。3.33將被舍入為4、2.89將被舍入為3、-3.61將被舍入為-3。 Ceiling→天花板

FLOOR():舍入到最小整數(shù)。3.33將被舍入為3、2.89將被舍入為2、-3.61將被舍入為-4。 Floor→地板。

ROUND():四舍五入。舍入到“離我半徑最近的數(shù)” 。Round→“半徑”。例:Round(3.1425,2)。

解釋:3.1425是在四舍五入的值,2是精確的位數(shù)

3、   字符串函數(shù)

LEN() :計算字符串長度   求字符

DATALENGTH(): 計算字節(jié)長度  求字節(jié)  一個漢字兩個字節(jié)

                     例:

                     select len('123是數(shù)字') --字符

select datalength('123是數(shù)字') --字節(jié)

       注意:text類型保存的是字節(jié)數(shù)據(jù),所以不能用len()

LOWER():  轉小寫

UPPER () :轉大寫

LTRIM():  字符串左側的空格去掉

RTRIM () :字符串右側的空格去掉

               例:LTRIM(RTRIM('         bb        '))

SUBSTRING(string,start_position,length)

參數(shù):string為主字符串,

start_position為子字符串在主字符串中的起始位置,從1開始

length為子字符串的最大長度。

例:SELECT  SUBSTRING('abcdef111',2,3)

4、   日期函數(shù)

GETDATE() :取得當前日期時間

DATEADD (datepart , number, date ),計算當前的時間前或后

參數(shù):datepart 計量單位  值:year、month、day

number 增量 正數(shù)是后,負數(shù)是前

date 日期

                            例:--獲得當前日期前年的時間

select dateadd(month,1,getdate())

DATEDIFF ( datepart , startdate , enddate ) :計算兩個日期之間的差額。 參數(shù):datepart  計量單位

  startdate  起始日期

 enddate  結束日期

例:統(tǒng)計不同工齡的員工的個數(shù):

select DateDiff(year,FInDate,getdate()),count(*) from T_Employee group by DateDiff(year,FInDate,getdate())

DATEPART (datepart,date):返回一個日期的特定部分

參數(shù):datepart  計量單位

         date   日期

統(tǒng)計員工的入職年份個數(shù):

select DatePart(year,FInDate),count(*) from T_Employee

group by DatePart(year,FInDate)

5、   類型轉換函數(shù)

CAST ( expression AS data_type)

參數(shù):expression 要轉換的值

 data_type  要轉換的類型

例:select cast(right('abc2011-02-24',10) as datetime)

CONVERT ( data_type, expression)

參數(shù):expression 要轉換的值

 data_type  要轉換的類型

例:select convert(datetime,right('2012-11-24',10))

6、空值處理函數(shù)

ISNULL(expression,value) :

參數(shù):如果expression值為null,剛返回value的值

7、   CASE函數(shù)

單值判斷,相當于switch case

例:select fsalary, case 

       when fsalary < 4500 then '初級'

       when fsalary < 8000 then '中級'

       when fsalary > 8000 then '高級'

       end as '等級'

from t_employee

注:then 后面除了給常量之外,還可以給列

7. 數(shù)據(jù)排序

ORDER BY子句位于SELECT語句的末尾,它允許指定按照一個列或者多個列進行排序,

升序  ASC(從小到大排列)默認

降序  DESC(從大到小排列)。

按照年齡從大到小排序,如果年齡相同則按照工資從大到小排序 :SELECT * FROM  T_Employee ORDER BY FAge DESC,FSalary DESC(多個排序條件)

ORDER BY子句要放到WHERE子句之后

例:       SELECT * FROM T_Employee WHERE FAge>23 ORDER BY FAge DESC,FSalary DESC

8. 通配符過濾

通配符過濾關鍵字使用LIKE 。

單字符匹配的通配符為半角下劃線“_”,它匹配單個出現(xiàn)的字符。

例:以任意字符開頭,剩余部分為“erry”

SELECT * FROM T_Employee WHERE FName LIKE '_erry'

多字符匹配的通配符為半角百分號“%”,它匹配任意次數(shù)(零或多個)出現(xiàn)的任意字符。 “k%”匹配以“k”開頭、任意長度的字符串

例:檢索姓名中包含字母“n”的員工信息

SELECT * FROM T_Employee WHERE FName LIKE '%n%'

通配符解釋示例
‘_’一個字符A Like 'C_'
%任意長度的字符串B Like 'CO_%'
[ ]括號中所指定范圍內的一個字符C Like '9W0[1-2]'
[^]不在括號中所指定范圍內的一個字符D Like ‘%[A-D][^1-2]'

-任意一個字符

%                  任意多個字符

'[^a]%a%'  非a開頭,中間含有a的任意多個字符

'[a-d]'    匹配a到d之間任意一個字符

9. 空值處理

數(shù)據(jù)庫中,一個列如果沒有指定值,那么值就為null,這個null和C#中的null不一樣,數(shù)據(jù)庫中的null表示“不知道”,而不是表示沒有

因此select null+1結果是null,因為“不知道”加1的結果還是“不知道”。

SQL中使用is null、is not null來進行空值判斷:

例:

SELECT * FROM T_Employee WHERE FNAME is null ;FNAME為空的值

SELECT * FROM T_Employee WHERE FNAME is not null ;fname不是空值

10. 多值匹配  使用關鍵字

要刪除多條記錄怎么辦?

例:Delete T_Employee where FId in (21,22)

BETWEEN  包括該值

例:SELECT * FROM T_Employee WHERE FAGE BETWEEN 23 AND 27

等價于:SELECT * FROM T_Employee WHERE FAGE>=23 AND FAGE <=27

11.  數(shù)據(jù)分組

按照年齡進行分組統(tǒng)計各個年齡段的人數(shù):

SELECT FAge,Count(*) FROM T_Employee GROUP BY Fage

GROUP BY子句必須放到WHERE語句的之后

沒有出現(xiàn)在GROUP BY子句中的列是不能放到SELECT語句后的列名列表中的 (聚合函數(shù)中除外)

多條件查詢:多條件分組時,將條件相加,看是否相等,如果相等,就為一組

例:select fage,ftest,count(*) from t_employee group by fage,ftest

Having語句(分組后查詢條件)

分組統(tǒng)計之后查詢條件不能用where 而要用having語句,Having要位于Group By之后

例:--進年齡分組統(tǒng)計,同時ftese數(shù)量等于的

select fage,count(fage) from t_employee group by fage having count(ftest) = 2

12.  限制結果集行數(shù)  top

--查詢前行記錄

select top 3 * from T_Employee order by fsalary desc

--分頁查詢

select top 3 * from t_Employee where fnumber not in (

select top 3 fnumber  from T_Employee order by fsalary desc

)order by fsalary desc

13.  去掉數(shù)據(jù)重復  distinct

例:select distinct fdepartment from t_employee

--多個列時和group by 一樣,按照多個列組合值判斷是否重復

select distinct fdepartment,fsubcompany from t_employee

14. 聯(lián)合結果集 UNION 

基本的原則:每個結果集必須有相同的列數(shù);每個結果集的列必須類型相容。

1. UNION合并兩個查詢結果集,并且將其中完全重復的數(shù)據(jù)行合并為一條

2. Union因為要進行重復值掃描,所以效率低,因此如果不是確定要合并重復行

那么就用UNION ALL

Union 和Union All 的區(qū)別

Union         合并重復項,并且去掉重復項

Union All 合并重復項,不去掉重復項

問題:

在sql server 2008 中出現(xiàn)了“阻止保存要求重新創(chuàng)建表的更改”

解決辦法:工具->選項->-Designers>取消“阻止保存要求重新創(chuàng)建表的更改”

行號和自動換行

工具—>選項—>文本編輯器—>純文本 右邊就有行號和文本編輯器

那些都是浮云,只有本領才是王道

    sql server
    (11)sql server
    西西軟件園提供免費的下載,是很多小型企業(yè)公司使用到的數(shù)據(jù)庫軟件,是一個功能強大且可靠的數(shù)據(jù)管理系統(tǒng),它功能豐富,能保護數(shù)據(jù),并且可改善嵌入式應用程序客戶端輕型應用程序以及本地數(shù)據(jù)存儲區(qū)的性能。具有易于部署以及可以快速設計原型的特點,您可以無償獲取并可以隨應用程序免費再分發(fā)。它設計成可與其他服務器基礎結構資產(chǎn)無縫集成。...更多>>

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)