SQLServer數據庫有哪幾種文件組成?
主數據文件:*.mdf
次要數據文件:*.ndf
日志文件:*.ldf
創建SQLServer數據庫時,需要指定哪些屬性?
1.文件存放位置,分配的初始空間,屬於哪個文件組
2.文件增長:可以按百分比或實際大小指定增長速度
3.文件容量設置:可以指定文件增長的最大值或不受限
創建數據庫
CREATE DATABASE 數據庫名 ON [PRIMARY] ( <數據文件參數> [,…n] [<文件組參數>] ) [LOG ON] ( <日志文件參數> [,…n] )
示例
使用CREATE DATABASE語句創建數據庫MySchool,
要求:
1.該數據庫具有一個數據文件和一個日志文件
2.文件保存在D盤已有的文件夾Project下
3.數據文件的大小初始為5MB,最大值為100MB,文件增長率是15%
4.日志文件的大小初始為2MB,增長量是1MB
CREATE DATABASE MySchool ON PRIMARY --默認就屬於PRIMARY主文件組,可省略 ( NAME=' MySchool_data', --主數據文件的邏輯名 --主數據文件的物理名 FILENAME='D:\project\MySchool_data.mdf', SIZE=5MB, --主數據文件初始大小 MAXSIZE=100MB, --主數據文件增長的最大值 FILEGROWTH=15% --主數據文件的增長率 ) LOG ON ( NAME='MySchool_log', FILENAME='D:\project\MySchool_log.ldf', SIZE=2MB, FILEGROWTH=1MB ) GO
示例2
使用CREATE DATABASE語句創建數據庫Employee,
要求:
1.數據庫具有多個數據和日志文件
2.分別設置主數據文件和次要數據文件
3.分別設置不同的日志文件
LOG ON ( --日志文件1的具體描述 NAME = 'employeelog1', FILENAME = 'D:\project\employeelog1_Log.ldf' , SIZE = 10, FILEGROWTH = 1 ), ( --日志文件2的具體描述- NAME = 'employeelog2', FILENAME = 'D:\project\employeelog2_Log.ldf' , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 1 ) GO
刪除數據庫
刪除數據庫的語法
DROP DATABASE 數據庫名 USE master --設置當前數據庫為master,以便訪問sysdatabases表 GO IF EXISTS ( SELECT * FROM sysdatabases WHERE name ='MySchool') DROP DATABASE MySchool CREATE DATABASE MySchool ON ( … … ) …… GO
表的基礎知識
簡述創建表的基本步驟
1.確定表中有哪些列
2.確定每列的數據類型
3.給表添加各種約束
4.創建各表之間的關系
整型數據:int,smallint
浮點數據:float,numeric decimal,numeric
字符數據:
固定長度:char(6)
可變長度:varchar(10|max)
固定長度:nchar(6)
可變長度:nvarchar(10|max)
布爾數據(真/假)
bit:1/ 0
貨幣數據
money
日期數據
datetime

