sql server建库、建表、建约束技巧
下面给大家分享下sqlserver建库、建表、建约束技巧,下文介绍有文字有代码。
--创建School数据库之前:首先判断数据库是否存在,若存在则删除后再创建,若不存在则创建--
--exists关键字:括号里边能查询到数据则返回‘true'否则返回‘false'
ifexists(select*fromsysdatabaseswherename='School') --exists返回‘true'则执行删除数据库操作-- dropdatabaseSchool --exists返回‘false'则表明数据库不存在,直接创建 createdatabaseSchool onprimary ( --主数据库文件-- name='School',--主数据文件逻辑名 fileName='D:\project\School.mdf',--主数据文件物理逻辑名 size=5MB,--初始值大小 maxsize=100MB,--最大大小 filegrowth=15%--数据文件增长量 ) logon ( --日志文件-- name='School_log', filename='D:\project\School_log.ldf', size=2MB, filegrowth=1MB ) go
----------------------------------------使用T-SQL创建employee数据库------------------------------------
createdatabaseemployee onprimary ( --主要数据文件-- name='employee1', filename='D:\project\employee1.mdf', size=10MB, filegrowth=10% ), ( --次要数据文件-- name='employee2', filename='D:\project\employee2.ndf', size=20MB, maxsize=100MB, filegrowth=1MB ) logon ( --第一个日志文件-- 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*fromsysdatabases
---------------------------------删除数据库------------------------------------
dropdatabaseSchool
---------------------------------创建Student数据库表----------------------------
--1、选择操作的数据库-- useSchool go
--判断表是否存在--
ifexists(select*fromsysobjectswherename='Student') droptableStudent
--2、创建表---
createtableStudent ( --具体的列名数据类型列的特征(是否为空)-- StudentNointidentity(2,1)notnull, LoginPwdnvarchar(20)notnull, StudentNamenvarchar(20)notnull, Sexintnotnull, GradeIdintnotnull, phonenvarchar(50)notnull, BornDatedatetimenotnull, Addressnvarchar(255), Emailnvarchar(50), IDENTITYcardvarchar(18) ) go
---查看所有数据库对象(数据库表)---
select*fromsysobjects droptableStudent
----------------------创建subject课程表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建-------- ifexists(select*fromsysobjectswherename='subject') droptablesubject useSchool go ---创建subject课程表-- createtablesubject ( SubjectNointnotnullidentity(1,1), SubjectNamenvarchar(50), ClassHourint, GradeIDint )
----------------------------------------创建Result成绩表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建-------- ifexists(select*fromsysobjectswherename='Result') droptableResult useSchool go
---创建Result成绩表--
createtableResult ( StudentNointnotnull, SubjectNointnotnull, ExamDateDatetimenotnull, StudentResultintnotnull )
-----------------------------------------创建Grande年级表-------------------
-----1、判断表是否存在;若存在则删除再创建,若不存在则直接创建-------- ifexists(select*fromsysobjectswherename='Grade') droptableGrade useSchool go
---创建Grande年级表--
createtableGrade ( GradeIdintnotnull, GrandeNamenvarchar(50) )
-----------------------------------------T-SQL添加约束-------------------------
--给StudentNo添加主键约束--- altertableStudent addconstraintpk_StuNoprimarykey(StudentNo)
--给身份证添加唯一约束--
altertableStudent addconstraintuq_StuIdcardunique(IDENTITYcard)
---给地址address添加默认约束--
altertableStudent addconstraintdf_stuaddressdefault('地址不详')forAddress
---删除地址address默认约束---
altertableStudent dropconstraintdf_stuaddress
----------出生日期添加检查约束--------
altertableStudent addconstraintck_stuBorndatecheck(Borndate>'1980-01-01')
---------与Grand(年级表)建立主外键关系--------
--1、添加Grade主键(操作Grade)---
altertableGrade addconstraintpk_graidprimarykey(GradeId)
--2、添加Grade外键(操作Student)--
altertableStudent addconstraintfk_stuGradeIDforeignkey(GradeId)referencesGrade(GradeId)
-------------------给subject课程表添加约束-----------------------
----给subjectNo列添加主键约束------ altertablesubject addconstraintpk_SubIDprimarykey(SubjectNo)
------给课程名称subjectName添加非空约束;-----
-----withnocheck:已经存在数据不通过check约束------- altertablesubjectwithnocheck addconstraintck_subNamecheck(SubjectNameisnotnull)
-----学时必须大于0-----
altertablesubjectwithnocheck addconstraintck_ClassHourcheck(ClassHour>0)
-----与Grade年级表添加主外键约束----
altertablesubjectwithnocheck addconstraintfk_GradeIDforeignkey(GradeID) referencesGrade(GradeID)
----------给result成绩表添加约束------------
-------添加多个约束---------
altertableResult add constraintpk_No_subID_dateprimarykey(StudentNo,SubjectNo,ExamDate), constraintdf_examdatedefault(getdate())forExamDate, constraintck_StudentResultcheck(StudentResultbetween0and100), constraintfk_StuNoforeignkey(StudentNo)referencesStudent(StudentNo), constraintfk_subNoforeignkey(SubjectNo)referencesSubject(SubjectNo)
--删除多个约束--
altertableResult dropconstraintpk_No_subID_date,fk_subNo,fk_StuNo,ck_StudentResult,df_examdate
--------更改列的数据类型----------
altertableResult altercolumnStudentResultint
以上就是本文全部内容,希望大家喜欢。