SQL server學習筆記(一)資料庫的基本知識、基本操作(分離、離線、收縮、備份、還原、附加)和基本文法

來源:互聯網
上載者:User

標籤:檔案中   實值型別   等於   系統   磁碟   外鍵約束   uid   邏輯   區別   

在軟體測試中,資料庫是必備知識,假期閑裡偷忙,整理了一點學習筆記,共同探討。

閱讀目錄

基本知識

  • 資料庫發展史
  • 資料庫名詞
  • SQL組成

基本操作

  • 登入資料庫操作
  • 資料庫遠端連線操作
  • 資料庫分離操作
  • 資料庫離線、聯機操作
  • 資料庫收縮操作
  • Database Backup、還原作業
  • 資料庫使用權限設定

基本文法

  • 建立資料庫
  • 建立表
  • 添加約束
  • 資料類型
基本知識

資料庫到底是有什麼作用?看應該就明白了。

就是應用程式發送請求操作時,到伺服器資料庫中查詢資料,然後再返回給應用程式。

資料庫起到的作用是儲存資料、檢索資料、產生新的資料,相對應的要求是:統一、安全、效能。

資料庫可以儲存大量資料,方便檢索和訪問,能保持資料資訊的一致、完整,共用和安全,通過組合分析,產生新的有用資訊。

資料庫發展史

萬物生長,如今使用的資料庫也不是一蹴而就,也是慢慢發展而來。可分為四個階段:

①萌芽階段—檔案系統,只是使用磁碟檔案來儲存資料

②初級階段—第一代資料庫Access,是網狀模型和層次模型資料庫

③中級階段—第二代資料庫SQL server、Mysql,是關係型資料庫和結構化查詢語言 (SQL)

④進階階段—新一代資料庫Oracle,是“關係-對象”型資料庫

當下最流行的資料庫是Oracle、SQL server、DB2

Oracle是“關係-對象”型資料庫,它的特點是產品免費、服務收費

SQL server是關係型資料庫,多版本,易用性好

DB2支援多作業系統、多種類型的硬體和裝置

資料庫名詞

DBA-----資料庫管理員

DB-------資料庫

DBMS--資料庫管理系統

系統資料庫:master、model、tempdb、msdb,不能隨意更改

資料檔案為.mdf或.ndf

記錄檔為.ldf

資料的預設路徑為:C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

SQL組成DML(資料操作語言)

  ——查詢、插入、刪除和修改資料庫中的資料;

  ——SELECT、INSERT、 UPDATE 、DELETE等;

DCL(資料控制語言)

  ——用來控制存取許可、存取許可權等;

  ——GRANT、REVOKE 等;

DDL(資料定義語言 (Data Definition Language))

  ——用來建立資料庫、資料庫物件和定義其列

  ——CREATE TABLE 、DROP TABLE 等

TCL  (事務控制語句)

        變數說明、流程式控制制、功能函數

  ——定義變數、判斷、分支、迴圈結構等

  ——日期函數、數學函數、字元函數、系統函數等

資料庫基本操作登入資料庫

在安裝成功後,在開始菜單中會看到如下所示檔案夾:

點擊SQL server management studio,即可出現如下登入介面:

資料庫遠端連線設定

第一步,開啟外圍配置器設定

第二步,進行相應設定

第三步,進行串連操作

資料庫的分離操作

分離是指預設情況下資料庫在聯機狀態下我們不能對資料庫檔案進行任何複製刪除等操作,如果將資料庫分離的話就可以對資料檔案進行複製、剪下、刪除等操作了。一般想直接備份資料檔案,就先分離資料庫,之後把資料檔案複製到別的地方,再把資料檔案附加回去就可以了。

操作如下所示:

先將資料庫進行分離操作:

完成上述操作,資料庫便分離成功,然後就可以做相應的複製等操作了。

分離也可以使用代碼實現,如下

sp_detach_db demo

再將分離的資料庫附加到工作面板:

附加也可以使用代碼實現,如下:

