《数据库应用套课件幻灯片完整版ppt教学教程最全电子讲义(最新).pptx》由会员分享,可在线阅读,更多相关《数据库应用套课件幻灯片完整版ppt教学教程最全电子讲义(最新).pptx(362页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库应用数据库应用SQL server 2012什么是数据库什么是数据库数据库的定义数数据据库库(Database,简简称称DB)是是长长期期储储存存在在计计算算机机内、内、有组织有组织的、的、可共享可共享的的大量大量数据的集合。数据的集合。数据库的基本特征数据按一定的数据模型组织、描述和储存数据按一定的数据模型组织、描述和储存可为各种用户共享可为各种用户共享冗余度较小冗余度较小数据独立性较高数据独立性较高易扩展易扩展数据库的地位数据库的地位数数据据库库技技术术产产生生于于六六十十年年代代末末,是是数数据据管管理理的的最最新新技术,是计算机科学的重要分支技术,是计算机科学的重要分支数数据据库
2、库技技术术是是信信息息系系统统的的核核心心和和基基础础,它它的的出出现现极极大地促进了计算机应用向各行各业的渗透大地促进了计算机应用向各行各业的渗透数数据据库库的的建建设设规规模模、数数据据库库信信息息量量的的大大小小和和使使用用频频度已成为衡量一个国家信息化程度的重要标志度已成为衡量一个国家信息化程度的重要标志数据库管理系统数据库管理系统什么是什么是DBMS位于用户与操作系统之间的一层数据管理软件位于用户与操作系统之间的一层数据管理软件 是基础软件,是一个大型复杂的软件系统是基础软件,是一个大型复杂的软件系统DBMS的用途的用途科学地组织和存储数据、高效地获取和维护数据科学地组织和存储数据、
3、高效地获取和维护数据数据库管理系统分类数据库管理系统分类层次层次网状网状关系关系对象关系对象关系数据库发展历程数据库发展历程数据库技术的发展经过了数据库技术的发展经过了50年的历程年的历程1963年年,Charles.W.Bachman设设计计开开发发的的IDS(IntegratedDataStore)综综合合数数据据存存储储系系统统开开始始投投入入运运行行,使使多多个个COBOL程程序序可可以以共共享享数数据库据库1968年,网状数据库系统年,网状数据库系统TOTALtutl出现。出现。1969年年,McGee开开发发出出层层次次式式数数据据库库系系统统,发发布布了了IBM的的IMS系统。信
4、息管理系统系统。信息管理系统数据库发展历程数据库发展历程1970年年,IBM公公司司SanJose研研究究所所的的Edgar.F.Code发发表表了了题题为为“大大型型共共享享数数据据库库数数据据的的关关系系模模型型”的的著著名名论论文文,树树立立了了关系型关系型数据库的新的里程碑数据库的新的里程碑1973年年,Charles.W.Bachman因因在在数数据据库库方方面面的的杰杰出出贡贡献而获献而获ACM图灵奖图灵奖1976年年,IBMSanJose研研究究所所研研制制出出在在IBM370机机器器上上运运行的行的SYSTEMR关系型数据库管理系统关系型数据库管理系统1979年年,ORACLE
5、公公司司推推出出了了第第一一个个商商品品化化的的关关系系型型数数据据库系统库系统ORACLE2.0数据库发展历程数据库发展历程80年年代代至至今今,是是数数据据库库技技术术发发展展的的成成熟熟时时期期,这这个个时时期期出出现现了了众众多多的的大大型型数数据据库库系系统统,包包括括IBM的的DB2、微微软软的的SQLServer、Sybase以以及及Informix相相继继出出现现,使使数数据据库库系系统统呈呈现出夺目的光彩现出夺目的光彩,中国的人大金仓中国的人大金仓1981年年,Edgar.F.Codd因因在在关关系系数数椐椐库库管管理理系系统统的的理理论论和实践方面的贡献而获奖和实践方面的贡
6、献而获奖1998年年,JamesGray成成为为第第三三十十三三位位图图灵灵奖奖获获得得者者。数数据据库库和和事事务务(Transaction)处处理理研研究究领领域域开开创创性性的的贡贡献献,和和其其在系统实现方面的领导地位在系统实现方面的领导地位第第2章章 数据库的创建和管理数据库的创建和管理本章学习目标掌握数据库的两种存储结构掌握数据库的两种存储结构掌握数据库文件和文件组的相关知识点掌握数据库文件和文件组的相关知识点掌握创建数据库的方法掌握创建数据库的方法掌握删除数据库的方法掌握删除数据库的方法掌握数据库更名、修改大小的方法掌握数据库更名、修改大小的方法本章内容2.1系统数据库系统数据库
7、2.2数据库的结构数据库的结构2.2.1数据库文件数据库文件2.2.2文件组文件组2.3创建数据库创建数据库2.4管理数据库管理数据库2.1系统数据库在在安安装装了了SQLServer2012以以后后,系系统统会会自自动动创创建建5个个系系统统数数据据库库:master、model、msdb、tempdb、resourcemaster:记记录录了了SQLServer系系统统的的所所有有系系统统级级别别的的信信息息,包包括括系系统统中中所所有有的的登登录录账账户户、链链接接服服务务器器、系系统统配配置置信信息息、SQLServer的的初始化信息及数据库错误信息等内容。初始化信息及数据库错误信息等
8、内容。2.1系统数据库model:是是创创建建用用户户数数据据库库的的模模板板。当当用用户户创创建建一一个个数数据据库库时时,model数数据据库库的的内内容容会会自动复制到用户数据库中。自动复制到用户数据库中。msdb:存储报警、作业及操作员信息。:存储报警、作业及操作员信息。tempdb:为临时表和临时存储过程提供空间:为临时表和临时存储过程提供空间resource:只只读读数数据据库库,包包含含SQLServer中的所有系统对象。中的所有系统对象。2.2数据库的结构数数据据库库的的存存储储结结构构分分为为逻逻辑辑存存储储结结构构和和物物理理存储结构两种存储结构两种数数据据库库的的逻逻辑辑
9、存存储储结结构构指指的的是是数数据据库库是是由由哪哪些些逻逻辑辑对对象象组组成成的的,SQLServer中中的的逻逻辑辑对对象象主主要要包包括括数数据据表表、视视图图、同同义义词词、存存储储过过程程、函函数数、触触发发器器、规规则则,另另外外还还有有用用户户、角色、架构等角色、架构等2.2数据库的结构保存数据库各种逻辑对象的物理文件如何在保存数据库各种逻辑对象的物理文件如何在磁盘上存储的磁盘上存储的数据库在磁盘上是以数据库在磁盘上是以文件文件为单位存储的为单位存储的SQLServer将数据库映射为将数据库映射为一组一组操作系统文操作系统文件件2.2.1数据库文件每个数据库都每个数据库都至少至少
10、有两个物理文件与之对应有两个物理文件与之对应一个数据库文件(一个数据库文件(.MDF)一个事务日志文件(一个事务日志文件(.LDF)数据和日志信息从不混合在相同的文件中数据和日志信息从不混合在相同的文件中而且各文件仅在一个数据库中使用而且各文件仅在一个数据库中使用2.2.1数据库文件数据库具有三种类型的文件:数据库具有三种类型的文件:主数据文件(主数据文件(.MDF)辅助数据文件(辅助数据文件(.NDF)事物日志文件(事物日志文件(.LDF)2.2.1数据库文件主数据文件主数据文件主主数数据据文文件件是是数数据据库库的的起起点点,指指向向数数据据库库中中的其他文件的其他文件每个数据库都有一个主
11、数据文件每个数据库都有一个主数据文件主数据文件的推荐文件扩展名是主数据文件的推荐文件扩展名是.mdf。2.2.1数据库文件辅助数据文件辅助数据文件除除主主数数据据文文件件以以外外的的所所有有其其他他数数据据文文件件都都是是辅助数据文件辅助数据文件数据库可能不含有任何辅助数据文件数据库可能不含有任何辅助数据文件数据库可含有多个辅助数据文件数据库可含有多个辅助数据文件辅助数据文件的推荐文件扩展名是辅助数据文件的推荐文件扩展名是.ndf2.2.1数据库文件事务日志文件事务日志文件包含用于恢复数据库的所有日志信息包含用于恢复数据库的所有日志信息每个数据库必须至少有一个日志文件每个数据库必须至少有一个日
12、志文件事事务务日日志志采采用用提提前前写写入入方方式式,即即对对数数据据库库的的修改先写入事务日志中,然后再写入数据库修改先写入事务日志中,然后再写入数据库日志文件的推荐文件扩展名日志文件的推荐文件扩展名是是.Ldf2.2.1数据库文件SQL文件拥有两个名称文件拥有两个名称逻辑文件名逻辑文件名物理文件名物理文件名逻逻辑辑文文件件名名是是在在所所有有Transact-SQL语语句句中中引引用用物物理理文文件时所使用的名称,具有唯一性,即对象名件时所使用的名称,具有唯一性,即对象名物理文件名物理文件名是包括路径的物理文件名是包括路径的物理文件名例如数据库例如数据库test,对应,对应c:test.
13、mdf和和c:testlog.ldf数数据据库库中中所所有有文文件件的的位位置置都都记记录录在在数数据据库库的的主主文文件件和和master数据库中数据库中2.2.2文件组SQLServer中的数据库文件分为:中的数据库文件分为:主文件组(主文件组(PrimaryFileGroup)用户定义文件组(用户定义文件组(user_definedGroup)主文件组:主要数据库文件和任何没有明确指派给主文件组:主要数据库文件和任何没有明确指派给其他文件组的其他文件其他文件组的其他文件数据库的系统表都包含在主文件组中。数据库的系统表都包含在主文件组中。2.2.2文件组用用 户户 定定 义义 文文 件件
14、组组:在在 CREATE DATABASE或或ALTERDATABASE语语句句中中,使使用用FILEGROUP关关键字指定的文件组键字指定的文件组一个文件只能存在于一个文件组中,一个文件组也一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用只能被一个数据库使用日志文件是独立的,它不能作为任何文件组的成员日志文件是独立的,它不能作为任何文件组的成员在没有指定用户定义文件组的情况下,所有文件都在没有指定用户定义文件组的情况下,所有文件都包含在主文件组中包含在主文件组中2.3创建数据库若若要要创创建建数数据据库库,必必须须确确定定数数据据库库的的名名称称、所所有有者者、大大小小以以及
15、及存存储储该该数数据据库库的的文文件件和和文文件组。件组。创建数据库的方法主要有两种:创建数据库的方法主要有两种:使用使用SQLServer管理控制台创建数据库管理控制台创建数据库使用使用Transact-SQL语言创建数据库。语言创建数据库。2.3创建数据库CREATEDATABASEdatabase_nameONPRIMARY,.n,nLOGON,n:=(NAME=logical_file_name,FILENAME=os_file_name,SIZE=size,MAXSIZE=max_size|UNLIMITED,FILEGROWTH=growth_incrementKB|MB|GB|T
16、B|%),n:=FILEGROUPfilegroup_nameDEFAULT,n2.3创建数据库各参数说明如下:各参数说明如下:database_name:数据库的名称,最长为:数据库的名称,最长为128个字符。个字符。PRIMARY:该该选选项项是是一一个个关关键键字字,指指定定主主文文件件组组中中的的文件。文件。LOGON:指明事务日志文件的明确定义。:指明事务日志文件的明确定义。NAME:指指定定数数据据库库的的逻逻辑辑名名称称,这这是是在在SQLServer系系统统中中使使用用的的名名称称,是是数数据据库库在在SQLServer中中的的标标识识符。符。FILENAME:指指定定数数据据
17、库库所所在在文文件件的的操操作作系系统统文文件件名名称称和和路路径径,该该操操作作系系统统文文件件名名和和NAME的的逻逻辑辑名名称称一一一一对对应。应。SIZE:指定数据库的初始容量大小。:指定数据库的初始容量大小。MAXSIZE:指指定定操操作作系系统统文文件件可可以以增增长长到到的的最最大大尺尺寸寸。如果没有指定,则文件可以不断增长直到充满磁盘。如果没有指定,则文件可以不断增长直到充满磁盘。FILEGROWTH:指指定定文文件件每每次次增增加加容容量量的的大大小小,当当指指定数据为定数据为0时,表示文件不增长。时,表示文件不增长。2.3创建数据库例:使用例:使用CREATEDATABAS
18、E创建一个新的创建一个新的数据库,名称为数据库,名称为“STUDENT2”,其他所有参,其他所有参数均取默认值。数均取默认值。createdatabaseSTUDENT23.2.1创建数据库例例:创创建建一一个个名名称称为为STUDENT3的的数数据据库库,该该 数数 据据 库库 的的 主主 文文 件件 逻逻 辑辑 名名 称称 为为STUDENT3_data,物物 理理 文文 件件 名名 为为STUDENT3.mdf,初初始始大大小小为为3MB,最最大大尺尺寸寸为为无无限限大大,增增长长速速度度为为15%;数数据据库库的的日日志志文文件件逻逻辑辑名名称称为为STUDENT3_log,物物理理文
19、文件件名名为为STUDENT3.ldf,初初始始大大小小为为2MB,最最大大尺尺寸寸为为50MB,增增长长速速度度为为1MB;要要求求数数据据库库文文件件和和日日志志文文件件的的物物理理文文件件都都存存放放在在E盘的盘的DATA文件夹下。文件夹下。实现的步骤如下:实现的步骤如下:(1)在)在E盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。(2)在)在SQLServerManagementStudio中新建一个查中新建一个查询页面。询页面。(3)输入以下程序段并执行此查询:)输入以下程序段并执行此查询:CREATEDATABASESTUDENT3ONPRIMARY(NAM
20、E=STUDENT3_data,FILENAME=E:DATASTUDENT3.mdf,SIZE=3,MAXSIZE=unlimited,FILEGROWTH=15%)LOGON(NAME=STUDENT3_log,FILENAME=E:DATASTUDENT3.ldf,SIZE=2,MAXSIZE=50,FILEGROWTH=1)2.3创建数据库例例:创创建建一一个个指指定定多多个个数数据据文文件件和和日日志志文文件件的的数数据据库库。该该数数据据库库名名称称为为STUDENTS,有有1个个5MB和和1个个10MB的的数数据据文文件件和和2个个5MB的的事事务务日日志志文文件件。数数据据文文
21、件件逻逻辑辑名名称称为为STUDENTS1和和STUDENTS2,物物理理文文件件名名为为STUDENTS1.mdf和和STUDENTS2.ndf。主主文文件件是是STUDENTS1,由由PRIMARY指指定定,两两个个数数据据文文件件的的最最大大尺尺寸寸分分别别为为无无限限大大和和100MB,增增长长速速度度分分别别为为10%和和1MB。事事务务日日志志文文件件的的逻逻辑辑名名为为STUDENTSLOG1和和STUDENTSLOG2,物物理理文文件件名名为为STUDENTSLOG1.ldf和和STUDENTSLOG2.ldf,最最大大尺尺寸寸均均为为50MB,文文件件增增长长速速度度为为1M
22、B。要要求求数数据据库库文文件件和和日日志志文文件件的的物物理理文文件件都都存存放放在在E盘盘的的DATA文文件件夹下。夹下。实现的步骤如下:实现的步骤如下:(1)在)在E盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。(2)在)在SQLServerManagementStudio中新建一个中新建一个查询页面。查询页面。(3)输入以下程序段并执行此查询:)输入以下程序段并执行此查询:CREATEDATABASESTUDENTSONPRIMARY(NAME=STUDENTS1,FILENAME=E:DATASTUDENTS1.mdf,SIZE=5,MAXSIZE=unlim
23、ited,FILEGROWTH=10%),(NAME=STUDENTS12,FILENAME=E:DATASTUDENTS2.ndf,SIZE=10,MAXSIZE=100,FILEGROWTH=1)2.3创建数据库LOGON(NAME=STUDENTSLOG1,FILENAME=E:DATASTUDENTSLOG1.ldf,SIZE=5,MAXSIZE=50,FILEGROWTH=1),(NAME=STUDENTSLOG2,FILENAME=E:DATASTUDENTSLOG2.ldf,SIZE=5,MAXSIZE=50,FILEGROWTH=1)2.3创建数据库2.3创建数据库例例:创创建
24、建学学生生管管理理数数据据库库jsjxy。将将该该数数据据库库的的数数据据文文件件存存储储在在D:Data下下,数数据据文文件件的的逻逻辑辑名名称称为为jsjxy,文文件件名名为为jsjxy,初初始始大大小小为为5MB,最最大大尺尺寸寸为为无无限限制制,增增长长速速度度为为1MB;该该数数据据库库的的日日志志文文件件,逻逻辑辑名名称称为为jsjxy_log,文文件件名名为为jsjxy_log.ldf,初初始始大大小小为为2MB,最大尺寸为,最大尺寸为2GB,增长速度为,增长速度为10%。实现的步骤如下:实现的步骤如下:在在D盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。
25、CREATEDATABASEJSJXYON(NAME=JSJXY,/*注意有逗号分隔*/FILENAME=D:DATAJSJXY.MDF,/*注意用半角状态下的引号,D:DATA文件夹必须已经存在*/SIZE=5MB,MAXSIZE=UNLIMITED,FILEGROWTH=1MB)/*注意没有逗号*/LOGON(NAME=JSJXY_LOG,/*注意有逗号分隔*/FILENAME=D:DATAJSJXY_LOG.LDF,/*注意使用半角状态下的引号*/SIZE=2MB,MAXSIZE=2084MB,FILEGROWTH=10%)/*注意没有逗号*/2.3创建数据库2.4管理数据库重命名数据库
26、重命名数据库附加与分离数据库附加与分离数据库更改数据库状态更改数据库状态删除数据库删除数据库2.4.1查看数据库信息sp_helpdb数据库名数据库名sp_helpdbsp_helpdbjsjxy2.4.3重命名数据库1sp_renamedb原数据库名,新数据库名原数据库名,新数据库名2.ALTERDATABASEold_database_nameModifyNAME=new_database_name2.4.5分离和附加数据库使用管理平台实现使用管理平台实现2.4.6删除数据库drop数据库名数据库名2.4.4打开数据库USE数据库名数据库名第第3章章 数据表的创建和管理数据表的创建和管理本
27、章学习目标掌握掌握SQLServer2012中的数据类型中的数据类型掌握如何利用掌握如何利用SQLServer管理控制台和管理控制台和Transact-SQL语言语言创建表创建表掌握创建、删除和修改约束的方法掌握创建、删除和修改约束的方法掌握增加、删除和修改字段的方法掌握增加、删除和修改字段的方法掌握如何查看数据表的定义、表中数据、数据库对象之间的掌握如何查看数据表的定义、表中数据、数据库对象之间的依赖关系依赖关系掌握如何利用掌握如何利用SQLServer管理控制台和管理控制台和Transact-SQL语言语言删除表删除表3.1创建数据表创建数据表3.2管理数据表管理数据表3.3使用约束实现数
28、据完整性使用约束实现数据完整性3.4插入、删除、修改表中数据插入、删除、修改表中数据3.1创建数据表字段、记录字段、记录3.1创建数据表每个数据库可容纳每个数据库可容纳20亿个表,每个表可以有亿个表,每个表可以有1024列(字段)列(字段)CREATETABLEdatabase_name.schema_name.|schema_name.table_name(column_nameNULL|NOTNULLIDENTITY(seed,increment)n,n,n)3.1创建数据表创建表创建表studentCREATETABLEstudent(idchar(12)NOTNULL,namenvar
29、char(50),sexchar(2),ageint,birthdaydate,nationnvarchar(50),classnvarchar(50),specialtynvarchar(50)3.1创建数据表创建表创建表courseCREATETABLEcourse(courseidchar(12)NOTNULL,coursenamechar(50)NOTNULL,creditint)3.1创建数据表创建表创建表scCREATETABLEsc(idchar(12)NOTNULL,courseidchar(12)NOTNULL,scorefloat)3.2.1增加、删除和修改字段ALTERT
30、ABLEtableALTERCOLUMNcolumn_namenew_data_type(precision,scale)|NULL|NOTNULL|ADD|,n|DROPCONSTRAINTconstraint_name|COLUMNcolumn_name,n【例例】在在student表表中中增增加加三三列列:“address”列列,数数 据据 类类 型型 为为 varchar(20),允允 许许 为为 空空;“telephone”列列,数数据据类类型型为为varchar(15),允允许许为为空空,“courseid”列列,数数据据类类型型为为char(12),允许为空。,允许为空。ALTE
31、RTABLEstudentADDaddressvarchar(20)NULL,telephonevarchar(15)NULL,courseidchar(12)NULL增加字段【例例】在 student表 中,删 除“class”、“telephone”两列。ALTERTABLEstudentDROPCOLUMNclass,telephone删除字段ALTERTABLE表名ALTERCOLUMN列名【例】在course表中,将courseid列的数据类型改为varchar(20),允许空。ALTERTABLEcourseALTERCOLUMNcourseidvarchar(20)NULL修改字
32、段sp_rename表名.原列名,新列名,COLUMNsp_renamestudent.specialty,DepartmentName,COLUMN修改列名sp_rename原表名,新表名【例】将course表重命名为Department。sp_renamecourse,Department3.2.2重命名数据表DROPTABLE表名1,n【例】删除Department表。DROPTABLEDepartment3.2.3删除数据表3.3.1数据完整性定义数据完整性定义数据完整性是指数据的正确性和有效性数据完整性是指数据的正确性和有效性主要用于保证数据库中数据的质量主要用于保证数据库中数据的质
33、量防止数据库中存在不符合语义规定的数据和防防止数据库中存在不符合语义规定的数据和防止因错误信息的输入止因错误信息的输入/输出造成无效操作或报错输出造成无效操作或报错而提出的而提出的3.3使用约束实现数据完整性实体完整性实体完整性参照完整性参照完整性域完整性域完整性3.3.2数据完整性类型约束(约束(constraint)是)是SQLServer2012提供提供的自动保持数据库完整性的一种方法的自动保持数据库完整性的一种方法约束就是限制,定义约束就是定义可输入表或约束就是限制,定义约束就是定义可输入表或表的单个列中的数据的限制条件。表的单个列中的数据的限制条件。3.3.3约束定义主键约束(主键约
34、束(primarykeyconstraint)唯一约束(唯一约束(uniqueconstraint)外键约束(外键约束(foreignkeyconstraint)检查约束(检查约束(checkconstraint)默认约束(默认约束(defaultconstraint)非空约束(非空约束(notnullconstraint)3.3.4约束分类3.3.4约束分类-约束与完整性为了便于管理约束,在创建约束时,需要创建为了便于管理约束,在创建约束时,需要创建约束的名称,约束名称必须符合标识符命名规约束的名称,约束名称必须符合标识符命名规则。则。3.3.5约束名1使用使用CREATETABLE语句创建
35、语句创建CREATETABLE表名表名(,n,n)2使用使用ALTERTABLE语句创建约束语句创建约束ALTERTABLE表名表名ADD3.3.6创建约束的语法格式1主键约束的定义主键约束的定义主键约束(主键约束(primarykeyconstraint)用于)用于指定表的一列或几列的组合来唯一标识表,即能指定表的一列或几列的组合来唯一标识表,即能在表中唯一地指定一行记录在表中唯一地指定一行记录这样的一列或列的组合称为表的主键这样的一列或列的组合称为表的主键(primarykey,PK)定义主键约束的列其值不可为空、不可重复定义主键约束的列其值不可为空、不可重复每个表中只能有一个主键。每个表
36、中只能有一个主键。3.3.7主键约束2在创建表的同时创建主键约束在创建表的同时创建主键约束(1)创建单个列的主键可采用列级约束)创建单个列的主键可采用列级约束列名列名CONSTRAINT约束名约束名PRIMARYKEY(2)多个列组合的主键约束,采用表级约束)多个列组合的主键约束,采用表级约束CONSTRAINT约束名约束名PRIMARYKEY(列名列名1,列名列名n)3.3.7主键约束【例】在【例】在jsjxy数据库中,创建数据库中,创建student表并为表并为id字段添加主键。字段添加主键。CREATETABLEstudent1(idchar(12)NOTNULLPRIMARYKEY,n
37、amenvarchar(50),sexchar(2),ageint,birthdaydate,nationnvarchar(50),classnvarchar(50),specialtynvarchar(50)3.3.7主键约束【例】在【例】在score1表中,将表中,将id和和courseid两个字段两个字段设为主键。设为主键。CREATETABLEscore1(idchar(12)NOTNULL,courseidchar(12)NOTNULL,scorefloat,CONSTRAINTPK_score1PRIMARYKEY(id,courseid)3.3.7主键约束3在一张现有表上添加主键
38、约束在一张现有表上添加主键约束【例】为【例】为student表添加主键约束。表添加主键约束。ALTERTABLEstudentADDCONSTRAINTPK_studentPRIMARYKEY(id)3.3.7主键约束4删除主键约束删除主键约束ALTERTABLE表名表名DROPCONSTRAINT约束名约束名1,约束名约束名n【例】为【例】为student表删除主键约束。表删除主键约束。ALTERTABLEstudentdropCONSTRAINTPK_student3.3.7主键约束唯一约束(唯一约束(uniqueconstraint)用于指定一)用于指定一个列或多个列的组合值具有唯一性个
39、列或多个列的组合值具有唯一性唯一约束指定的列可以为唯一约束指定的列可以为NULL,但主键约束,但主键约束所在的列则不允许为所在的列则不允许为NULL。一个表中可以包含多个唯一约束,而主键约束一个表中可以包含多个唯一约束,而主键约束则只能有一个。则只能有一个。3.3.8唯一约束2在创建表的同时创建唯一约束在创建表的同时创建唯一约束(1)创建单个列的唯一可采用列级约束)创建单个列的唯一可采用列级约束列名列名CONSTRAINT约束名约束名unique(2)多个列组合的唯一约束,采用表级约束)多个列组合的唯一约束,采用表级约束CONSTRAINT约束名约束名unique(列名列名1,列名列名n)3.
40、3.8唯一约束CREATETABLEcourse(courseidchar(12)PRIMARYKEY,coursenamevarchar(50)NOTNULLUNIQUE,creditint)CREATETABLEcourse(courseidchar(12)PRIMARYKEY,coursenamevarchar(50)NOTNULL,creditint,constraintkkunique(coursename)3.3.8唯一约束3修改表语句创建唯一约束修改表语句创建唯一约束【例】为【例】为student表添加唯一约束。表添加唯一约束。ALTERTABLEstudent1ADDCONST
41、RAINTdddunique(name)3.3.8唯一约束3.3.9外键约束FOREIGNKEY(列名列名1,列名列名2,列名列名n)REFERENCES主键表名主键表名(列名列名1,列名列名2,列名列名n)ONDELETECASCADE|NOACTION|SETNULL|SETDEFAULTONUPDATECASCADE|NOACTION|SETNULL|SETDEFAULTcreate和alter中都可使用【例】在【例】在jsjxy数据库中,为数据库中,为sc表创建外键约束。表创建外键约束。ALTERTABLEscADDCONSTRAINTFK_sc_studentFOREIGNKEY(i
42、d)REFERENCESstudent(id)ALTERTABLEscADDCONSTRAINTFK_sc_courseFOREIGNKEY(courseid)REFERENCEScourse(courseid)3.3.9外键约束1.使用使用CREATETABLE语句在建表时创建检查约束语句在建表时创建检查约束CREATETABLE表名表名(列名列名数据类型数据类型CONSTRAINT检检查约束名查约束名CHECK(),n)CREATETABLExsscore(idchar(8)NOTNULL,courseidchar(4)NOTNULL,scoredecimal(4,1)NULLCHECK(
43、score=0ANDscore=100),CONSTRAINTPK_xsscorePRIMARYKEY(id,courseid),CONSTRAINTFK_xsscore_studentFOREIGNKEY(id)REFERENCESxsscore(id),CONSTRAINTFK_xsscore_courseFOREIGNKEY(courseid)REFERENCEScourse(courseid)3.3.10检查约束3.3.10检查约束2.使用使用ALTERTABLE语句定义检查约束语句定义检查约束ALTERTABLE表名表名WITHCHECK|NOCHECKADDCONSTRAINT检查
44、约束名检查约束名CHECK()WITHCHECK:对已有记录进行约束检查,此值为默认值。:对已有记录进行约束检查,此值为默认值。WITHNOCHECK:对已有记录不进行约束检查,只对以后插:对已有记录不进行约束检查,只对以后插入的新记录进行检查。入的新记录进行检查。ALTERTABLEstudentADDCONSTRAINTCK_student_ageCHECK(age=20ANDage=22)3.3.11默认值约束1.使用使用CREATETABLE语句创建默认值约束语句创建默认值约束CREATETABLE表名表名(列名列名数据类型数据类型CONSTRAINT默认值约束名默认值约束名DEFAU
45、LT,.n)CREATETABLEStudents(学号学号Char(8)PRIMARYKEY,姓名姓名Varchar(12)NOTNULL,民族民族Varchar(8)NOTNULLDEFAULT汉族汉族)3.3.11默认值约束2.使用使用ALTERTABLE语句添加默认值约束语句添加默认值约束ALTERTABLE表名表名ADDCONSTRAINT默认值约束名默认值约束名DEFAULT()FOR列名列名ALTERTABLEStudentsADDCONSTRAINTDF_Students_nationDEFAULT汉族汉族FORnation3.3.12非空约束1.使用使用CREATETABLE
46、语句创建非空约束语句创建非空约束CREATETABLE表名表名(列名列名数据类型数据类型CONSTRAINT非空约束名非空约束名NULL|NOTNULL,.n)2.ALTERTABLE语句添加非空约束语句添加非空约束ALTERTABLE表名表名ALTERCOLUMN列名列名数据类型数据类型NULL|NOTNULL3.3.13使用IDENTITY列1.使用使用CREATETABEL语句创建语句创建IDENTITY列列CREATETABLE表名表名(列名列名数据类型数据类型IDENTITY(seed,increment),.n)CREATETABLENew_score(idIntconstrain
47、tttPRIMARYKEYIDENTITY(1,1),xhidChar(8)NOTNULL,courseidChar(4)NOTNULL,scoreDecimal(4,1)CHECK(score=0ANDscore=100)3.3.13使用IDENTITY列2.使用使用ALTERTABEL语句添加语句添加IDENTITY列列ALTERTABLE表名表名ADD列名列名数据类型数据类型IDENTITY(seed,increment)ALTERTABLENew_scoreDROPCONSTRAINTT1GOALTERTABLENew_scoreDROPCOLUMNidGOALTERTABLENew_
48、scoreADDscoreidIntIDENTITY(1,2)3.4 插入、删除、修改表中数据插入、删除、修改表中数据插入数据插入数据INSERT删除数据删除数据DELETE修改数据修改数据UPDATE3.4.1插入数据INSERT语句语句INSERT INTO表名表名|视图名视图名(列名表列名表)VALUES(DEFAULT|NULL|expression,.n)|derived_table3.4.1插入数据INTO:一个可选的关键字一个可选的关键字VALUES:是插入的数据值的列表。是插入的数据值的列表。DEFAULT:使用默认值填充。使用默认值填充。NULL:使用空值填充。使用空值填充。
49、Expression:常量、变量或表达式。常量、变量或表达式。derived_table:任何有效的任何有效的SELECT语句,它语句,它返回将插入到表中的数据行。返回将插入到表中的数据行。3.4.1插入数据【例】向表【例】向表STUDENT中插入一行数据,只包含中插入一行数据,只包含ID、NAME和和AGE三列。三列。INSERTINTOSTUDENT(id,NAME,age)VALUES(201541030112,张宇天张宇天,20)3.4.1插入数据【例】利用【例】利用INSERT语句向表语句向表STUDENT中插入一行数中插入一行数据,所有的字段都要给出相应的值。据,所有的字段都要给出
50、相应的值。INSERTintoSTUDENTVALUES(201541030111,赵源,男,19,回族,20150304,计算机科学与技术)3.4.1插入数据【例】利用【例】利用INSERT语句向表语句向表STUDENT中插入中插入一批数据,数据来源于另一个已有的表。一批数据,数据来源于另一个已有的表。INSERTINTOSTUDENT(id,NAME,SEX,age,nation)SELECTid,NAME,SEX,age,nationFROMSTUDENT13.4.2更新数据UPDATE语句语句 UPDATE table_name|view_nameFROM,.n SET column_