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