《数据库应用套幻灯片.pptx》由会员分享,可在线阅读,更多相关《数据库应用套幻灯片.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(Integrated Data Store)综合数据存储系)综合数据存储系统开始投入运行,使多个统开始投入运行,使多个COBOL程序可以共享程序可以共享数据库数据库1968年,网状数据库系统年,网状数据库系统TOTALtutl出现。出现。1969年,年,McGee开发出层次式数据库系统,发布开发出层次式数
4、据库系统,发布了了IBM的的IMS系统。信息管理系统系统。信息管理系统数据库发展历程数据库发展历程1970年,年,IBM公司公司San Jose研究所的研究所的Edgar.F.Code发表了发表了题为题为“大型共享数据库数据的关系模型大型共享数据库数据的关系模型”的著名论文,树立的著名论文,树立了了关系型关系型数据库的新的里程碑数据库的新的里程碑1973年,年, Charles. W. Bachman 因在数据库方面的杰出贡因在数据库方面的杰出贡献而获献而获ACM图灵奖图灵奖1976年,年,IBM San Jose研究所研制出在研究所研制出在IBM 370机器上运机器上运行的行的SYSTEM
5、R关系型数据库管理系统关系型数据库管理系统1979年,年,ORACLE公司推出了第一个商品化的关系型数据公司推出了第一个商品化的关系型数据库系统库系统ORACLE 2.0数据库发展历程数据库发展历程80年代至今,是数据库技术发展的成熟时期,这个时期出年代至今,是数据库技术发展的成熟时期,这个时期出现了众多的大型数据库系统,包括现了众多的大型数据库系统,包括IBM的的DB2、微软的、微软的SQL Server、Sybase以及以及Informix相继出现,使数据库系统呈相继出现,使数据库系统呈现出夺目的光彩现出夺目的光彩,中国的人大金仓中国的人大金仓1981年,年, Edgar.F. Codd
6、因在关系数椐库管理系统的理论因在关系数椐库管理系统的理论和实践方面的贡献而获奖和实践方面的贡献而获奖1998年,年,James Gray成为第三十三位图灵奖获得者。数据成为第三十三位图灵奖获得者。数据库和事务库和事务(Transaction)处理研究领域开创性的贡献,和其处理研究领域开创性的贡献,和其在系统实现方面的领导地位在系统实现方面的领导地位第第2章章 数据库的创建和管理数据库的创建和管理本章学习目标掌握数据库的两种存储结构掌握数据库的两种存储结构掌握数据库文件和文件组的相关知识点掌握数据库文件和文件组的相关知识点掌握创建数据库的方法掌握创建数据库的方法掌握删除数据库的方法掌握删除数据库
7、的方法掌握数据库更名、修改大小的方法掌握数据库更名、修改大小的方法本章内容2.1 系统数据库系统数据库2.2 数据库的结构数据库的结构 2.2.1 数据库文件数据库文件 2.2.2 文件组文件组2.3 创建数据库创建数据库2.4 管理数据库管理数据库2.1 系统数据库在安装了在安装了SQL Server 2012以后,系统会自以后,系统会自动创建动创建5个系统数据库:个系统数据库:master、model、msdb、tempdb、resourcemaster:记录了:记录了SQL Server系统的所有系系统的所有系统级别的信息,包括系统中所有的登录账户、统级别的信息,包括系统中所有的登录账户
8、、链接服务器、系统配置信息、链接服务器、系统配置信息、SQL Server的的初始化信息及数据库错误信息等内容。初始化信息及数据库错误信息等内容。2.1 系统数据库model:是创建用户数据库的模板。当用户:是创建用户数据库的模板。当用户创建一个数据库时,创建一个数据库时,model数据库的内容会数据库的内容会自动复制到用户数据库中。自动复制到用户数据库中。msdb:存储报警、作业及操作员信息。:存储报警、作业及操作员信息。tempdb:为临时表和临时存储过程提供空间:为临时表和临时存储过程提供空间resource:只读数据库,包含:只读数据库,包含 SQL Server中的所有系统对象。中的
9、所有系统对象。 2.2 数据库的结构数据库的存储结构分为数据库的存储结构分为逻辑逻辑存储结构和存储结构和物理物理存储结构两种存储结构两种数据库的数据库的逻辑存储结构逻辑存储结构指的是数据库是由哪指的是数据库是由哪些逻辑对象组成的,些逻辑对象组成的,SQL Server中的逻辑对中的逻辑对象主要包括象主要包括数据数据表、视图、同义词、存储过表、视图、同义词、存储过程、函数、触发器、规则,另外还有用户、程、函数、触发器、规则,另外还有用户、角色、架构等角色、架构等2.2 数据库的结构保存数据库各种逻辑对象的物理文件如何在保存数据库各种逻辑对象的物理文件如何在磁盘上存储的磁盘上存储的数据库在磁盘上是
10、以数据库在磁盘上是以文件文件为单位存储的为单位存储的SQL Server 将数据库映射为将数据库映射为一组一组操作系统操作系统文件文件2.2.1 数据库文件每个数据库都每个数据库都至少至少有有两个物理文件与之对应两个物理文件与之对应一个数据库文件一个数据库文件(.MDF)一个事务日志文件一个事务日志文件(.LDF)数据和日志信息从不混合在相同的文件中数据和日志信息从不混合在相同的文件中而且各文件仅在一个数据库中使用而且各文件仅在一个数据库中使用2.2.1 数据库文件数据库具有三种类型的文件:数据库具有三种类型的文件: 主数据文件主数据文件(.MDF) 辅助数据文件(辅助数据文件(.NDF) 事
11、物日志文件(事物日志文件(.LDF)2.2.1 数据库文件主数据文件主数据文件 主数据文件是数据库的起点,指向数据库中主数据文件是数据库的起点,指向数据库中的其他文件的其他文件每个数据库都有一个主数据文件每个数据库都有一个主数据文件主数据文件的推荐文件扩展名是主数据文件的推荐文件扩展名是 .mdf。 2.2.1 数据库文件辅助数据辅助数据文件文件 除除主数据文件以外的所有其他数据文件都是主数据文件以外的所有其他数据文件都是辅助数据辅助数据文件文件数据库数据库可能不含有任何辅助数据可能不含有任何辅助数据文件文件数据库数据库可可含有含有多个辅助数据多个辅助数据文件文件辅助辅助数据文件的推荐文件扩展
12、名是数据文件的推荐文件扩展名是 .ndf 2.2.1 数据库文件事务事务日志文件日志文件 包含用于包含用于恢复数据库的所有恢复数据库的所有日志信息日志信息每个每个数据库必须至少有一个数据库必须至少有一个日志文件日志文件事务事务日志采用提前日志采用提前写入方式写入方式,即对数据库的,即对数据库的修改先写入事务日志中,然后再写入修改先写入事务日志中,然后再写入数据库数据库日志文件日志文件的推荐文件扩展名的推荐文件扩展名是是 .Ldf 2.2.1 数据库文件SQL文件文件拥有两个拥有两个名称名称 逻辑文件名逻辑文件名 物理文件名物理文件名逻辑文件名逻辑文件名是在所有是在所有 Transact-SQL
13、 语句中引用物理文语句中引用物理文件时所使用的件时所使用的名称名称,具有,具有唯一唯一性,即对象名性,即对象名物理文件名物理文件名是是包括路径包括路径的物理的物理文件名文件名例如数据库例如数据库test,对应,对应c:test.mdf和和c:testlog.ldf数据库中所有文件的位置都记录在数据库的主文件和数据库中所有文件的位置都记录在数据库的主文件和 master 数据库中数据库中2.2.2 文件组SQL Server中的数据库文件分为中的数据库文件分为: 主文件组(主文件组(Primary File Group) 用户定义文件组(用户定义文件组(user_defined Group)主文
14、件组:主要数据库文件和任何没有明确指派给主文件组:主要数据库文件和任何没有明确指派给其他文件组的其他文件其他文件组的其他文件数据库的系统表都包含在主文件组中。数据库的系统表都包含在主文件组中。2.2.2 文件组用户定义文件组:在用户定义文件组:在CREATE DATABASE或或ALTER DATABASE语句中,使用语句中,使用FILEGROUP关关键字指定的文件组键字指定的文件组一个文件只能存在于一个文件组中,一个文件组也一个文件只能存在于一个文件组中,一个文件组也只能被一个数据库使用只能被一个数据库使用日志文件是独立的,它不能作为任何文件组的成员日志文件是独立的,它不能作为任何文件组的成
15、员在没有指定用户定义文件组的情况下,所有文件都在没有指定用户定义文件组的情况下,所有文件都包含在主文件组中包含在主文件组中2.3 创建数据库若要创建数据库,必须确定数据库的名称、若要创建数据库,必须确定数据库的名称、所有者、大小以及存储该数据库的文件和文所有者、大小以及存储该数据库的文件和文件组。件组。创建数据库的方法主要有两种:创建数据库的方法主要有两种:使用使用SQL Server管理控制台创建数据库管理控制台创建数据库使用使用Transact-SQL语言创建数据库。语言创建数据库。2.3 创建数据库CREATE DATABASE database_name ON PRIMARY ,.n
16、, ,n LOG ON ,n := (NAME = logical_file_name , FILENAME = os_file_name , SIZE = size , MAXSIZE = max_size | UNLIMITED , FILEGROWTH = growth_increment KB | MB | GB | TB | % ) ,n := FILEGROUP filegroup_name DEFAULT ,n 2.3 创建数据库各参数说明如下:各参数说明如下:database_name:数据库的名称,最长为:数据库的名称,最长为128个字符。个字符。PRIMARY:该选项是一个
17、关键字,指定主文件组中的:该选项是一个关键字,指定主文件组中的文件。文件。LOG ON:指明事务日志文件的明确定义。:指明事务日志文件的明确定义。NAME:指定数据库的逻辑名称,这是在:指定数据库的逻辑名称,这是在SQL Server系统中使用的名称,是数据库在系统中使用的名称,是数据库在SQL Server中的标识中的标识符。符。FILENAME:指定数据库所在文件的操作系统文件名:指定数据库所在文件的操作系统文件名称和路径,该操作系统文件名和称和路径,该操作系统文件名和NAME的逻辑名称一一的逻辑名称一一对应。对应。SIZE:指定数据库的初始容量大小。:指定数据库的初始容量大小。MAXSI
18、ZE:指定操作系统文件可以增长到的最大尺寸。:指定操作系统文件可以增长到的最大尺寸。如果没有指定,则文件可以不断增长直到充满磁盘。如果没有指定,则文件可以不断增长直到充满磁盘。FILEGROWTH:指定文件每次增加容量的大小,当指:指定文件每次增加容量的大小,当指定数据为定数据为0时,表示文件不增长。时,表示文件不增长。2.3 创建数据库例:使用例:使用CREATE DATABASE创建一个新创建一个新的数据库,名称为的数据库,名称为“STUDENT2”,其他所其他所有参数均取默认值。有参数均取默认值。 create database STUDENT23.2.1 创建数据库例:创建一个名称为例
19、:创建一个名称为STUDENT3的数据库,的数据库,该 数 据 库 的 主 文 件 逻 辑 名 称 为该 数 据 库 的 主 文 件 逻 辑 名 称 为S T U D E N T 3 _ d a t a , 物 理 文 件 名 为物 理 文 件 名 为STUDENT3.mdf,初始大小为初始大小为3MB,最大尺最大尺寸为无限大,增长速度为寸为无限大,增长速度为15%;数据库的日;数据库的日志文件逻辑名称为志文件逻辑名称为STUDENT3_log,物理文物理文件名为件名为STUDENT3.ldf,初始大小为初始大小为2MB,最大尺寸为最大尺寸为50MB,增长速度为增长速度为1MB;要求要求数据库
20、文件和日志文件的物理文件都存放在数据库文件和日志文件的物理文件都存放在E盘的盘的DATA文件夹下。文件夹下。实现的步骤如下:实现的步骤如下:(1)在)在E盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。(2)在)在SQL Server Management Studio中新建一个查中新建一个查询页面。询页面。(3)输入以下程序段并执行此查询:)输入以下程序段并执行此查询:CREATE DATABASE STUDENT3ON PRIMARY(NAME= STUDENT3_data,FILENAME=E:DATASTUDENT3.mdf,SIZE=3,MAXSIZE=unli
21、mited,FILEGROWTH=15%) LOG ON(NAME= STUDENT3_log,FILENAME=E:DATASTUDENT3.ldf,SIZE=2,MAXSIZE=50,FILEGROWTH=1)2.3 创建数据库例:创建一个指定多个数据文件和日志文件的数据库。例:创建一个指定多个数据文件和日志文件的数据库。该数据库名称为该数据库名称为STUDENTS,有有1个个5MB和和1个个10MB的数据文件和的数据文件和2个个5MB的事务日志文件。数据文件逻的事务日志文件。数据文件逻辑名称为辑名称为STUDENTS1和和STUDENTS2,物理文件名物理文件名为为STUDENTS1.m
22、df和和STUDENTS2.ndf。主文件是主文件是STUDENTS1,由由PRIMARY指定,两个数据文件的最指定,两个数据文件的最大尺寸分别为无限大和大尺寸分别为无限大和100MB,增长速度分别为增长速度分别为10%和和1MB。事务日志文件的逻辑名为事务日志文件的逻辑名为STUDENTSLOG1和和 S T U D E N T S L O G 2 , 物 理 文 件 名 为物 理 文 件 名 为STUDENTSLOG1.ldf和和STUDENTSLOG2.ldf,最大最大尺寸均为尺寸均为50MB,文件增长速度为文件增长速度为1MB。要求数据库要求数据库文件和日志文件的物理文件都存放在文件和
23、日志文件的物理文件都存放在E盘的盘的DATA文件文件夹下。夹下。实现的步骤如下:实现的步骤如下:(1)在)在E盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。(2)在)在SQL Server Management Studio中新建一个中新建一个查询页面。查询页面。(3)输入以下程序段并执行此查询:)输入以下程序段并执行此查询:CREATE DATABASE STUDENTSON PRIMARY(NAME=STUDENTS1,FILENAME=E:DATASTUDENTS1.mdf,SIZE=5,MAXSIZE=unlimited,FILEGROWTH=10%),(NAM
24、E= STUDENTS12,FILENAME=E:DATASTUDENTS2.ndf,SIZE=10,MAXSIZE=100,FILEGROWTH=1) 2.3 创建数据库LOG ON (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 创建数据库例:例:创建学生管理数据库创建学生管理数据库js
25、jxy。将该数据库的数据文。将该数据库的数据文件存储在件存储在D:Data下,数据文件的逻辑名称为下,数据文件的逻辑名称为jsjxy,文件名为文件名为jsjxy,初始大小为,初始大小为5MB,最大尺寸为无限制,最大尺寸为无限制,增长速度为增长速度为1MB;该数据库的日志文件,逻辑名称为;该数据库的日志文件,逻辑名称为 jsjxy_log,文件名为,文件名为jsjxy_log.ldf,初始大小为,初始大小为2MB,最大尺寸为最大尺寸为2GB,增长速度为,增长速度为10%。实现的步骤如下:实现的步骤如下:在在D盘创建一个新的文件夹,名称是盘创建一个新的文件夹,名称是“DATA”。CREATE DA
26、TABASE JSJXYON ( NAME =JSJXY, /*注意有逗号分隔*/ FILENAME=D:DATAJSJXY.MDF, /*注意用半角状态下的引号,D:DATA文件夹必须已经存在*/ SIZE=5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1MB) /*注意没有逗号*/LOG ON ( NAME= JSJXY_LOG, /*注意有逗号分隔*/ FILENAME=D:DATAJSJXY_LOG.LDF, /*注意使用半角状态下的引号*/ SIZE=2MB, MAXSIZE = 2084MB, FILEGROWTH = 10%) /*注意没有逗号*/
27、 2.3 创建数据库2.4 管理数据库重命名数据库重命名数据库附加与分离数据库附加与分离数据库更改数据库状态更改数据库状态删除数据库删除数据库2.4.1 查看数据库信息sp_helpdb 数据库名数据库名sp_helpdbsp_helpdb jsjxy2.4.3 重命名数据库1sp_renamedb 原数据库名,新数据库名原数据库名,新数据库名2. ALTER DATABASE old_database_name Modify NAME=new_database_name2.4.5 分离和附加数据库使用管理平台实现使用管理平台实现2.4.6 删除数据库drop 数据库名数据库名2.4.4 打开
28、数据库USE 数据库名数据库名第第3章章 数据表的创建和管理数据表的创建和管理本章学习目标掌握掌握SQL Server 2012中的数据类型中的数据类型掌握如何利用掌握如何利用SQL Server管理控制台和管理控制台和Transact-SQL语言语言创建表创建表掌握创建、删除和修改约束的方法掌握创建、删除和修改约束的方法掌握增加、删除和修改字段的方法掌握增加、删除和修改字段的方法掌握如何查看数据表的定义、表中数据、数据库对象之间的掌握如何查看数据表的定义、表中数据、数据库对象之间的依赖关系依赖关系掌握如何利用掌握如何利用SQL Server管理控制台和管理控制台和Transact-SQL语言
29、语言删除表删除表3.1 创建数据表创建数据表3.2 管理数据表管理数据表3.3 使用约束实现数据完整性使用约束实现数据完整性3.4 插入、删除、修改表中数据插入、删除、修改表中数据3.1 创建数据表字段、记录字段、记录3.1 创建数据表每个数据库可容纳每个数据库可容纳20亿个表,每个表可以有亿个表,每个表可以有1024列(字段)列(字段)CREATE TABLE database_name.schema_name.|schema_name.table_name( column_name NULL|NOT NULL IDENTITY(seed,increment) n ,n ,n )3.1 创建
30、数据表创建表创建表studentCREATE TABLE student ( id char (12) NOT NULL, name nvarchar (50) , sex char (2), age int, birthday date, nation nvarchar(50), class nvarchar(50), specialty nvarchar(50) )3.1 创建数据表创建表创建表courseCREATE TABLE course ( courseid char(12) NOT NULL , coursename char (50) NOT NULL, credit int
31、)3.1 创建数据表创建表创建表scCREATE TABLE sc ( id char(12) NOT NULL , courseid char (12) NOT NULL, score float )3.2.1 增加、删除和修改字段ALTER TABLE table ALTER COLUMN column_name new_data_type(precision,scale)|NULL|NOT NULL |ADD| |,n |DROPCONSTRAINTconstraint_name |COLUMN column_name,n【例】在【例】在student表中增加三列:表中增加三列:“add
32、ress”列,数据类型为列,数据类型为varchar(20),允许为空;,允许为空;“telephone”列,数据类型为列,数据类型为varchar(15),允,允许为空,许为空,“courseid”列,数据类型为列,数据类型为char(12),允许为空。允许为空。ALTER TABLE studentADDaddress varchar(20) NULL,telephone varchar(15) NULL,courseid char(12) NULL增加字段【例】【例】在student表中,删除“class”、“telephone”两列。ALTER TABLE studentDROP CO
33、LUMN class,telephone删除字段ALTER TABLE 表名 ALTER COLUMN 列名【例】在course表中,将courseid列的数据类型改为varchar(20),允许空。 ALTER TABLE course ALTER COLUMN courseid varchar(20) NULL修改字段sp_rename 表名.原列名,新列名, COLUMNsp_rename student.specialty, DepartmentName, COLUMN修改列名 sp_rename 原表名,新表名【例】将course表重命名为Department。 sp_rename
34、course,Department3.2.2 重命名数据表 DROP TABLE 表名1 ,n 【例】删除Department表。 DROP TABLE Department3.2.3 删除数据表3.3.1 数据完整性定义数据完整性定义数据完整性是指数据的正确性和有效性数据完整性是指数据的正确性和有效性主要用于保证数据库中数据的质量主要用于保证数据库中数据的质量防止数据库中存在不符合语义规定的数据和防防止数据库中存在不符合语义规定的数据和防止因错误信息的输入止因错误信息的输入/输出造成无效操作或报输出造成无效操作或报错而提出的错而提出的3.3 使用约束实现数据完整性实体完整性实体完整性参照完整
35、性参照完整性域完整性域完整性3.3.2 数据完整性类型约束(约束(constraint)是)是SQL Server 2012提供提供的自动保持数据库完整性的一种方法的自动保持数据库完整性的一种方法约束就是限制,定义约束就是定义可输入表或约束就是限制,定义约束就是定义可输入表或表的单个列中的数据的限制条件。表的单个列中的数据的限制条件。3.3.3 约束定义主键约束(主键约束(primary key constraint)唯一约束(唯一约束(unique constraint)外键约束(外键约束(foreign key constraint)检查约束(检查约束(check constraint)默
36、认约束(默认约束(default constraint)非空约束(非空约束(not null constraint)3.3.4 约束分类3.3.4 约束分类-约束与完整性为了便于管理约束,在创建约束时,需要创建为了便于管理约束,在创建约束时,需要创建约束的名称,约束名称必须符合标识符命名规约束的名称,约束名称必须符合标识符命名规则。则。3.3.5 约束名1使用使用CREATE TABLE语句语句创建创建 CREATE TABLE 表名表名 ( , ,n ,n)2使用使用ALTER TABLE语句创建约束语句创建约束 ALTER TABLE 表名表名 ADD3.3.6 创建约束的语法格式1主键约
37、束的主键约束的定义定义 主主键约束(键约束(primary key constraint)用于)用于指定表的一列或几列的组合来唯一标识表,即能指定表的一列或几列的组合来唯一标识表,即能在表中唯一地指定一行在表中唯一地指定一行记录记录 这样这样的一列或列的组合称为表的主键(的一列或列的组合称为表的主键(primary key,PK)定义定义主键约束的列其值不可为空、不可主键约束的列其值不可为空、不可重复重复每个每个表中只能有一个主键。表中只能有一个主键。3.3.7 主键约束2在创建表的同时创建主键约束在创建表的同时创建主键约束(1)创建单个列的主键可采用列级)创建单个列的主键可采用列级约束约束
38、列列名名CONSTRAINT约束名约束名PRIMARY KEY(2)多个列组合的主键约束,采用表级约束)多个列组合的主键约束,采用表级约束CONSTRAINT 约束名约束名 PRIMARY KEY (列名列名1 ,列名列名n )3.3.7 主键约束【例例】在在jsjxy数据库中,创建数据库中,创建student表并为表并为id字段添加主字段添加主键。键。CREATE TABLE student1( id char (12) NOT NULL PRIMARY KEY, name nvarchar (50) , sex char (2), age int, birthday date, natio
39、n nvarchar(50), class nvarchar(50), specialty nvarchar(50)3.3.7 主键约束【例例】在在score1表中,将表中,将id和和courseid两个字段两个字段设为主键。设为主键。 CREATE TABLE score1(id char(12) NOT NULL ,courseid char (12) NOT NULL,score float,CONSTRAINT PK_score1 PRIMARY KEY(id,courseid)3.3.7 主键约束3在一张现有表上添加主键约束在一张现有表上添加主键约束【例例】为为student表添加主
40、键约束表添加主键约束。ALTER TABLE studentADD CONSTRAINT PK_student PRIMARY KEY(id)3.3.7 主键约束4删除主删除主键约束键约束ALTER TABLE表名表名DROP CONSTRAINT约束名约束名1,约束名约束名n【例例】为为student表删除主表删除主键约束键约束。 ALTER TABLE student drop CONSTRAINT PK_student3.3.7 主键约束唯一约束(唯一约束(unique constraint)用于)用于指定一指定一个列或多个列的组合值具有个列或多个列的组合值具有唯一性唯一性唯一唯一约束指
41、定的列可以为约束指定的列可以为NULL,但主键约束,但主键约束所在的列则不允许为所在的列则不允许为NULL。一一个表中可以包含多个唯一约束,而主键约束个表中可以包含多个唯一约束,而主键约束则只能有一个。则只能有一个。3.3.8 唯一约束2在创建表的同时在创建表的同时创建唯一约束创建唯一约束(1)创建单个列)创建单个列的的唯一唯一可可采用列级采用列级约束约束 列列名名CONSTRAINT约束名约束名 unique(2)多个列组合)多个列组合的的唯一唯一约束约束,采用表级约束,采用表级约束CONSTRAINT 约束名约束名 unique (列名列名1 ,列名列名n )3.3.8 唯一约束CREAT
42、E TABLE course(courseid char(12) PRIMARY KEY,coursename varchar(50) NOT NULL UNIQUE,credit int)CREATE TABLE course(courseid char(12) PRIMARY KEY,coursename varchar(50) NOT NULL,credit int,constraint kk unique(coursename)3.3.8 唯一约束3修改表语句创建唯一约束修改表语句创建唯一约束【例例】为为student表添加唯一约束。表添加唯一约束。 ALTER TABLE stude
43、nt1 ADD CONSTRAINT ddd unique(name)3.3.8 唯一约束3.3.9 外键约束FOREIGN KEY (列名列名1,列名列名2,列名列名n) REFERENCES 主键表名主键表名 (列名列名1,列名列名2,列名列名n) ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT create 和alter中都可使用【例例】在在jsjxy数据库中,为数据库中,为sc表创建外键约束表创建外键约束。ALTER
44、 TABLE scADD CONSTRAINT FK_sc_studentFOREIGN KEY(id)REFERENCES student(id)ALTER TABLE scADD CONSTRAINT FK_sc_courseFOREIGN KEY(courseid)REFERENCES course(courseid)3.3.9 外键约束1. 使用使用CREATE TABLE语句在建表时创建检查语句在建表时创建检查约束约束 CREATE TABLE 表名表名 (列名列名 数据类型数据类型 CONSTRAINT 检检查约束名查约束名 CHECK () ,n )CREATE TABLE xs
45、score(id char(8) NOT NULL,courseid char(4) NOT NULL,score decimal(4,1) NULL CHECK(score=0 AND score=100),CONSTRAINT PK_xsscorePRIMARY KEY(id,courseid),CONSTRAINT FK_xsscore_studentFOREIGN KEY(id)REFERENCES xsscore(id),CONSTRAINT FK_xsscore_courseFOREIGN KEY(courseid)REFERENCES course(courseid)3.3.10
46、 检查约束3.3.10 检查约束2. 使用使用ALTER TABLE语句定义检查语句定义检查约束约束 ALTER TABLE表名表名 WITH CHECK | NOCHECK ADD CONSTRAINT 检查约束名检查约束名 CHECK ()WITH CHECK :对已对已有记录进行约束检查,此值为默认值。有记录进行约束检查,此值为默认值。WITH NOCHECK:对已对已有记录不进行约束检查,只对以后插有记录不进行约束检查,只对以后插入的新记录进行检查。入的新记录进行检查。ALTER TABLE student ADD CONSTRAINT CK_student_age CHECK(age
47、=20 AND age=22)3.3.11 默认值约束1. 使用使用CREATE TABLE语句创建默认值语句创建默认值约束约束 CREATE TABLE 表表名名(列名列名 数据类型数据类型 CONSTRAINT 默认值约束名默认值约束名 DEFAULT ,.n )CREATE TABLE Students(学学号号 Char(8) PRIMARY KEY,姓名姓名 Varchar(12) NOT NULL,民族民族 Varchar(8) NOT NULL DEFAULT 汉族汉族)3.3.11 默认值约束2.使用使用ALTER TABLE语句添加默认值约束语句添加默认值约束 ALTER T
48、ABLE 表名表名ADD CONSTRAINT 默认值约束名默认值约束名DEFAULT()FOR列名列名ALTER TABLE StudentsADD CONSTRAINT DF_Students_nationDEFAULT 汉族汉族 FOR nation3.3.12 非空约束1.使用使用 CREATE TABLE语句创建非空语句创建非空约束约束 CREATE TABLE 表名表名(列名列名 数据类型数据类型 CONSTRAINT 非空约束名非空约束名 NULL | NOT NULL ,.n )2. ALTER TABLE语句添加非空约束语句添加非空约束ALTER TABLE 表名表名 ALT
49、ER COLUMN 列名列名 数据类型数据类型 NULL | NOT NULL3.3.13 使用IDENTITY列1.使用使用CREATE TABEL语句创建语句创建IDENTITY列列 CREATE TABLE 表名表名(列名列名 数据类型数据类型 IDENTITY(seed,increment) ,.n )CREATE TABLE New_score(id Int constraint tt PRIMARY KEY IDENTITY(1,1),xhid Char(8) NOT NULL,courseid Char(4) NOT NULL,score Decimal(4,1) CHECK(s
50、core=0 AND score=100)3.3.13 使用IDENTITY列2.使用使用ALTER TABEL语句添加语句添加IDENTITY列列 ALTER TABLE 表名表名 ADD 列名列名 数据类型数据类型IDENTITY(seed,increment)ALTER TABLE New_scoreDROP CONSTRAINT T1GOALTER TABLE New_scoreDROP COLUMN id GOALTER TABLE New_scoreADD scoreid Int IDENTITY(1,2)3.4 3.4 插入、删除、修改表中数据插入、删除、修改表中数据插入数据插入