sp_attach_db demo
資料庫的離線、聯機操作

離線與聯機是相對操作,先要有離線才能執行聯機操作,與分離不同的是,離線後的資料庫只是不能被訪問了,但還在工作面板中,但分離後的資料庫,是不存在工作面板中的。當要再想使用該資料庫,離線狀態的資料庫只需要聯機即可,分離的資料庫需要附加才可以。

離線操作如下:

離線也可使用代碼實現,代碼如下:

alter database demo set offline

聯機操作如下:

聯機也可使用代碼實現,代碼如下:

alter database demo set online
資料庫收縮操作

收縮是把資料庫以及日誌的記憶體收縮

操作如下

收縮資料庫操作:

收縮記錄檔操作:

收縮檔案也可使用如下命令:

DBCC ShrinkFile(‘資料庫名‘,  targetsize);            /* 收縮資料庫檔案 */DBCC ShrinkFile(‘資料庫名_log‘,  targetsize);        /* 收縮記錄檔 */

需要注意的是:

Targetsize:單位為兆,必須為整數,DBCC SHRINKFILE 嘗試將檔案收縮到指定大小。

DBCC SHRINKFILE 不會將檔案收縮到小於“實際使用的空間”大小,例如“分配空間”為10M,“實際使用空間”為6M,當制定targetsize為1時,則將該檔案收縮到6M,不會將檔案收縮到1M。

收縮資料庫可使用如下命令:

DBCC SHRINKDATABASE(資料庫名,百分比)

此處的百分比:即“收縮後檔案中的最大可用空間”,取值範圍“大於等於0, 小於100%”,實際使用中設為0即可。

資料庫的備份、還原作業

備份操作是為了保證資料的完整性以及避免異常操作而導致資料無法挽回的操作,個人覺得是非常非常有必要的。

資料庫的備份分為如下幾種:

完全備份: 備份全部選中的檔案夾,並不依賴檔案的存檔屬性來確定備份那些檔案。(在備份過程中,任何現有的標記都被清除,每個檔案都被標記為已備份,換言之,清除存檔屬性)。完全備份也叫完整備份。

差異備份: 差異備份是針對完全備份:備份上一次的完全備份後發生變化的所有檔案。(差異備份過程中,只備份有標記的那些選中的檔案和檔案夾。它不清除標記,即:備份後不標記為已備份檔案,換言之,不清除存檔屬性)。

交易記錄備份: 在特定交易記錄備份之前執行的完整Database Backup和上次差異備份(如果有)。在完整Database Backup之後執行的所有交易記錄備份或在特定交易記錄備份之前執行的差異備份(如果您還原了差異備份)。如果你設定了復原模式為【簡單】,你將無法使用【交易記錄】備份。SQL Server 2000 和 SQL Server 2005: 建立交易記錄備份,您必須使用完整恢複或大容量日誌記錄恢複模型。

備份操作如下,此處選擇的是完整備份:

還原資料庫操作

使用權限設定

使用權限設定就是設定登入名稱和使用者名稱操作。

登入名稱與使用者名稱的區別:

1.登入名稱是指可以使用建立的登入名稱和密碼登入資料庫這個程式軟體,但不能開啟或展開使用者自己建立的資料庫;

2.使用者名稱是在登入名稱基礎上,為使用者自己建立的資料庫新加的可查看使用者,但要進行增查改刪操作仍然需要為該使用者添加使用許可權。使用者名稱可以與登入名稱相同,也可以不同。一個資料庫可以擁有多個使用者,一個使用者也可以訪問多個資料庫。

先以sa為登入名稱登入做如下操作:

建立登入名稱:

使用剛建立的登入名稱登入,去使用由sa使用者建立的資料庫,發現不可用:

建立使用者,分配許可權

添加好後就可以對sa建立的資料庫進行操作了

基本文法

