程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> sql server建庫、建表、建約束技巧,server建庫

sql server建庫、建表、建約束技巧,server建庫

編輯:更多數據庫知識

sql server建庫、建表、建約束技巧,server建庫


下面給大家分享下sql server建庫、建表、建約束技巧,下文介紹有文字有代碼。

--創建School數據庫之前:首先判斷數據庫是否存在,若存在則刪除後再創建,若不存在則創建--
--exists關鍵字:括號裡邊能查詢到數據則返回‘true' 否則返回‘false'

if exists(select * from sysdatabases where name = 'School')
--exists返回‘true'則執行刪除數據庫操作--
drop database School

--exists返回‘false'則表明數據庫不存在,直接創建 
create database School
on primary
(
--主數據庫文件--
name = 'School', --主數據文件邏輯名
fileName = 'D:\project\School.mdf', --主數據文件物理邏輯名
size = 5MB, --初始值大小
maxsize = 100MB, --最大大小
filegrowth = 15% --數據文件增長量
)
log on
(
--日志文件--
name = 'School_log',
filename = 'D:\project\School_log.ldf',
size = 2MB,
filegrowth = 1MB
)
go

----------------------------------------使用T-SQL創建employee數據庫------------------------------------

create database employee
on primary
(
--主要數據文件--
name = 'employee1',
filename = 'D:\project\employee1.mdf',
size = 10MB,
filegrowth = 10%
),
(
--次要數據文件--
name = 'employee2',
filename = 'D:\project\employee2.ndf',
size = 20MB,
maxsize = 100MB,
filegrowth = 1MB
)
log on
(
--第一個日志文件--
name = 'employee_log1',
filename = 'D:\project\employee_log1.ldf',
size = 10MB,
filegrowth = 1MB
),
(
--第二個日志文件--
name = 'employee_log2',
filename = 'D:\project\employee_log2.ldf',
size = 10MB,
maxsize = 50MB,
filegrowth = 1MB
)

---------------------------------查詢已存在的數據庫信息---------------------------

select * from sysdatabases

---------------------------------刪除數據庫------------------------------------
復制代碼 代碼如下:
drop database School

---------------------------------創建Student數據庫表----------------------------
復制代碼 代碼如下:
--1、選擇操作的數據庫--
use School
go

--判斷表是否存在--
復制代碼 代碼如下:
if exists(select * from sysobjects where name = 'Student')
drop table Student

--2、創建表---

create table Student
(
--具體的列名 數據類型 列的特征(是否為空)--
StudentNo int identity(2,1) not null,
LoginPwd nvarchar(20) not null,
StudentName nvarchar(20) not null,
Sex int not null,
GradeId int not null,
phone nvarchar(50) not null,
BornDate datetime not null,
Address nvarchar(255),
Email nvarchar(50),
IDENTITYcard varchar(18)
)
go

---查看所有數據庫對象(數據庫表)---
復制代碼 代碼如下:
select * from sysobjects
drop table Student

----------------------創建subject課程表-------------------
復制代碼 代碼如下:
-----1、判斷表是否存在;若存在則刪除再創建,若不存在則直接創建--------
if exists(select * from sysobjects where name = 'subject')
drop table subject

use School
go

---創建subject課程表--
create table subject
(
SubjectNo int not null identity(1,1),
SubjectName nvarchar(50),
ClassHour int,
GradeID int
)

----------------------------------------創建Result成績表-------------------
復制代碼 代碼如下:
-----1、判斷表是否存在;若存在則刪除再創建,若不存在則直接創建--------
if exists(select * from sysobjects where name = 'Result')
drop table Result
use School
go

---創建Result成績表--
復制代碼 代碼如下:
create table Result
(
StudentNo int not null,
SubjectNo int not null,
ExamDate Datetime not null,
StudentResult int not null
)

-----------------------------------------創建Grande年級表-------------------
復制代碼 代碼如下:
-----1、判斷表是否存在;若存在則刪除再創建,若不存在則直接創建--------
if exists(select * from sysobjects where name = 'Grade')
drop table Grade
use School
go

---創建Grande年級表--
復制代碼 代碼如下:
create table Grade
(
GradeId int not null,
GrandeName nvarchar(50)
)

-----------------------------------------T-SQL添加約束-------------------------
復制代碼 代碼如下:
--給StudentNo添加主鍵約束---
alter table Student
add constraint pk_StuNo primary key(StudentNo)

--給身份證添加唯一約束--
復制代碼 代碼如下:
alter table Student
add constraint uq_StuIdcard unique(IDENTITYcard)

---給地址address添加默認約束--
復制代碼 代碼如下:
alter table Student
add constraint df_stuaddress default('地址不詳') for Address

---刪除地址address默認約束---
復制代碼 代碼如下:
alter table Student
drop constraint df_stuaddress


----------出生日期添加檢查約束--------
復制代碼 代碼如下:
alter table Student
add constraint ck_stuBorndate check(Borndate > '1980-01-01')

---------與Grand(年級表)建立主外鍵關系--------

--1、添加Grade主鍵(操作Grade)---
復制代碼 代碼如下:
alter table Grade
add constraint pk_graid primary key(GradeId)

--2、添加Grade外鍵(操作Student)--
復制代碼 代碼如下:
alter table Student
add constraint fk_stuGradeID foreign key(GradeId) references Grade(GradeId)

-------------------給subject課程表添加約束-----------------------

復制代碼 代碼如下:
----給subjectNo列添加主鍵約束------
alter table subject
add constraint pk_SubID primary key(SubjectNo)

------給課程名稱subjectName添加非空約束;-----
復制代碼 代碼如下:
-----with nocheck:已經存在數據不通過check約束-------
alter table subject with nocheck
add constraint ck_subName check(SubjectName is not null)

-----學時必須大於0-----
復制代碼 代碼如下:
alter table subject with nocheck
add constraint ck_ClassHour check(ClassHour > 0)

-----與Grade年級表添加主外鍵約束----
復制代碼 代碼如下:
alter table subject with nocheck
add constraint fk_GradeID foreign key(GradeID)
references Grade(GradeID)


----------給result成績表添加約束------------

-------添加多個約束---------
復制代碼 代碼如下:
alter table Result
add
constraint pk_No_subID_date primary key(StudentNo,SubjectNo,ExamDate),
constraint df_examdate default(getdate()) for ExamDate,
constraint ck_StudentResult check(StudentResult between 0 and 100),
constraint fk_StuNo foreign key(StudentNo) references Student(StudentNo),
constraint fk_subNo foreign key(SubjectNo) references Subject(SubjectNo)

--刪除多個約束--
復制代碼 代碼如下:
alter table Result
drop constraint pk_No_subID_date,fk_subNo,fk_StuNo,ck_StudentResult,df_examdate

--------更改列的數據類型----------
復制代碼 代碼如下:
alter table Result
alter column StudentResult int

以上就是本文全部內容,希望大家喜歡。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved