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

首頁 > 開發(fā) > 綜合 > 正文

SQL初級階段筆記

2024-07-21 02:48:22
字體:
供稿:網(wǎng)友
SQL初級階段筆記
  1. DataBase Management Stystem(數(shù)據(jù)庫管理系統(tǒng))簡稱:DBSM;雖然DBSM并不等于數(shù)據(jù)庫,但行業(yè)內(nèi)通常將DBSM稱為數(shù)據(jù)庫,所以一般來說數(shù)據(jù)庫就指的是DBSM。
  2. 簡單來講DBSM就是我們知道的:MySQL、MSSQLServer、DB2、Oracle、access、Sybase等。
  3. SQL<>SQLServer<>MSSQLServer。/*注意這里的"<>"代表不等于*/。
  4. 主鍵分為業(yè)務(wù)主鍵和邏輯主鍵

    所謂的業(yè)務(wù)主鍵:使用有業(yè)務(wù)意義的字段做主鍵。

    所謂的邏輯主鍵:使用沒有任何業(yè)務(wù)意義的字段做主鍵。(完全給程序看的)

  5. 主鍵的設(shè)置要求

      1. 不會(huì)重復(fù)的列;

      2. 推薦用邏輯主鍵作為主鍵;   

  6. 為什么要使用主鍵

   一個(gè)表中可以沒有主鍵,但是會(huì)非常難以處理,因此沒有特殊理由,表中要設(shè)置主鍵。

  7. 何為外鍵

    比如說:我要進(jìn)貨,可能會(huì)進(jìn)不同廠家的貨物,由于在同一廠家我不一定只進(jìn)一類東西,因此當(dāng)我記錄賬單的時(shí)候,必然要記錄廠家的地址、電話等,對于不同類  貨物且同一廠家進(jìn)行記錄時(shí),還要每次都要重復(fù)的寫廠家地址等,在數(shù)據(jù)庫中我們可以用一個(gè)代號將一些重復(fù)的數(shù)據(jù)進(jìn)行替代,這樣也減少了存儲(chǔ)空間的使用,對于這  個(gè)代號來說,它是重復(fù)要寫地址所在表中的主鍵,且又是主表中的外鍵!

  8. 打開Microsoft SQL Server Management Studio之后的連接如下圖:

  

  服務(wù)器名稱填寫方式:計(jì)算機(jī)全稱/實(shí)例名 或者 ./實(shí)例名 或者 還可以直接輸入"(local)"進(jìn)行連接。這樣就可以通過本地驗(yàn)證進(jìn)行連接

  9. 新建數(shù)據(jù)庫:

    在連接后的“對象之源管理器”中,我們可以看到“數(shù)據(jù)庫”,然后右鍵點(diǎn)擊數(shù)據(jù)庫,再出現(xiàn)的菜單欄中選中“新建數(shù)據(jù)庫(N)”然后如下圖所示:

  

  在上邊只要填寫數(shù)據(jù)庫名稱就可以了!然后點(diǎn)擊確定就OK了!

  10. 新建表

    展開你新建的數(shù)據(jù)庫,右鍵點(diǎn)擊“表”,再出現(xiàn)的菜單欄中選中"新建表(N)",然后就可以添加字段也就是(列),并對數(shù)據(jù)類型進(jìn)行設(shè)置,相關(guān)設(shè)置我會(huì)在后邊寫   出。

    也可以用SQL語句建立新表:

    CREATE TABLE 表名(字段 類型名 是否為Null,字段 類型名 是否為Null,字段 類型名 是否為Null.............)

    例如:CREATE TABLE PReson(ID int NOT NULL,Name nvarchar(50),Age int)

    這樣就建立了如下表:

