[點晴永久免費OA]SQL基礎(chǔ)之?dāng)?shù)據(jù)庫表創(chuàng)建,數(shù)據(jù)庫的分離、附加(SQL腳本版)
當(dāng)前位置:點晴教程→點晴OA辦公管理信息系統(tǒng)
→『 經(jīng)驗分享&問題答疑 』
本篇文章總結(jié)的是在SQL Server 2012數(shù)據(jù)庫環(huán)境下,使用SQL語句創(chuàng)建數(shù)據(jù)庫與創(chuàng)建表,并分離數(shù)據(jù)庫后在進(jìn)行附加操作,內(nèi)容比較基礎(chǔ),適合數(shù)據(jù)庫初學(xué)者參考學(xué)習(xí),希望對大家有所幫助!當(dāng)然,基礎(chǔ)知識掌握不牢的記得點贊收藏,以備不時之需! 下一篇文章將介紹在使用SQL Sever Management Studio管理工具時,圖形界面下,進(jìn)行數(shù)據(jù)庫的創(chuàng)建、分離、附加、數(shù)據(jù)表的創(chuàng)建等操作。 一、通過SQL語句實現(xiàn)1.1 創(chuàng)建數(shù)據(jù)庫創(chuàng)建數(shù)據(jù)庫基礎(chǔ)語法結(jié)構(gòu) create database 數(shù)據(jù)庫名稱 --創(chuàng)建數(shù)據(jù)庫 on primary ( name --數(shù)據(jù)庫數(shù)據(jù)文件的邏輯名稱 filename --物理存放位置及物理文件名稱(Student_info.mdf就是在磁盤上顯示的名稱) size --設(shè)置數(shù)據(jù)文件初始大小 maxsize --主文件的最大增長值,unlimited是無限制 filegrowth --設(shè)置主數(shù)據(jù)文件增長幅度 ) log on --定義事務(wù)日志文件 ( name --數(shù)據(jù)庫日志文件的邏輯名稱 filename --物理存放位置及物理文件名稱 size= --設(shè)置事務(wù)日志文件初始大小 maxsize --設(shè)置最大限制為 filegrowth --設(shè)置事務(wù)日志增長幅度 ) 舉個例子,創(chuàng)建一個Student數(shù)據(jù)庫,SQL腳本如下: create database Student--創(chuàng)建數(shù)據(jù)庫 on primary( name= Student,--數(shù)據(jù)庫的邏輯名稱 filename='D:\學(xué)生信息管理系統(tǒng)\Student.mdf',--物理存放位置及物理文件名稱(Student.mdf就是在磁盤上顯示的名稱) size=20,--初始大小20MB maxsize=300,--最大限制300MB filegrowth=5--主數(shù)據(jù)文件增長幅度為5MB ) log on--定義事務(wù)日志文件 ( name =Student_log,--邏輯名稱 filename='D:\學(xué)生信息管理系統(tǒng)\Student_log.ldf',--物理存放位置及物理文件名稱(Student_log.Ldf就是在磁盤上顯示的名稱) size=5,--初始大小為5MB maxsize=50,--最大限制為50MB filegrowth=1--事務(wù)日志增長幅度為1MB ) 1.2 查看、驗證創(chuàng)建的數(shù)據(jù)庫屬性是否符合要求執(zhí)行sp_helpdb系統(tǒng)存儲過程查看Student數(shù)據(jù)庫的信息。 sp_helpdb Student 查詢結(jié)果如下: 1.3 修改數(shù)據(jù)庫的屬性假如,我們發(fā)現(xiàn)數(shù)據(jù)庫的屬性,創(chuàng)建的時候不小心寫錯了或者因為別的原因需要修改數(shù)據(jù)屬性的時候應(yīng)該怎么辦呢?下邊介紹給你怎么進(jìn)行修改,例如: 將剛剛創(chuàng)建的數(shù)據(jù)庫Student數(shù)據(jù)文件的初始值大小 改為50MB, 最大值 改為400MB, 數(shù)據(jù)增長量 改為5%, 日志文件初始值 改為30MB, 最大值 改為60MB, 數(shù)據(jù)增長量 為6% --修改數(shù)據(jù)文件屬性 alter DATABASE Student MODIFY FILE ( NAME = Student,--要修改屬性的數(shù)據(jù)庫mdf文件名稱 SIZE = 50,--修改初始大小為30mb maxsize=400,--修改最大限制為300mb filegrowth=5%--修改事務(wù)日志增長幅度為5% ) --修改事務(wù)日志文件屬性 alter DATABASE Student MODIFY FILE ( NAME =Student_log,--要修改屬性日志的ldf文件名稱 size=30,--修改初始大小為20mb maxsize=60,--修改最大限制為60mb filegrowth=6%--修改事務(wù)日志增長幅度為6% ) 修改后數(shù)據(jù)庫屬性信息查詢 1.4 數(shù)據(jù)庫的分離與附加數(shù)據(jù)庫分離是指將數(shù)據(jù)庫文件從數(shù)據(jù)庫服務(wù)器實例中分離出來,相當(dāng)于關(guān)閉了數(shù)據(jù)庫。數(shù)據(jù)庫分離后,應(yīng)用程序不能連接到該數(shù)據(jù)庫,數(shù)據(jù)庫文件可以被其它進(jìn)程訪問。通常分離數(shù)據(jù)庫用于快速地將數(shù)據(jù)庫遷移到另一個SQL Server實例。數(shù)據(jù)庫分離后,還可以附加到SQL Server實例。 一般默認(rèn)情況下數(shù)據(jù)庫在聯(lián)機(jī)狀態(tài)下我們不能對數(shù)據(jù)庫文件進(jìn)行任何復(fù)制刪除等操作,如果將數(shù)據(jù)庫分離的話就可以對數(shù)據(jù)文件進(jìn)行復(fù)制、剪切、刪除等操作了。一般想直接備份數(shù)據(jù)文件,就先分離數(shù)據(jù)庫,之后把數(shù)據(jù)文件復(fù)制到別的地方,再把數(shù)據(jù)文件附加回去就可以了。備份數(shù)據(jù)庫是將數(shù)據(jù)庫中全部對象以特定格式導(dǎo)成為備份文件,至于格式全部是數(shù)據(jù)庫引擎來使用,用戶無需關(guān)心。導(dǎo)出數(shù)據(jù)庫是將數(shù)據(jù)庫中某些對象導(dǎo)出為其他格式的文件,一般都是行集的形式。 --聲明數(shù)據(jù)庫引用 use master; go --分離 exec sp_detach_db @dbname=N'數(shù)據(jù)庫名' --附加 exec sp_attach_db @dbname=N'數(shù)據(jù)庫名',@filename1=N'.mdf的文件路徑',@filename2=N'.ldf的文件路徑' 值得注意的事,直接分離可能會報錯,就像這樣“無法分離 數(shù)據(jù)庫“Student”,因為它當(dāng)前正在使用。” 如果我們遇到這種情況,可以先這樣進(jìn)行操作 --根據(jù)查詢出的DBID,得到用戶連接的spid select * from sysprocesses where dbid=DB_ID('Student') --然后殺掉它,這個是上邊語句的查詢結(jié)果,我的顯示是四個進(jìn)程 KILL 81 KILL 82 KILL 84 KILL 107 其實,分離不了數(shù)據(jù)庫的根本原因是有用戶連接操作,首先我們要終止用戶連接,終止連接就必須要干掉進(jìn)程。 再次執(zhí)行分離數(shù)據(jù)庫命令就OK了 --聲明數(shù)據(jù)庫引用 use master; go ----將數(shù)據(jù)庫Student分離 exec sys.sp_detach_db @dbname='Student' go 分離之后在進(jìn)行附加操作如下 --附加Student數(shù)據(jù)庫 exec sp_attach_db @dbname='Student',@filename1='D:\學(xué)生信息管理系統(tǒng)\Student.mdf',@filename2='D:\學(xué)生信息管理系統(tǒng)\Student_log.ldf' 1.5 創(chuàng)建數(shù)據(jù)表基本語法: create table 表名( 屬性名1 類型, 屬性名2 類型, 屬性名3 類型 --注意最后一條語句不用',' ) 舉例,在Student數(shù)據(jù)庫下,創(chuàng)建三張數(shù)據(jù)表 use Student; go --創(chuàng)建Student表 create table Student( Sno char(8) primary key not null, --學(xué)號,并設(shè)置為主鍵(primary key)和非空(not null) Sname varchar(8) not null, --學(xué)生姓名 Sex char(2) default '男' not null, --性別,設(shè)置默認(rèn)值(default)為'男' Birth smalldatetime not null, --出生年月 Classno char(3) not null, --班級號 Entrance_date smalldatetime not null, --入學(xué)時間 Home_addr varchar(40) --家庭住址(可以為空) ) --創(chuàng)建Course表 create table Course( Cno char(3) primary key not null, --課程號 Cname varchar(20) not null, --課程名稱 Toal_perior smallint, --總學(xué)時 Gredit tinyint check(Gredit>0 and Gredit<=6) --學(xué)分,這里要使用check約束 ) --創(chuàng)建sc表 create table Sc( Sno char(8) not null, --學(xué)號 Cno char(3) not null, --課程號 primary key(sno,cno), --設(shè)置sno和cno的屬性組為主鍵 foreign key(sno)references student(sno), --設(shè)置外鍵 foreign key(cno)references course(cno), --設(shè)置外鍵 Grade tinyint check( Grade>=0 and Grade<=100) --成績 ) 該文章在 2023/4/18 15:14:01 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |