為什麼要使用sql語句建庫建表? 現在假設這樣一個場景,公司的項目經過測試沒問題後需要在客戶的實際環境中進行演示,那就需要對數據進行移植,現在問題來了:客戶的資料庫版本和公司開發階段使用的資料庫不相容怎麼移植? 行之有效的辦法就是編寫比較通用的SQL語句,編寫完畢後存入*.sql文件中,最後複製到客...
為什麼要使用sql語句建庫建表?
現在假設這樣一個場景,公司的項目經過測試沒問題後需要在客戶的實際環境中進行演示,那就需要對數據進行移植,現在問題來了:客戶的資料庫版本和公司開發階段使用的資料庫不相容怎麼移植?
行之有效的辦法就是編寫比較通用的SQL語句,編寫完畢後存入*.sql文件中,最後複製到客戶的電腦中,並執行*.sql文件中的SQL語句,從而實現後臺資料庫的移植。所以我們很有必要掌握如何使用SQL語句,實現創建資料庫、創建表、添加約束和創建登錄賬戶等!
使用SQl語句創建和刪除資料庫
創建資料庫
語法:
create database 資料庫名
on 【primary】
(
<數據文件參數> 【,……..N】 【<文件組參數>】
)
【log on】
(
{<日誌文件參數> 【,……..N】 }
)
數據文件的具體參數如下:
(【name=邏輯文件名,】
filename=物理文件名
【,size=大小】
【,maxsize={最大容量|unlimited}】
【,filegrowth=增長量】) 【,………N】
文件組的具體參數如下:
filegroup 文件組名 <文件參數> 【,………N】
其中,“【】”表示可選的部分,“{}”表示必需的部分。各參數的含義如下:
資料庫名:資料庫的名稱,最長為128個字元。
primary:給選項是一個關鍵字,指定主文件組中的文件。
log on :指明事務日誌文件的明確定義。
name:指定資料庫的邏輯名稱,這是在SQL Server中使用的名稱,是資料庫在SQL Server 中的標識符。
filename:指定資料庫所在文件的操作系統文件名稱和路徑,該操作系統文件名和name的邏輯名稱一一對應。
size:指定資料庫的初始容量的大小。
maxsize:制定操作系統文件文件可以增長到的最大值。
filegrowth:指定文件每次增長的大小,當指定數據為0時,表示文件不增長。
提示:一個資料庫可以有多個數據文件(一個為主數據文件其他的為次要數據文件)和多個日誌文件組成,但不能沒有數據文件和日誌文件。
刪除資料庫
當我們創建資料庫是如果該資料庫已存在就需要先刪除之後才能創建成功。
語法:
drop database 資料庫名
那如何檢測該資料庫是否存在呢?
在SQL Server將資料庫的清單存放在master系統資料庫的sysdatabases表中,只需藉助select語句查看sysdatabases表中是否存在該資料庫的記錄即可。
demo:
use master go --批處理語句和下麵的T-SQL語句分開 exec sp_configure 'show advanced options',1--設置“show advanced options”參數為一獲取修改"sp_cmdshell"系統高級選項的許可權 go reconfigure --提交操作 go exec sp_configure 'xp_cmdshell',1--允許sql server調用資料庫之外的操作系統命令 go reconfigure go exec xp_cmdshell 'mkdir E:\text'--在E盤創建文件夾“text” go --檢測資料庫中是否已存在資料庫text_data if exists(select * from sysdatabases where name='text_data') drop database text_data --刪除資料庫text——data --創建資料庫text——data create database text_data on primary ( name ='text_data1', filename ='E:\text\text_data1.mdf', size=10MB, maxsize =50MB, filegrowth=3MB ), ( name='text_data2', filename ='E:\text\text_data2.ndf' ) log on ( name ='text_log', filename ='E:\text\text_log.ldf', size =3MB, maxsizes=10MB, filegrowth=1MB )
使用SQL語句創建和刪除表
創建表
create tabe 表名
(
列1 數據類型 列的特征,
列2 數據類型 列的特征,
……
)
其中”列的特征“包括是否為空(NULL)、是否為標識列(自動編號(IDENTITY(1,1)))、是否有預設值(DEFAULT)及是否為主建(PRIMARY KEY )等
刪除表
同創建資料庫一樣如果該表已經存在我們需要先刪除表在創建
語法:
drop table 表名
表的清單存放在該庫的系統表sysobjects中
demo:
use text_data go if exists(select * from sysobjects where name ='textinfo')--檢測textinfo表是否存在 drop table textinfo--刪除表textinfo create table textinfo--創建表textinfo ( Tid int identity(1,1) primary key not null,--主鍵、標識列訂、不可為空 Tinfo nvarchar(200) not null--不可為空 )
添加約束
語法:
alter table 表名
add constraint 約束名 約束類型 具體的約束說明
demo:
alter table textinfo--添加約束的表 add constraint fK_typeid foreign key(typeid) references texttype(typeid)--添加外建約束
刪除約束
語法:
alter table 表名
drop constraint 約束名
demo:
alter table textinfo--要刪除約束的表 drop constraint fK_typeid --要刪除的約束