SQL Server使用T-SQL創(chuàng)建數(shù)據(jù)庫的操作指南
我一開始接觸的是MySQL,之所以要學(xué)SQL server,還是因?yàn)镾QL server有MySQL所沒有的優(yōu)點(diǎn):
功能和特性上:
SQL server的管理工具( SQL Server Management Studio)功能強(qiáng)大,適合企業(yè)級應(yīng)用。支持更多的數(shù)據(jù)類型,如 XML、JSON、地理空間數(shù)據(jù)等。
數(shù)據(jù)類型上:
雖然MySQL 更加輕量,適合中小型應(yīng)用,也支持 JSON,但在某些數(shù)據(jù)類型的實(shí)現(xiàn)上可能不如 SQL Server 靈活。
SQL server還有很多其它的優(yōu)點(diǎn),等之后做項(xiàng)目的時候就可以更加直觀且清晰的感覺到,因此這里先不贅述。
一, 使用T-SQL創(chuàng)建數(shù)據(jù)庫
T-SQL全稱為transact structured query language,事務(wù)化的結(jié)構(gòu)查詢語言。是對標(biāo)準(zhǔn)SQL語言功能的擴(kuò)充??梢月暶髯兞?,有流程控制語句,支持對流程的控制等。其中,事務(wù)的概念如下:
事務(wù)transaction是需要一次性完成的操作集合。要么全部執(zhí)行,要么全部不執(zhí)行。
1,數(shù)據(jù)庫的存儲結(jié)構(gòu)
通常SQL server數(shù)據(jù)庫包含以下三類物理文件:
主要數(shù)據(jù)文件(也稱主數(shù)據(jù)文件)。擴(kuò)展名為.mdf (main data file)。
在創(chuàng)建數(shù)據(jù)庫時生成,用來存儲數(shù)據(jù)庫的啟動信息,部分或全部數(shù)據(jù)及數(shù)據(jù)庫對象,是所有數(shù)據(jù)文件的起點(diǎn),包含指向其它數(shù)據(jù)文件的指針。每個數(shù)據(jù)庫只能有一個主要數(shù)據(jù)文件。
次要數(shù)據(jù)文件。擴(kuò)展名為.ndf(個人ps:next data file)。
輔助主數(shù)據(jù)文件存儲數(shù)據(jù)及數(shù)據(jù)庫對象,可以在創(chuàng)建數(shù)據(jù)庫時創(chuàng)建,也可以在創(chuàng)建數(shù)據(jù)庫后添加。當(dāng)數(shù)據(jù)庫存儲的數(shù)據(jù)量巨大,超過了單個Windows文件的最大值或需要將重要數(shù)據(jù)與次要數(shù)據(jù)分開存儲以提高數(shù)據(jù)訪問速度和安全時,用戶可以自行創(chuàng)建一個或多個次要數(shù)據(jù)文件。一個數(shù)據(jù)庫可以沒有次要數(shù)據(jù)文件,也可以同時擁有多個次要數(shù)據(jù)文件。
日志文件。擴(kuò)展名為.ldf (log data file)。
在創(chuàng)建數(shù)據(jù)庫時生成,用于記錄系統(tǒng)操作事件的記錄文件或文件集合,這些記錄可以作為恢復(fù)數(shù)據(jù)庫的依據(jù)。當(dāng)數(shù)據(jù)庫損壞時,可以使用事務(wù)日志恢復(fù)數(shù)據(jù)庫。每個數(shù)據(jù)庫至少擁有一個日志文件,而且允許擁有多個日志文件。
2,創(chuàng)建數(shù)據(jù)庫的語法結(jié)構(gòu)
一開始腦海里面得有下面這4句:
--1,創(chuàng)數(shù)據(jù)庫 CREATE DATABASE 數(shù)據(jù)庫名 --2,創(chuàng)數(shù)據(jù)文件(主文件) ON PRIMARY(), FILEGROUP 文件組名() --3,創(chuàng)日志文件 LOG ON() --4,批處理分隔符,用來提交T-SQL語句(默認(rèn)提交次數(shù)為1,1可省略) GO
可以看到,在主數(shù)據(jù)文件部分包含一句:FILEGROUP 文件組名(),用來創(chuàng)建文件組。而文件組中存放的文件都是次要數(shù)據(jù)文件,以.ndf為文件名后綴。
批處理分隔符的設(shè)置如下,沒有什么特別的要求,一般默認(rèn)設(shè)置成“GO” 。
之后再往里面填充。這里從上至下,先填充主數(shù)據(jù)文件的部分。
ON PRIMARY( NAME=主數(shù)據(jù)文件名, -- 邏輯名 FILENAME='盤符\存儲路徑\主數(shù)據(jù)文件名.mdf', -- 物理名 SIZE=主數(shù)據(jù)文件的初始大小, MAXSIZE=主數(shù)據(jù)文件的最大容量, FILEGROWTH=主數(shù)據(jù)文件自動增長的方式(可以是百分比也可以是具體的內(nèi)存大?。? )
如果要求創(chuàng)建文件組的話,就需要在創(chuàng)建好主數(shù)據(jù)文件的結(jié)束括號后面加上逗號,再寫上創(chuàng)文件組的語句:創(chuàng)建文件組和創(chuàng)建主數(shù)據(jù)文件類似,如下
,FILEGROUP 文件組名( NAME=次要數(shù)據(jù)文件名, FILENAME='盤符\存儲路徑\次要數(shù)據(jù)文件名.ndf', SIZE=次要數(shù)據(jù)文件的初始大小, MAXSIZE=次要數(shù)據(jù)文件的最大容量, FILEGROWTH=次要數(shù)據(jù)文件自動增長的方式(可以是百分比也可以是具體的內(nèi)存大?。? )
日志文件的創(chuàng)建也一樣:
LOG ON( NAME=日志文件名, FILENAME='盤符\存儲路徑\日志文件名.ldf', SIZE=日志文件的初始大小, MAXSIZE=日志文件的最大容量, FILEGROWTH=日志文件自動增長的方式(可以是百分比也可以是具體的內(nèi)存大?。? )
知道該怎么創(chuàng)建數(shù)據(jù)庫及數(shù)據(jù)庫的3類物理文件之后,上題目:
1)使用T-SQL創(chuàng)建學(xué)生成績管理數(shù)據(jù)庫
- 數(shù)據(jù)庫名:StuScore
- 主數(shù)據(jù)文件:StuScore_data,存儲位置'盤符\...\STUSCOREDATA',初始大小10MB,按照10%自動增長,最大容量200MB
- 日志文件:StuScore_log,存儲位置'盤符\...\STUSCORELOG',初始大小3MB,自動增長方式為每次增長1MB,最大容量60MB
首先電腦上得事先創(chuàng)建好文件夾 STUSCOREDATA和STUSCORELOG。
之后按照題目要求編寫語句:
--1,創(chuàng)數(shù)據(jù)庫 CREATE DATABASE StuScore --2,創(chuàng)數(shù)據(jù)文件(主文件) ON PRIMARY( NAME=StuScore_data, FILENAME='D:\mySqlserver\STUSCOREDATA\StuScore_data.mdf', SIZE=10MB, MAXSIZE=200MB, FILEGROWTH=5%) --3,創(chuàng)日志文件 LOG ON( NAME=StuScore_log, FILENAME='D:\mySqlserver\STUSCORELOG\StuScore_log.ldf', SIZE=3MB, MAXSIZE=60MB, FILEGROWTH=1MB) --4,批處理分隔符,用來提交T-SQL語句(默認(rèn)提交次數(shù)為1,1可省略) GO
創(chuàng)建的主數(shù)據(jù)文件和日志文件如下:
二,使用T-SQL修改數(shù)據(jù)庫
1,修改數(shù)據(jù)庫的語法結(jié)構(gòu)
通過ALTER DATABASE語句,可以進(jìn)行如下操作:
- 更改數(shù)據(jù)庫名稱,不能更改數(shù)據(jù)庫的存儲位置。
- 添加,刪除數(shù)據(jù)庫文件及文件組,
- 更改文件或文件組的屬性,如名稱,容量等。
基本語法如下:
ALTER DATABASE 數(shù)據(jù)庫名 -- 重命名數(shù)據(jù)庫 MODIFY NAME<新的數(shù)據(jù)庫名> -- 添加/修改數(shù)據(jù)文件 ADD/MODIFY FILE<filespec> -- 刪除指定文件 REMOVE FILE<文件邏輯名> -- 添加/修改/刪除文件組 ADD/MODIFY/REMOVE FILEGROUP<文件組名> -- 添加日志文件 ADD LOG FILE<filespec>
其中,filespec指代如下:
<filespec> ::= NAME=文件邏輯名, FILENAME='盤符\存儲路徑\文件邏輯名.mdf/ndf/ldf', -- 文件的物理名 SIZE=文件的初始大小, MAXSIZE=文件的最大容量, FILEGROWTH=文件自動增長的方式(可以是百分比也可以是具體的內(nèi)存大?。?/pre>
1)修改學(xué)生成績管理數(shù)據(jù)庫
①增加文件組及次要數(shù)據(jù)文件
要求:
修改數(shù)據(jù)庫StuScore增加次要文件StuScore_data2,存儲位置'盤符\...\STUSCOREDATA',初始大小20MB,最大容量2GB,按照10%自動增長,放到StuScoreGroup文件組中。
之后按照要求編寫語句:
ALTER DATABASE StuScore ADD FILEGROUP StuScoreGroup ALTER DATABASE StuScore ADD FILE( NAME=StuScore_data2, FILENAME='D:\mySqlserver\STUSCOREDATA\StuScore_data2.ndf', SIZE=20MB, MAXSIZE=2GB, FILEGROWTH=10% ) TO FILEGROUP StuScoreGroup
文件組StuScoreGroup中的次要數(shù)據(jù)文件StuScore_data2.ndf在磁盤上的存儲位置??:
②增加日志文件
要求:
日志文件名:StuScore_log2,存儲位置'盤符\...\STUSCORELOG',初始大小10MB,不限制最大容量(UNLIMITED,不限制),按照1MB自動增長。
按照要求編寫語句:
ALTER DATABASE StuScore ADD LOG FILE( NAME=StuScore_log2, FILENAME='D:\mySqlserver\STUSCORELOG\StuScore_log2.ldf', SIZE=10MB, MAXSIZE=UNLIMITED, FILEGROWTH=1MB )
③修改主數(shù)據(jù)文件最大容量
要求:將主數(shù)據(jù)文件StuScore_data的最大容量設(shè)置為500MB。
按照要求編寫語句:
ALTER DATABASE StuScore MODIFY FILE( NAME=StuScore_data, MAXSIZE=500MB )
如下,修改成功
2)使用T-SQL備份數(shù)據(jù)庫
BACKUP DATABASE StuScore TO DISK = 'D:\mySqlserver\Backups\StuScore.bak' WITH FORMAT, MEDIANAME = 'StuScoreBackup', NAME = 'Full Backup of StuScore';
3)使用T-SQL刪除數(shù)據(jù)庫
DROP DATABASE StuScore
①無法刪除數(shù)據(jù)庫 "xxx",因?yàn)樵摂?shù)據(jù)庫當(dāng)前正在使用
如果點(diǎn)擊執(zhí)行之后提示“無法刪除數(shù)據(jù)庫 "xxx",因?yàn)樵摂?shù)據(jù)庫當(dāng)前正在使用。”,先簡單排除:
- 是否用該數(shù)據(jù)庫來新建查詢。
- 建議退出關(guān)閉當(dāng)前的查詢,重新開一個查詢。
我就是用上面兩種方法刪除數(shù)據(jù)庫StuScore,如果使用上述兩種方法還是無法刪除數(shù)據(jù)庫,接下來就需要將數(shù)據(jù)庫設(shè)置為單用戶模式,斷開所有連接,并刪除數(shù)據(jù)庫
ALTER DATABASE 需要刪除的數(shù)據(jù)庫名 SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE 要刪除的數(shù)據(jù)庫名;
4)重新加載數(shù)據(jù)庫
RESTORE DATABASE StuScore FROM DISK = 'D:\mySqlserver\Backups\StuScore.bak' WITH NORECOVERY; -- 多個備份文件還原 SELECT NAME FROM sys.databases
如果兩三分鐘后,數(shù)據(jù)庫依舊顯示“正在還原”,可以輸入如下語句,完成還原操作:
RESTORE DATABASE StuScore WITH RECOVERY;
之后到磁盤下,可以看到相關(guān)的數(shù)據(jù)文件和日志文件
以上就是SQL Server使用T-SQL創(chuàng)建數(shù)據(jù)庫的操作指南的詳細(xì)內(nèi)容,更多關(guān)于SQL Server T-SQL創(chuàng)建數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
必須會的SQL語句(八) 數(shù)據(jù)庫的完整性約束
這篇文章主要介紹了sqlserver中數(shù)據(jù)庫的完整性約束使用方法,需要的朋友可以參考下2015-01-01SQL?Server中row_number函數(shù)用法入門介紹
SQL?ROW_NUMBER函數(shù)是臨時值序列的非持久生成,并且在執(zhí)行查詢時會動態(tài)計(jì)算該函數(shù),下面這篇文章主要給大家介紹了關(guān)于SQL?Server中row_number函數(shù)用法的相關(guān)資料,需要的朋友可以參考下2023-03-03SQL Server存儲過程(數(shù)據(jù)庫引擎)使用詳解
存儲過程(Stored Procedure)是預(yù)編譯SQL語句集合,這些語句存儲在一個名稱(存儲過程的名稱)下并作為單元來處理,存儲過程代替了傳統(tǒng)的逐條執(zhí)行SQL語句的方式,本文小編給大家介紹了SQL Server存儲過程(數(shù)據(jù)庫引擎)使用,需要的朋友可以參考下2023-11-11SQL Server利用sp_spaceused如何查看表記錄存在不準(zhǔn)確的情況
這篇文章主要給大家介紹了關(guān)于SQL Server利用sp_spaceused如何查看表記錄存在不準(zhǔn)確情況的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用SQL Server具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04詳解安裝sql2012出現(xiàn)錯誤could not open key...解決辦法
這篇文章主要介紹了詳解安裝sql2012出現(xiàn)錯誤could not open key...解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11SQL SERVER 的SQL語句優(yōu)化方式小結(jié)
千辛萬苦,終于把數(shù)據(jù)庫服務(wù)器的CPU從超過50%(開5個程序線程)乃至100%(開10個程序線程)降低到了5%。摸索到了一些門道,總結(jié)一下2009-08-08