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

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → MS Sql server 2008基礎(chǔ)知識(shí)詳細(xì)介紹

MS Sql server 2008基礎(chǔ)知識(shí)詳細(xì)介紹

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

作者:西西點(diǎn)擊:0次評(píng)論:0次標(biāo)簽: Sqlserver2008

  • 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大小:10.5M語(yǔ)言:中文 評(píng)分:1.4
  • 標(biāo)簽:
立即下載

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

Sql本身是一個(gè)服務(wù)器,沒(méi)有界面,Management Studio  只是一個(gè)sql server管理工具而已,不是服務(wù)器。

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

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

兩種主鍵:

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

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

常識(shí):

1、sql語(yǔ)句中字符串是用單引號(hào)

2、 sql語(yǔ)句大小寫(xiě)不敏感的。

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

Guid 算法是一種可以產(chǎn)生唯一標(biāo)識(shí)的高效算法,它使用網(wǎng)卡MAC、地址、納秒級(jí)時(shí)間、芯片ID碼等算出來(lái)的,這樣保證每次生成的GUID永遠(yuǎn)不會(huì)重復(fù),無(wú)論是同一個(gè)計(jì)算機(jī)上還是不同的計(jì)算機(jī)。/

數(shù)據(jù)庫(kù)的類(lèi)型uniqueidentifier

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

use 數(shù)據(jù)庫(kù)名,打開(kāi)該數(shù)據(jù)庫(kù),有時(shí)候在新建查詢(xún)時(shí)沒(méi)選擇對(duì)應(yīng)的數(shù)據(jù)庫(kù),所以用這條語(yǔ)句;蛘呤謩(dòng)選擇該數(shù)據(jù)庫(kù)

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

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

當(dāng)不提供字段名時(shí),插入值需要加入默認(rèn)值defaulf 也就默認(rèn)值用defaulf表示

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

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

字段與值一一對(duì)應(yīng)

1. 新建一個(gè)表

語(yǔ)法:create table 表名 (字段1 類(lèi)型1,字段2 類(lèi)型2,……)

添加主鍵 primart key (字段)

例:

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

    (FNumber VARCHAR(20),   --字段 類(lèi)型

    FName VARCHAR(20),

    FAge INT,

    FSalary NUMERIC(10,2),

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

2. 刪除整個(gè)表:Drop Table 表名

更新

語(yǔ)法:update Table set col=value,col2=value2 where ...

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

更新一個(gè)列:UPDATE T_Person Set Age=30

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

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

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

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

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

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

3. 修改表

       添加字段

語(yǔ)法:alter  table 表名 add 字段 類(lèi)型

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

4. 刪除

語(yǔ)法:delete [from] Table where col=data

         delete [from] 表名 價(jià)目where 條件

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

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

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

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

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

2、runcate Table 表名  同時(shí)還原標(biāo)識(shí) 也就是說(shuō)設(shè)置默認(rèn)的id從1開(kāi)始

5. 檢索

語(yǔ)法: select col,col2[,*] from Table where ...

            Select 字段 from 表名 where 條件

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

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

列別名:SELECT FNumber AS 編號(hào),FName AS 姓名,FAge AS Age111 FROM T_Employee

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

還可以檢索不與任何表關(guān)聯(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() :求絕對(duì)值。

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)。

解釋?zhuān)?.1425是在四舍五入的值,2是精確的位數(shù)

3、   字符串函數(shù)

LEN() :計(jì)算字符串長(zhǎng)度   求字符

DATALENGTH(): 計(jì)算字節(jié)長(zhǎng)度  求字節(jié)  一個(gè)漢字兩個(gè)字節(jié)

                     例:

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

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

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

LOWER():  轉(zhuǎn)小寫(xiě)

UPPER () :轉(zhuǎn)大寫(xiě)

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

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

               例:LTRIM(RTRIM('         bb        '))

SUBSTRING(string,start_position,length)

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

start_position為子字符串在主字符串中的起始位置,從1開(kāi)始

length為子字符串的最大長(zhǎng)度。

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

4、   日期函數(shù)

GETDATE() :取得當(dāng)前日期時(shí)間

DATEADD (datepart , number, date ),計(jì)算當(dāng)前的時(shí)間前或后

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

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

date 日期

                            例:--獲得當(dāng)前日期前年的時(shí)間

select dateadd(month,1,getdate())

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

  startdate  起始日期

 enddate  結(jié)束日期

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

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

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

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

         date   日期

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

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

group by DatePart(year,FInDate)

5、   類(lèi)型轉(zhuǎn)換函數(shù)

CAST ( expression AS data_type)

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

 data_type  要轉(zhuǎn)換的類(lèi)型

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

CONVERT ( data_type, expression)

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

 data_type  要轉(zhuǎn)換的類(lèi)型

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

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