IDNameAge

    刪除表:

    drop table 表名

  11. 常見的數(shù)據(jù)類型有

    1. 字符串?dāng)?shù)據(jù)類型      char        此數(shù)據(jù)類型可存儲(chǔ)1~8000個(gè)定長字符串,字符串長度在創(chuàng)建時(shí)指定;如未指定,默認(rèn)為char(1)。每個(gè)字符占用1byte存儲(chǔ)空間。      nchar        此數(shù)據(jù)類型可存儲(chǔ)1~4000個(gè)定長Unicode字符串,字符串長度在創(chuàng)建時(shí)指定;如未指定,默認(rèn)為nchar(1)。每個(gè)字符占用2bytes存儲(chǔ)空間。      varchar        此數(shù)據(jù)類型可存儲(chǔ)最大值為8000個(gè)字符的可變長字符串。可變長字符串的最大長度在創(chuàng)建時(shí)指定,如varchar(50),每個(gè)字符占用1byte存儲(chǔ)空間。      nvarchar        此數(shù)據(jù)類型可存儲(chǔ)最大值為4000個(gè)字符可變長Unicode字符串。可變長Unicode字符串的最大長度在創(chuàng)建時(shí)指定,如nvarchar(50),每個(gè)字符占用    2bytes存儲(chǔ)空間。      text        此數(shù)據(jù)類型可存儲(chǔ)最大值為2147483647個(gè)字符的變長文本,并且無需指定其初始值,每個(gè)字符占用1byte存儲(chǔ)空間,一般用來存儲(chǔ)大段的文章。text數(shù)  據(jù)類型實(shí)際上是一個(gè)Large Object數(shù)據(jù)類型,        默認(rèn)情況下,此類型的數(shù)據(jù)不是存儲(chǔ)在數(shù)據(jù)行內(nèi),而是存儲(chǔ)于獨(dú)立的Large Object數(shù)據(jù)頁上。另    外,text數(shù)據(jù)類型不能做為函數(shù)、存儲(chǔ)過程或觸發(fā)器中的參數(shù)來用。      ntext        同text數(shù)據(jù)類型,只不過存儲(chǔ)的是最大值為1073741823個(gè)字符的Unicode變長文本,每個(gè)字符占用1byte存儲(chǔ)空間。        說明:無論使用哪種字符串?dāng)?shù)據(jù)類型,字符串值必須放在引號內(nèi),推薦使用單引號。

    一般情況下我是這樣區(qū)別

      varchar和nvarchar的區(qū)別:

      nvarchar中可以有像“漢字”、“日語”等文字,但varchar不允許。

      varchar(10)和char(10)

      char(10)不管你的字符夠不夠10位,我都會(huì)將空間給你留下。

      varchar(10)你有幾個(gè)我給你幾個(gè),但前提是不能超過10。

      注意:電話號碼用的是字符型。

    2. 數(shù)值數(shù)據(jù)類型      bit        此數(shù)據(jù)類型存儲(chǔ)值為0或1的二進(jìn)制字段。占用1byte存儲(chǔ)空間。      tinyint        此數(shù)據(jù)類型存儲(chǔ)0~255的整數(shù),占用1byte存儲(chǔ)空間。      smallint        此數(shù)據(jù)類型存儲(chǔ)-32768~32767的整數(shù),占用2bytes存儲(chǔ)空間。      int        此數(shù)據(jù)類型存儲(chǔ)-2147483648~2147483647的整數(shù),占用4bytes存儲(chǔ)空間。      bigint        此數(shù)據(jù)類型存儲(chǔ)-9223372036854775808~9223372036854775807的整數(shù),占用8bytes存儲(chǔ)空間。      decimal/numeric        這兩個(gè)數(shù)據(jù)類型功能相同,均為存儲(chǔ)精度可變的浮點(diǎn)值。但推薦采用decimal,因其存儲(chǔ)的數(shù)據(jù)“更有說明性”。此種數(shù)據(jù)類型由兩個(gè)值來確定        decimal(p,s),p為精度,s為標(biāo)量,如decimal(3,2),其中數(shù)值2為小數(shù)的位數(shù),那么decimal(3,2)可用來存儲(chǔ)如1.28這樣的浮點(diǎn)數(shù)。此種數(shù)據(jù)類型占用的存儲(chǔ)空   間取決于精度值p。p為1~9,占用5bytes存儲(chǔ)空間;p為10~19,占用9bytes存儲(chǔ)空間;p為20~28,占用13bytes存儲(chǔ)空間;p為29~38,占用17bytes存儲(chǔ)空   間。      float        此數(shù)據(jù)類型存儲(chǔ)1~53的可變精度的浮點(diǎn)值,精度表示為float(n),n表示科學(xué)記數(shù)法的尾數(shù),取值范圍為-1.79E+308~-2.23E-308的負(fù)數(shù)和2.23E-    308~1.79E+308的正數(shù)。其存儲(chǔ)空間由精度值        決定,n為1~24,占用4bytes存儲(chǔ)空間;n為25~53,占用8bytes存儲(chǔ)空間。      real        此數(shù)據(jù)類型存儲(chǔ)-3.40E+38~-1.18E-38的負(fù)數(shù)和1.18E~3.40E+38的正數(shù)。占用4bytes存儲(chǔ)空間。      smallmoney        此數(shù)據(jù)類型存儲(chǔ)-214748.3648~214748.3647的貨幣值,精確到小數(shù)后4位。占用4bytes存儲(chǔ)空間。      money        此數(shù)據(jù)類型存儲(chǔ)-922337203685477.5808~922337203685477.5807的貨幣值,精確到小數(shù)后4位。占用8bytes存儲(chǔ)空間。    3. 日期和時(shí)間數(shù)據(jù)類型      smalldatetime        此數(shù)據(jù)類型存儲(chǔ)從1900年1月1日到2079年6月6日的日期。占用4btyes存儲(chǔ)空間。      datetime        此數(shù)據(jù)類型存儲(chǔ)從1753年1月1日到9999年12月31日的日期。占用8bytes存儲(chǔ)空間。    4. 二進(jìn)制數(shù)據(jù)類型      binary        此數(shù)據(jù)類型存儲(chǔ)1~8000個(gè)字符的二進(jìn)制數(shù)據(jù),其指定長度即為占用的存儲(chǔ)空間。      varbinary        此數(shù)據(jù)類型存儲(chǔ)可變長的二進(jìn)制數(shù)據(jù),可在創(chuàng)建時(shí)指定其具體長度,也可不指定。    5. 其它數(shù)據(jù)類型      rowversion/timestamp        這兩種數(shù)據(jù)類型功能一樣,但Microsoft建議在任何情況下盡可能地指明rowversion而不是timestamp,因?yàn)閞owversion更加準(zhǔn)確地反應(yīng)了數(shù)據(jù)類型的    真實(shí)性質(zhì)。timestamp數(shù)據(jù)類型跟時(shí)間完全無        關(guān),它表明數(shù)據(jù)庫中的數(shù)據(jù)修改發(fā)生的相對順序。不要在鍵(尤其是主鍵)中使用timestamp     列,因?yàn)槊看涡薷男袝r(shí),timestamp值都會(huì)更改。當(dāng)指定數(shù)據(jù)類型為rowversion或timestamp,那么         SQL Server會(huì)在對表的插入或刪除等    更新操作時(shí)自動(dòng)生成一個(gè)新值,并把這個(gè)新值放在合適的字段里。此類型數(shù)據(jù)占用8bytes存儲(chǔ)空間。      uniqueidentifier        此類型數(shù)據(jù)存儲(chǔ)二進(jìn)制值,其作用與全局唯一標(biāo)識符(GUID)一樣。GUID 主要用于在有多個(gè)節(jié)點(diǎn)、多臺計(jì)算機(jī)的網(wǎng)絡(luò)中,分配必須具有唯一性的標(biāo)識符。    占用16bytes存儲(chǔ)空間。

  12. 主鍵的設(shè)置

  

  右鍵點(diǎn)擊如圖所示中的位置,在彈出來的菜單中選中設(shè)置主鍵就OK了。當(dāng)想取消將其作為主鍵的時(shí)候右鍵點(diǎn)擊,選中“刪除主鍵”就OK了。

  有一些類型是可以設(shè)置主鍵,但有些不能能夠設(shè)置主鍵。比如說:nvarchar(max)就不能、而nvarchar(50)可以!

  一般有兩個(gè)設(shè)置主鍵是合理的(int(digint)、uniqueidentifier)

  13.字段的添加和刪除

    在上圖12中,對應(yīng)的“列命”、“屬性類型”、“允許Null值”中對應(yīng)填寫就可以。若保存后,想進(jìn)行修改,就右鍵點(diǎn)擊你新建的表——》設(shè)計(jì)(G)——》然后就可以填寫  了!

  不知大家注意了沒有:主鍵不能為空!

  14.在表中填充數(shù)據(jù)

    右鍵點(diǎn)擊你新建的表——》編輯前200行(E)——》然后就可以填寫了!

  15. SQL語句:是和DBMS交談專用的語句

   注意:SQL字符串用單引號;

      SQL語句大小寫不敏感;

      SQL語句主要分:DDL(數(shù)據(jù)定義語言)Create Table 、Drop Table等(改變表的結(jié)構(gòu))

              DML(數(shù)據(jù)操作語言)Select、Insert等(不改變表的結(jié)構(gòu))

  16. 填充表或者插入數(shù)據(jù)

  insert into 表名(字段1,字段2,字段3.) values(值1,值2,值3) 例如:insert into person1(id,Name,Age) values(1,'泰山北斗@阿龍',21)

  17. 如何解決開發(fā)中系統(tǒng)自動(dòng)添加排序,也就是說,避免主鍵的重復(fù) ----- 設(shè)置標(biāo)識(zhi)規(guī)范

  右鍵點(diǎn)擊表--》設(shè)計(jì)--》如下圖所示:將”否“改成“是”

  

  標(biāo)識規(guī)范修改不成的解決辦法:

  工具--》選項(xiàng)--》Designs--》將”阻止保存要求創(chuàng)建表的更改“前面的對號去掉。

  如下圖:

  

  18. Guid的newid()方法

  newid()目的是產(chǎn)生不相同的隨機(jī)數(shù)。

  19. int 自增長字段和Guid的區(qū)別

    INT自增長字段的優(yōu)點(diǎn):占用空間小、無序開發(fā)人員干預(yù) 、易讀、

            缺點(diǎn):效率低;

    Guid的優(yōu)點(diǎn):效率高、數(shù)據(jù)導(dǎo)入導(dǎo)出方便;

        缺點(diǎn):占用空間大、不易讀;

  一般來講,大多數(shù)都使用Guid。

  若果使用int 自增字段,則在insert中可以省略對應(yīng)的字段。

  20. insert可以省略表名后的列名,但不推薦使用。  insert into Person0(FNumber,FName,FAge,Fsalary) values('liqianlong','李乾龍',21,2.15)

  或者 insert into Person0 values('liqianlong','李乾龍',21,2.15)也可以。

