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