這段時間因爲任務須要 SQL Server 2008 R2 數據庫,因而便學習了一下,在此記錄學習過程當中重要的東西。sql
二者可簡單理解爲:T-SQL 是 SQL Server 支持的 SQL 語法,非軟件。主要是微軟對數據庫操做增長的新語法數據庫
SELECT,INSERT,UPDATE,DELETE
複製代碼
CREATE DATABASE,DROP DATABASE
複製代碼
GRANT,REVOKE
複製代碼
物理存儲結構(數據庫文件在磁盤上的存儲形式) -- 主數據文件:xx.mdf -- 輔助數據文件:xx.ndf -- 日誌文件:xx.ldf函數
邏輯存儲結構 由數據表、視圖、索引等不一樣的數據庫對象組成,分別用於存儲特定信息並支持特定功能學習
數據庫命名規則: -- 第一個字符必須是 字母 或 _ @ #。 -- 數據庫名稱 不能是 T-SQL 的保留字 -- 不容許嵌入空格或其餘特殊字符spa
數據庫分類 -- 系統數據庫(中央管理機構) E.g:master,model,msdb,resource -- 用戶數據庫(老百姓):用戶本身建立的數據庫設計
建立數據庫須要指定的屬性 -- 文件名稱、存放位置、初始空間大小、屬於哪一個文件組 -- 文件增加:按百分比或實際大小制定增加速度 -- 文件容量設置:能夠指定文件增加的最大值或不限制 -- 兼容級別:版本號 -- 數據庫是否只讀:默認 flase -- 限制訪問:MULTI_USER (正常狀態)、SINGLE_USER (維護操做的狀態)、RESTRICTED_USER日誌
如下所有爲使用 SQL 語句操做,無視圖操做code
USE 對象(數據庫名稱)
E.g:
- USE master -- 指向當前使用的數據庫 master
- USE E_Market -- 指向當前使用的數據庫 E_Market
完整實例:
USE E_Market -- 指向當前使用的數據庫 E_Market
GO -- 批處理的標誌(執行命令最後都需此命令)
複製代碼
USE master
GO
CREATE DATABASE 數據庫名
ON PRIMARY --主文件組
-- 主數據文件
(
NAME='E_Market_data', -- 主文件邏輯文件名
FILENAME='F:\Project\E_Market_data.mdf', -- 主文件物理文件名,包含存放位置
SIZE=5MB, -- 主文件初始大小
MAXSIZE=100MB, -- 主文件增加的最大值
FILEGROWTH=15% --主文件的增加率
),
-- 以上爲以第一個文件組(主文件組)
FILEGROUP FG -- 第二個文件組(輔助數據文件)
(
NAME='FG_E_Market_data', -- 輔助文件邏輯文件名
FILENAME='F:\Project\FG_E_Market_data.ndf', -- 輔助文件物理文件名,包含存放位置
SIZE=3MB, -- 輔助文件初始大小
MAXSIZE=7MB, -- 輔助文件增加的最大值
FILEGROWTH=0 --輔助文件不啓用自動增加
)
LOG ON -- 日誌文件不屬於任何文件組
(
NAME='E_Market_log', -- 日誌文件邏輯文件名
FILENAME='F:\Project\E_Market_log.ldf', -- 日誌物理文件名,包含存放位置
SIZE=5MB, -- 日誌文件初始大小
FILEGROWTH=0 -- 未啓用自動增加
)
GO -- 批處理標誌
複製代碼
> 注意:語言使用的是 **小括號** **()**,不是花括號 {},過程當中命令後使用 **逗號** **,**而非分號 ;,命令最後一句不須要逗號
複製代碼
USE E_Market -- 指向當前使用的數據庫
ALTER DATABASE E_Market ADD FILEGROUP FG1 -- 向數據庫中添加一個名爲 FG1 的文件組
GO
-- 給新建的文件組 FG1 添加數據文件
ALTER DATABASE E_Market ADD FILE
(
NAME='FG1_E_Market_data',
FILENAME='F:\Project\FG_E_Market_data.ndf',
SIZE=5MB,
FILEGROWTH=10%
)TO FILEGROUP FG1
GO
-- 將 FG1 文件組設爲默認文件組
ALTER DATABASE E_Market
MODIFY FILEGROUP FG1 DEFAULT
GO
複製代碼
> 將選定文件組設置爲默認文件組後,添加文件將歸屬於默認文件組中
複製代碼
DROP DATABASE E_Market
-- 附加:
IF EXISTS (SELECT * FROM sysdatabases WHERE name='E_Market') -- 檢查想要刪除的數據庫是否存在
DROP DATABASE E_Market
-- 使用判斷檢查數據庫是否存在,若存在執行刪除,不然,不執行
複製代碼