insert into 就是向表中插入數(shù)據(jù)   

  21. update -- 更新數(shù)據(jù)

    update 表名 Set 列1名=值,列2名=值......... 

    更新的時(shí)候注意中文前面要加”N“ 

    updatePerson setAge="23"

    where Age>20;

    上面兩句話的意思是:將20以上的Age更新為23

  22. 運(yùn)算符

    +、 —、 *、 /、=等于() 、<>(不等于)  or (或者)、 and (并且) 、not(非)

  21. delete的使用:

    一般和from一起使用。例如:

    delete from Person where Age>10; /*清理表中年齡大于10的數(shù)據(jù)!*/

  23. Delete和Drop的區(qū)別:

    delete是將表中數(shù)據(jù)清理了,并沒有刪除表;

    Drop是直接將表刪除掉;

  24. 用SQL設(shè)置主鍵

    例如:create table Person0(FNumber varchar(20),FName varchar(20),FAge int,FSalary numeric(10,2),PRIMARY key(FNumber))

  上面的primary key就是主鍵的意思,在SQL中是通過這樣來設(shè)置主鍵的。對于numeric(10,2)來講,10是精度(小數(shù)點(diǎn)左右兩端都包括),2是小數(shù)位數(shù)。

  25. select * from 表名

    1. 例如:select * from Person0

       where FAge>20;

  注意:上句表示從表Person中塞選FAge 大于20的數(shù)據(jù)。select意思是“選擇、挑選”

    

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 旌德县| 宁安市| 中西区| 凤冈县| 宁都县| 如皋市| 田林县| 蚌埠市| 海伦市| 永寿县| 桦南县| 化州市| 北辰区| 七台河市| 云阳县| 张家川| 龙胜| 怀柔区| 乐亭县| 景谷| 丹凤县| 贵德县| 离岛区| 湘潭县| 昌图县| 盈江县| 蓝山县| 洮南市| 沾益县| 茶陵县| 盐池县| 扎赉特旗| 安顺市| 马公市| 博客| 土默特左旗| 遂平县| 奉化市| 定兴县| 玉林市| 肇源县|