說了這麼多,再來看資料庫文法怎麼操作,資料庫四大操作,就是增刪改查。在做這些操作的時候,首先得要有個資料庫,有張表,這樣才可以操作。把問題簡單化,想成平時的檔案室。資料庫就是檔案室,可以存放很多檔案,表就是檔案袋中的檔案。

建立資料庫

建資料庫和建表操作可手動建立,也可以使用代碼建立,先看手動建立:

手動建立資料庫操作如下:

完成上述兩步就已經建立好一個資料庫了。

在使用代碼操作的時候,需要先做如下所示操作,並串連:

使用代碼建立資料庫,實現如下:

create database demouse demo

還有一種建立資料庫文法,就是指定資料庫檔案參數和記錄檔參數,文法如下:

create  database  資料庫名on [primary] (  <資料檔案參數> [,…n]  [<檔案組參數>] ) [log on]  (  <記錄檔參數> [,…n] )

舉例如下:

CREATE DATABASE stuDB   ON  PRIMARY  --預設就屬於PRIMARY主檔案組,可省略( NAME=‘stuDB_data‘,  --主要資料檔案的邏輯名 FILENAME=‘D:\project\stuDB_data.mdf‘,  --主要資料檔案的實體名稱 SIZE=5mb,  --主要資料檔案初始大小 MAXSIZE=100mb,  --主要資料檔案增長的最大值 FILEGROWTH=15%   --主要資料檔案的增長率)LOG ON(  NAME=‘stuDB_log‘,  FILENAME=‘D:\project\stuDB_log.ldf‘,  SIZE=2mb,  FILEGROWTH=1MB)GO 

若一次性要建立多個資料庫或多個記錄檔,在小括弧外加個,號即可

建立表

手動建立表,操作如下:

 

儲存輸入表名即可

使用代碼建立表如下:

 

代碼為:

create table demo(nname nchar(10),age tinyint,sex int)

資料庫和表已經建立好了

首先來看增

插入一條資料:

方法一:安照列名依次給出資料值,不能交換順序,資料類型不能出錯

insert into demovalues(‘zhang‘,25,1)

方法二:

insert into demo(nname,age,sex)values(‘san‘,18,0)

方法三:交換順序,數值按照列名給就行

insert into demo(nname,sex,age)values(‘san‘,1,22)

方法四:沒給數值的列顯示null

insert into demo(nname)values(‘li‘)

插入多條資料:使用select,union是指串連的意思

insert into demo(nname,age,sex)若不寫列名,則預設插入所有列資料select ‘wang‘,28,0 unionselect ‘wu‘,30,1

插入一列

alter table demoadd sex int

複製demo表中資料到demo1表中:

insert into demo1(nname,nage,asex)select nname,age,sexfrom demo

注意事項

1:每次插入一行資料,不可能只插入半行或者幾列資料,因此,插入的資料是否有效將按照整行的完整性的要求來檢驗;

2:每個資料值的資料類型、精度和小數位元必須與相應的列匹配;

3:不能為識別欄位指定值,因為它的數字是自動成長的;

4:如果在設計表的時候就指定了某列不允許為空白,則必須插入資料;

5:插入的資料項目,要求符合檢查約束的要求

6:具有預設值的列,可以使用default(預設)關鍵字來代替插入的數值

其次來看刪

刪除某一行:

delete from demowhere nname=‘li‘

刪除某一列:

alter table demodrop column sex

刪除整張表:

delete from demo --不加where條件就是刪除整個表

清空整張表:

truncate table demo

注意:刪除整張表操作和清空整張表操作對比

  刪除是刪除了所有,包括表結構

  清空只是清空了表中資料,但表結構還在,清空速度快些

刪除資料庫

drop database new

還可以先查詢是否有該資料庫,再做刪除操作,代碼如下:

if exists(select * from sys.databases where name=‘new‘)drop database new

做了一個if判斷,sys.databases是指整個系統資料庫,刪除資料庫的前提條件是,要刪除的這個資料庫沒有被使用

然後來看改

改某一列資料

update demosetage=‘28‘where nname=‘zhang‘

set是設定要改的資料

