《SQL语句建库建表建约束》由会员分享,可在线阅读,更多相关《SQL语句建库建表建约束(29页珍藏版)》请在金锄头文库上搜索。
1、SQL 语言建库建表语言建库建表建约束建约束制作人:成立智(成哥)制作人:成立智(成哥)Q ICQ:QQ1787211789P hone:15801239839备注:备注: 本人男本人男 (你懂得)(你懂得)学习目标学习目标理解SQL的相关概念掌握数据类型了解数据库存储结构掌握如何创建一个数据库以及表熟练使用添删改查操作SQL的基本概念的基本概念数据库(DATABASE)和表(TABLE)字段(FIELD)关键字(KEY)记录(RECORD)数据库系统和数据库管理系统数据模型SQL的基本概念的基本概念完整性约束:数据完整性(DataIntegrity指数据的精确性(Accuracy)和可靠性(
2、Reliability)。数据完整性分为四类:q实体完整性(EntityIntegrity)q域完整性(DomainIntegrity)q参照完整性(ReferentialIntegrity)q用户定义的完整性(User-definedIntegrity)SQL的基本概念的基本概念q实体完整性(EntityIntegrity):实体完整性规定表的每一行在表中是惟一的实体。在数据表中可以对相应字段进行如下约束来实现实体完整性:UNIQUE(唯一约束)PRIMARYKEY(主键约束)IDENTITY(标识列)SQL的基本概念的基本概念q域完整性(DomainIntegrity):是指数据库表中的列
3、必须满足某种特定的数据类型或约束。域完整性有以下几种约束:CHECK(检查约束)FOREIGN KEY(外键约束)DEFAULT(默认值约束)NOT NULL(不为空值约束)SQL的基本概念的基本概念q参照完整性(ReferentialIntegrity):是指两个表的主关键字和外关键字的数据应对应一致。在SQLServer中,参照完整性作用表现在如下几个方面:禁止在从表中插入包含主表中不存在的关键字的数据行禁止会导致从表中的相应值孤立的主表中的外关键字值改变禁止删除在从表中的有对应记录的主表记录SQL的基本概念的基本概念q用户定义的完整性(User-definedIntegrity):是针对
4、某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。SQLServer提供了定义和检验这类完整性的机制,以便用统一的系统方法来处理它们,而不是用应用程序来承担这一功能。其它的完整性类型都支持用户定义的完整性。SQLServer提供了一些工具来帮助用户实现数据完整性,其中最主要的是:规则(Rule)、缺省值(Default)、约束(Constraint)和触发器(Trigger)。数据类型数据类型整型数据类型浮点数据类型字符数据类型日期和时间数据类型文本和图形数据类型货币数据类型位数据类型二进制数据类型特殊数据类型新增数据类型数据库管理数据库管理q数据库文件主数据库文
5、件(PrimaryDatabaseFile)辅助数据库文件(SecondaryDatabaseFile)事务日志文件数据库的存储结构q数据库文件组为了便于分配和管理,SQLServer允许将多个文件归纳为同一组,并赋予此组一个名称,这就是文件组。1 1、文件与文件组、文件与文件组在SQLServer中数据库是由数据库文件和事务日志文件组成的。一个数据库至少应包含一个数据库文件和一个事物日志文件。(1)数据库文件(DatabaseFile)数据库文件是存放数据库数据和数据库对象的文件。一个数据库可以有一个或多个数据库文件,一个数据库文件只属于一个数据库。当有多个数据库文件时,有一个文件被定义为主
6、数据库文件(PrimaryDatabaseFile),扩展名为mdf,它用来存储数据库的启动信息和部分或全部数据,一个数据库只能有一个主数据库文件。其它数据库文件被称为次数据库文件(SecondaryDatabaseFile),扩展名为ndf,用来存储主文件没存储的其它数据。采用多个数据库文件来存储数据的优点体现在:数据库文件可以不断扩充,而不受操作系统文件大小的限制;可以将数据库文件存储在不同的硬盘中,这样可以同时对几个硬盘做数据存取,提高了数据处理的效率。对于服务器型的计算机尤为有用。(2) (2) 事务日志文件事务日志文件(Transaction Log File)(Transactio
7、n Log File)事务日志文件是用来记录数据库更新情况的文件,扩展名为ldf。例如使用INSERT、UPDATE、DELETE、等对数据库进行更的操作都会记录在此文件中,而如SELECT等对数据库内容不会有影响的操作则不会记录在案。一个数据库可以有一个或多个事务日志文件。(3) (3) 文件组(文件组(File GroupFile Group)文件组是将多个数据库文件集合起来形成的一个整体。每个文件组有一个组名。与数据库文件一样,文件组也分为主文件组(PrimaryFileGroup)和次文件组(SecondaryFileGroup)一个文件只能存在于一个文件组中,一个文件组也只能被一个数
8、据库使用。主文件组中包含了所有的系统表。当建立数据库时,主文件组包括主数据库文件和未指定组的其它文件。在次文件组中可以指定一个缺省文件组,那么在创建数据库对象时如果没有指定将其放在哪一个文件组中,就会将它放在缺省文件组中。如果没有指定缺省文件组则主文件组,为缺省文件组。注意:事务日志文件不属于任何文件组。创建数据库创建数据库CREATEDATABASE数据库名ONPRIMARY(,n)LOGON(,n)T-SQL创建数据库的语法:创建数据库示例创建数据库示例CREATEDATABASEstuDBONPRIMARY-默认就属于PRIMARY主文件组,可省略(NAME=stuDB_data,-主数
9、据文件的逻辑名FILENAME=D:projectstuDB_data.mdf,SIZE=5mb,-主数据文件初始大小MAXSIZE=100mb,-主数据文件增长的最大值FILEGROWTH=15%-主数据文件的增长率)LOGON(NAME=stuDB_log,FILENAME=D:projectstuDB_log.ldf,SIZE=2mb,FILEGROWTH=1MB)GO数据文件的具体描述日志文件的具体描述删除数据库删除数据库如果SQLServer中已存在数据库stuDB,运行下列语句,会出现什么问题?CREATEDATABASEstuDBON(.)LOGON(.)GO演示:再次运行示例1
10、USEmaster-设置当前数据库为master,以便访问sysdatabases表GOIFEXISTS(SELECT*FROMsysdatabasesWHEREname=stuDB)DROPDATABASEstuDBCREATEDATABASEstuDBON(.)LOGON()GO删除数据库删除数据库删除数据库的语法:DROPDATABASE数据库名EXISTS()语句:检测是否存在stuDB数据库如果存在stuDB数据库,则删除创建表创建表建表的语法:CREATETABLE表名(字段1数据类型列的特征,字段2数据类型列的特征,)列的特征:包括该列是是否为空(NULL)、是否是标识列(自动编
11、号)、是否有默认值、是否为主键等。建表示例建表示例 1USEstuDB-将当前数据库设置为stuDBGOCREATETABLEstuInfo/*-创建学员信息表-*/(stuNameVARCHAR(20)NOTNULL,-姓名,非空(必填)stuNoCHAR(6)NOTNULL,-学号,非空(必填)stuAgeINTNOTNULL,-年龄,INT类型默认为4个字节stuIDNUMERIC(18,0),-身份证号stuAddressTEXT-住址,允许为空,即可选输入)GONUMERIC(18,0)代表18位数字,小数位数为0演示:创建学员信息表stuInfoIDENTITY(起始值,递增量)删
12、除表删除表如果当前数据库中已存在stuInfo表,再次创建时系统将提示出错。如何解决呢?删除表删除表删除表的语法:DROPTABLE表名USEstuDB-将当前数据库设置为stuDB,以便在stuDB数据库中建表GOIFEXISTS(SELECT*FROMsysobjectsWHEREname=stuInfo)DROPTABLEstuInfoCREATETABLEstuInfo/*-创建学员信息表-*/(.)GO创建约束创建约束q约束名的取名规则推荐采用:约束类型_约束字段主键(PrimaryKey)约束唯一(Unique)约束默认(Default)约束检查(Check)约束外键(Foreig
13、n)约束主键(PrimaryKey)约束CREATETABLEstuInfo(stuIdintprimarykeyidentity(1,1),-设为主键值,值为自增增量为1;stuNameVARCHAR(20)NOTNULL,.)如果需要自定义主键名,可以使用以下代码:CREATETABLEstuInfo(stuIdintprimarykeyidentity(1,1)constraintPK_STUIDprimarykeyclustered,.)唯一(UNIQUE)约束与primarykey约束不同,UNIQUE约束允许有NULL值。CREATETABLEstuInfo(,stuNoCHAR(
14、6)unique,)如果需要自定义主键名,可以使用以下代码:CREATETABLEstuInfo(,stuNoCHAR(6)CONSTRAINTU_stuNounique,.)默认(Default)约束CREATETABLEstuInfo(,stuBeginDatedatetimedefault(getdate(),)如果需要自定义主键名,可以使用以下代码:CREATETABLEstuInfo(,stuBeginDatedatetimeCONSTRAINTD_stuBeginDatedefault(getdate(),.)外键(Foreign)约束如果该学生信息表和另一张学生成绩表建立相关,那
15、么就必须建立外键。CREATETABLEstuInfo(,currIDintforeignkey(currID)referencesstuCurr(currID)如果需要自定义外键名,可以使用以下代码:CREATETABLEstuInfo(,currIDintCONSTRAINTFK_stu_curforeignkey(currID)referencesstuCurr(currID)添加约束添加约束添加约束的语法:ALTERTABLE表名ADDCONSTRAINT约束名约束类型具体的约束说明添加约束示例添加约束示例ALTERTABLEstuInfoADDCONSTRAINTPK_stuNoPR
16、IMARYKEY(stuNo)ALTERTABLEstuInfoADDCONSTRAINTUQ_stuIDUNIQUE(stuID)ALTERTABLEstuInfoADDCONSTRAINTDF_stuAddressDEFAULT(地址不详)FORstuAddressALTERTABLEstuInfoADDCONSTRAINTCK_stuAgeCHECK(stuAgeBETWEEN15AND40)ALTERTABLEstuMarksADDCONSTRAINTFK_stuNoFOREIGNKEY(stuNo)REFERENCESstuInfo(stuNo)GO演示:给学员信息表stuInfo添加约束删除约束删除约束如果错误地添加了约束,我们还可以删除约束删除约束的语法ALTERTABLE表名DROPCONSTRAINT约束名例如:删除stuInfo表中地址默认约束ALTERTABLEstuInfoDROPCONSTRAINTDF_stuAddress小小 结结SQL语言是数据库技术开发的主体,通过SQL语言我们可以按照需求获取数据信息。数据都有其数据类型,通过数据类型,我们可以了解数据的属性。SQL语言包括数据定义语言,主要是创建数据库对象;数据操纵语言,可以对数据进行添删改查操作及管理;数据控制语言,对用户和对象的操作设置权限。