創建表
CREATE TABLE 表名 ( 列名1 數據類型 列的特征, 列名2 數據類型 列的特征, ... )
列的特征:
1.包括該列是否為空(NULL)
2.是否是標識列(自動編號)
3.是否有默認值、是否為主鍵等
示例:
USE MySchool --將當前數據庫設置為MySchool GO CREATE TABLE Student --創建學生信息表 ( StudentNo int NOT NULL, --學號,非空(必填) LoginPwd nvarchar(20) NOT NULL, --密碼,非空(必填) StudentName nvarchar(20) NOT NULL, --姓名,非空(必填) Sex bit NOT NULL, --性別,非空(必填) GradeId int NOT NULL, --年級號(必填) Phone nvarchar(50) NULL, --電話 BornDate datetime NOT NULL, --出生日期(必填) Address nvarchar(255) NULL, --地址 Email nvarchar(50) NULL, --郵件帳號 IDENTITYCard varchar(18) NOT NULL --身份證號(必填) ) GO
刪除表
DROP TABLE 表名
示例:
--將當前數據庫設置為MySchool,以便在MySchool數據庫中建表 USE MySchool GO IF EXISTS (SELECT * FROM sysobjects WHERE name='Student' ) DROP TABLE Student CREATE TABLE Student --創建學生信息表 ( … … ) GO
數據完整性有哪幾種?各自作用是什么?
實體完整性
1.能夠唯一標識表中的每一條記錄
2.實現方式:主鍵、唯一鍵、IDENTITY屬性
域完整性
1.表中特定列數據的有效性,確保不會輸入無效的值
2.實現方式:類型、缺省值、約束、空值
引用完整性
1.維護表間數據的有效性、完整性
2.實現方式:建立外鍵聯系另一表的主鍵
自定義完整性
1.根據業務處理流程定義的特定業務規則
2.實現方式:存儲過程、觸發器、規則
使用約束的目的是什么?
確保表中數據完整性
常用的約束類型有哪些?
1.主鍵約束(Primary Key Constraint):要求主鍵列數據唯一,並且不允許為空
2.唯一約束(Unique Constraint):要求該列數據唯一,允許為空,但只能出現一個空值
3.檢查約束(Check Constraint):某列取值范圍限制、格式限制等
4.默認約束(Default Constraint):某列的默認值
5.外鍵約束(Foreign Key Constraint):用於兩表間建立關系,需要指定引用主表的哪列
約束名的取名規則推薦采用:約束類型_約束列
1.主鍵(Primary Key)約束:如 PK_stuNo
2.唯一(Unique Key)約束:如 UQ_stuID
3.默認(Default Key)約束:如 DF_stuAddress
4.檢查(Check Key)約束:如 CK_stuBornDate
5.外鍵(Foreign Key)約束:如 FK_stuNo
添加約束
ALTER TABLE 表名 ADD CONSTRAINT 約束名 約束類型 具體的約束說明
約束名的取名規則推薦采用:約束類型_約束列
1.主鍵(Primary Key)約束:如 PK_stuNo
2.唯一(Unique Key)約束:如 UQ_stuID
3.默認(Default Key)約束:如 DF_stuAddress
4.檢查(Check Key)約束:如 CK_stuBornDate
5.外鍵(Foreign Key)約束:如 FK_stuNo
刪除約束的語法
ALTER TABLE 表名 DROP CONSTRAINT 約束名
示例
例如:刪除Student表中地址默認約束 ALTER TABLE Student DROP CONSTRAINT DF_stuAddress
需求說明:
使用T-SQL腳本向Subject表中插入記錄,隨后,使用ALTER TABLE語句向課程表Subject中添加相關約束
1.主鍵約束:課程編號
2.非空約束:課程名稱
3.檢查約束:學時必須大於等於0
4.外鍵約束:主表Grade和從表Subject通過GradeID建立引用關系
USE MySchool GO ALTER TABLE Subject --主鍵約束(課程編號) ADD CONSTRAINT PK_Subject PRIMARY KEY (SubjectNo) ALTER TABLE Subject --非空約束(課程名稱) ADD CONSTRAINT CK_SubjectName CHECK (SubjectName is not null) ALTER TABLE Subject WITH NOCHECK --檢查約束(學時必須大於等於0) ADD CONSTRAINT CK_ClassHour CHECK (ClassHour>=0) ALTER TABLE Subject --外鍵約束(主表Grade和從表Subject建立引用關系) ADD CONSTRAINT FK_GradeId FOREIGN KEY (GradeId) REFERENCES Grade (GradeId) GO
WITH NOCHECK對表中已 有數據不做約束檢查,因此 不能保證表中數據的正確性
總結
數據庫的物理實現的步驟
1.創建數據庫
2.創建表
3.添加各種約束
4.創建數據庫的登錄賬戶並授權
創建數據表后可以添加的約束類型
1.主鍵約束(Primary Key Constraint)
2.唯一約束(Unique Constraint)
3.檢查約束(Check Constraint)
4.默認約束(Default Constraint)
5.外鍵約束(Foreign Key Constraint)