改多列資料:

update demosetnname=‘zhao‘,age=‘13‘,sex=‘0‘where nname=‘li‘
最後就是查詢

查詢表中所有資料,*代表所有列:

select * from demo

查詢表中某一行所有資料:

select * from demowhere nname=‘li‘

查詢表中某一行某一列的資料:

select agefrom demowhere nname=‘li‘

查詢出來的結果列用as取別名:

select age as ‘年齡‘from demowhere nname=‘li‘

查詢出來的結果列用=取別名:

select wname = nnamefrom demo

注意:wname是新列名,nname是表中已存在的列名

添加約束

約束目的:保證資料的完整性和有效性

約束分為如下幾種:

1.主鍵約束:唯一非空(特點) primary key PK_

  一個表裡面只能存在一個主鍵

  允許存在把兩列作為一個主鍵

2.預設約束:預設值 default key DK_

  當不填資料時預設採用設定好的值

3.唯一約束:資料不重複,允許一行資料為空白 Unique Key 唯一允許一個為空白

4.檢查約束:用來檢查填入的資料是否滿足要求 Check Key

5.非空約束:不可為空 not null

6.外鍵約束:外鍵指的是,表A中的id為主鍵,但在表B中id不是主鍵,表A的id就是表B的id外鍵。

外鍵文法:

alter table 表名add constraint FK_欄位名--"FK"為外鍵的縮寫foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意‘關聯的表名‘和‘關聯的欄位名‘

添加約束有三種方式,分別是建表中(在列名中添加和不在列名中添加),建表後

方法一:建表中在列名中添約束,文法為:列名 資料類型 約束條件,代碼如下:

create table dome5( sid  smallint primary key, sname nchar(10) not null default ‘zhangsan‘, saddre nvarchar(20), sage tinyint unique key, semail  char(20) check (semail like ‘%@%.%‘), createtime datetime  default getdate())

方法二:建表中不在列名中添加約束,文法為:constraint    約束名    約束文法,代碼如下:

create table stdent2(    sid int,    sname nchar(15) not null default ‘zhangsan‘,    saddress nvarchar(30),    sage tinyint,    semail char(20),    stime datetime default getdate(),    constraint PK_sid primary key(sid),    constraint CK_sage check (sage>10),    constraint CK_semail check (semail like ‘%@%.%‘))

需要注意的是:預設約束只能在 列名  資料類型   後面添加,意思就是預設約束要使用在方法一添加

方法三:建完表後再添加約束,代碼如下:

alter table stuadd constraint ck_ssex check (ssex=0 or ssex=1)

alter是修改表結構

資料類型

資料類型如下表所示:

分類

備忘和說明

資料類型

說明

位元據類型

儲存非字元和文本的資料

Image

可用來儲存映像

文本資料類型

字元資料包括任意字母、符號或數字字元的組合

Char

固定長度的非 Unicode 字元資料,效率高

Varchar

可變長度非 Unicode 資料,節省空間的

Nchar

固定長度的 Unicode 資料

Nvarchar

可變長度 Unicode 資料

Text

儲存長文本資訊

Ntext

儲存可變長度的長文本

日期和時間

日期和時間在單引號內輸入

Datetime

日期和時間

數字資料

該資料僅包含數字,包括正數、負數以及分數

Bigint、int、smallint、tinyint

整數

float、real

數字

貨幣資料類型

用於十進位貨幣值

Money

 

數實值型別

例:stuid numeric(18,0),代表18位元字,小數位元為0,屬於浮點類型

numeric (18,0)

 

識別欄位

identity(起始值,遞增量)

identity(1,1)

自動遞增

Bit資料類型

表示是/否的資料

Bit

儲存布林值資料型別

 

本文僅代表作者觀點,系作者@溫一壺清酒發表。轉載請註明出處:http://www.cnblogs.com/hong-fithing/

SQL server學習筆記(一)資料庫的基本知識、基本操作(分離、離線、收縮、備份、還原、附加)和基本文法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.