ISNULL(expression,value) :

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

7、   CASE函數(shù)

單值判斷,相當(dāng)于switch case

例:select fsalary, case 

       when fsalary < 4500 then '初級(jí)'

       when fsalary < 8000 then '中級(jí)'

       when fsalary > 8000 then '高級(jí)'

       end as '等級(jí)'

from t_employee

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

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

ORDER BY子句位于SELECT語(yǔ)句的末尾,它允許指定按照一個(gè)列或者多個(gè)列進(jìn)行排序,

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

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

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

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

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

8. 通配符過(guò)濾

通配符過(guò)濾關(guān)鍵字使用LIKE 。

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

例:以任意字符開(kāi)頭,剩余部分為“erry”

SELECT * FROM T_Employee WHERE FName LIKE '_erry'

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

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

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

通配符解釋示例
‘_’一個(gè)字符A Like 'C_'
%任意長(zhǎng)度的字符串B Like 'CO_%'
[ ]括號(hào)中所指定范圍內(nèi)的一個(gè)字符C Like '9W0[1-2]'
[^]不在括號(hào)中所指定范圍內(nèi)的一個(gè)字符D Like ‘%[A-D][^1-2]'

-任意一個(gè)字符

%                  任意多個(gè)字符

'[^a]%a%'  非a開(kāi)頭,中間含有a的任意多個(gè)字符

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

9. 空值處理

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

因此select null+1結(jié)果是null,因?yàn)椤安恢馈奔?的結(jié)果還是“不知道”。

SQL中使用is null、is not null來(lái)進(jìn)行空值判斷:

例:

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

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

10. 多值匹配  使用關(guān)鍵字

要?jiǎng)h除多條記錄怎么辦?

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

BETWEEN  包括該值

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

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

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

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

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

GROUP BY子句必須放到WHERE語(yǔ)句的之后

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

多條件查詢(xún):多條件分組時(shí),將條件相加,看是否相等,如果相等,就為一組

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

Having語(yǔ)句(分組后查詢(xún)條件)

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

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

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

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

--查詢(xún)前行記錄

select top 3 * from T_Employee order by fsalary desc

--分頁(yè)查詢(xún)

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ù)重復(fù)  distinct

例:select distinct fdepartment from t_employee

--多個(gè)列時(shí)和group by 一樣,按照多個(gè)列組合值判斷是否重復(fù)

select distinct fdepartment,fsubcompany from t_employee

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

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

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

2. Union因?yàn)橐M(jìn)行重復(fù)值掃描,所以效率低,因此如果不是確定要合并重復(fù)行

那么就用UNION ALL

Union 和Union All 的區(qū)別

Union         合并重復(fù)項(xiàng),并且去掉重復(fù)項(xiàng)

Union All 合并重復(fù)項(xiàng),不去掉重復(fù)項(xiàng)

問(wèn)題:

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

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

行號(hào)和自動(dòng)換行

工具—>選項(xiàng)—>文本編輯器—>純文本 右邊就有行號(hào)和文本編輯器

那些都是浮云,只有本領(lǐng)才是王道

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

      05-15 / 91.2M

      推薦理由:SQL Server 2008 Express 是 SQL Server 的免費(fèi)版本,是學(xué)習(xí)和構(gòu)建桌面及小型服務(wù)器應(yīng)用程序的理想選擇,且
    • Microsoft SQL Server 2000 Enterp

      05-15 / 358.4M

      推薦理由:SQL Server 是一個(gè)關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同開(kāi)發(fā)的于1988
    • sqlserver2005驅(qū)動(dòng)包

      11-14 / 3.5M

      推薦理由:這是連接sql server2005所必須用到的驅(qū)動(dòng)包,找個(gè)能用的sqlserver2005 jdbc 驅(qū)動(dòng)真不容易啊,這是經(jīng)過(guò)我測(cè)試
    • Microsoft SQL Server 2005 Expres

      06-02 / 40.0M

      推薦理由: SQL Server Express 是一種強(qiáng)大而可靠的數(shù)據(jù)管理產(chǎn)品,可以為嵌入的應(yīng)用程序客戶(hù)端、輕型 Web 應(yīng)用程
    • Microsoft SQL Server 2008 Native

      09-30 / 10.5M

      推薦理由:Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是一個(gè)同時(shí)包含 SQL OLE DB 訪(fǎng)問(wèn)接口
    • SQL Server數(shù)據(jù)庫(kù)管理及開(kāi)發(fā)工具(N

      05-16 / 42.7M

      推薦理由: Navicat for SQL Server 是一套專(zhuān)為 Microsoft SQL Server設(shè)計(jì)的強(qiáng)大數(shù)據(jù)庫(kù)管理及開(kāi)發(fā)工具。它可以用

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

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

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