数据库的实现_第1页
数据库的实现_第2页
数据库的实现_第3页
数据库的实现_第4页
数据库的实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库的实现第二章回顾与作业点评回顾与作业点评简述设计数据库的步骤简述设计数据库的步骤举例说明实体间有哪些映射关系?举例说明实体间有哪些映射关系?请简要说明三大范式的请简要说明三大范式的含义含义提问提问2/44预习检查预习检查使用使用T-SQL语句创建数据库的语法是什么?语句创建数据库的语法是什么?写出创建数据库表的写出创建数据库表的SQL语句语句写出删除数据库表的写出删除数据库表的SQL语句语句提问提问3/44本章任务本章任务使用使用 T-SQL 语句:语句:创建数据库创建数据库MySchool创建学生信息表创建学生信息表Student创建课程表创建课程表Subject创建成绩表创建成绩表R

2、esult创建年级表创建年级表Grade为表为表Student、 Subject和和Result添加约束添加约束4/44本章目标本章目标 掌握建库的掌握建库的SQL语句语句 掌握建表的掌握建表的SQL语句语句 掌握添加约束的掌握添加约束的SQL语句语句5/44回顾数据库的基础知识回顾数据库的基础知识SQLServer数据库有哪几种文件组成?数据库有哪几种文件组成? 主数据文件:主数据文件:*.mdf次要数据文件:次要数据文件:*.ndf日志文件:日志文件:*.ldf创建创建SQLServer数据库时,需要指定哪些属性?数据库时,需要指定哪些属性? 文件存放位置,分配的初始空间,属于哪个文件组文

3、件存放位置,分配的初始空间,属于哪个文件组文件增长:可以按百分比或实际大小指定增长速度文件增长:可以按百分比或实际大小指定增长速度文件容量设置:可以指定文件增长的最大值或不受限文件容量设置:可以指定文件增长的最大值或不受限提问提问6/44创建数据库创建数据库CREATE DATABASE 数据库名数据库名 ON PRIMARY ( ,n ) LOG ON ( ,n )主文件组,可选参数,默认主文件组,可选参数,默认创建数据库的语法创建数据库的语法语法语法7/44创建数据库示例创建数据库示例 1使用使用CREATE DATABASE语句创建数据库语句创建数据库MySchool,要求:,要求:该数

4、据库具有一个数据文件和一个日志文件该数据库具有一个数据文件和一个日志文件文件保存在文件保存在D盘已有的文件夹盘已有的文件夹Project下下数据文件的大小初始为数据文件的大小初始为5MB,最大值为,最大值为100MB,文件增长率是文件增长率是15%日志文件的大小初始为日志文件的大小初始为2MB,增长量是,增长量是1MB问题问题8/44创建数据库示例创建数据库示例 1CREATE DATABASE MySchool ON PRIMARY -默认就属于默认就属于PRIMARY主文件组,可省略主文件组,可省略( NAME= MySchool_data, -主数据文件的逻辑名主数据文件的逻辑名 -主数

5、据文件的物理名主数据文件的物理名 FILENAME=D:projectMySchool_data.mdf, SIZE=5MB, -主数据文件初始大小主数据文件初始大小 MAXSIZE=100MB, -主数据文件增长的最大值主数据文件增长的最大值 FILEGROWTH=15% -主数据文件的增长率主数据文件的增长率)LOG ON( NAME=MySchool_log, FILENAME=D:projectMySchool_log.ldf, SIZE=2MB, FILEGROWTH=1MB)GO 数据文件的具数据文件的具体描述体描述日志文件的具日志文件的具体描述体描述演示示例演示示例1:创建:创建

6、MySchool数据库数据库9/44创建数据库示例创建数据库示例 2使用使用CREATE DATABASE语句创建数据库语句创建数据库Employee,要求:,要求:数据库具有多个数据和日志文件数据库具有多个数据和日志文件分别设置主数据文件和次要数据文件分别设置主数据文件和次要数据文件分别设置不同的日志文件分别设置不同的日志文件问题问题10/44创建数据库示例创建数据库示例 2CREATE DATABASE Employee ON ( -主数据文件的具体描述主数据文件的具体描述 NAME = employee1, FILENAME = D:projectemployee1.mdf , SIZE

7、 = 10, FILEGROWTH = 10% ), ( -次要次要数据文件的具体描述数据文件的具体描述 NAME = employee2, FILENAME = D:projectemployee2.ndf , SIZE = 20, MAXSIZE = 100, FILEGROWTH = 1 ) LOG ON ( -日志文件日志文件1的具体描述的具体描述 NAME = employeelog1, FILENAME = D:projectemployeelog1_Log.ldf , SIZE = 10, FILEGROWTH = 1 ), ( -日志文件日志文件2的具体描述的具体描述- NAM

8、E = employeelog2, FILENAME = D:projectemployeelog2_Log.ldf , SIZE = 10, MAXSIZE = 50, FILEGROWTH = 1 )GO 多个日志文件多个日志文件主主数据文件数据文件次次数据文件数据文件演示示例演示示例2:创建:创建Employee数据库数据库11/44检查数据库检查数据库如果如果SQL Server中已存在数据库中已存在数据库MySchool,运行下列语句,会出现什么问题?运行下列语句,会出现什么问题?CREATE DATABASE MySchoolON ( )LOG ON( )GO问题问题演示示例演示示

9、例3:查询已创建数据库记录:查询已创建数据库记录12/44USE master -设置当前数据库为设置当前数据库为master,以便访问,以便访问sysdatabases表表GOIF EXISTS (SELECT * FROM sysdatabases WHERE name =MySchool) DROP DATABASE MySchoolCREATE DATABASE MySchoolON ( )GO删除删除数据库数据库DROP DATABASE 数据库名数据库名 检测检测是否是否存在存在MySchool数据库数据库。删除数据库的语法删除数据库的语法语法语法演示示例演示示例4:删除后再次创建

10、:删除后再次创建MySchool数据库数据库若若已经存在该库,已经存在该库,则则执行删除执行删除13/44学员操作学员操作创建创建数据库数据库2-1训练要点:训练要点:使用使用SQL语句创建数据库语句创建数据库需求说明:需求说明:创建学生管理信息系统的物理数据库,要求数据库取创建学生管理信息系统的物理数据库,要求数据库取名为名为MySchool 物理文件保存在物理文件保存在D:project下下 数据文件的初始大小为数据文件的初始大小为10MB,允许自动增长,文件,允许自动增长,文件增长率是增长率是20%,不限制文件的最大值,不限制文件的最大值日志文件初始大小为日志文件初始大小为3MB,每次自

11、动增量是,每次自动增量是1MB,文,文件最大值为件最大值为20MB指导指导教员讲解需求教员讲解需求14/44完成时间完成时间:15分钟分钟学员操作学员操作创建数据库创建数据库2-2实现思路:实现思路:判断判断数据库数据库MySchool是否是否存在存在若已存在,则先删除原有数据库,再创建新数据库若已存在,则先删除原有数据库,再创建新数据库调用调用DOS命令创建文件夹命令创建文件夹EXEC xp_cmdshell mkdir D:project使用使用SQL语句创建数据库语句创建数据库MySchool编译、执行编译、执行SQL语句,并保存语句,并保存SQL脚本脚本指导指导15/44共性问题集中讲

12、解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧16/44回顾表的基础知识回顾表的基础知识简述创建表的基本步骤简述创建表的基本步骤确定表中有哪些列确定表中有哪些列确定每列的数据类型确定每列的数据类型给表添加各种约束给表添加各种约束创建各表之间的关系创建各表之间的关系SQL Server 2008有有哪些哪些数据类型数据类型?整型数据:整型数据:int,smallint 浮点数据:浮点数据:float,numeric decimal,numeric 字符数据:字符数据:固定长度:固定长度:char(6)可变长度:可变长度:varchar(10|max

13、)固定固定长度:长度:nchar(6)可变长度:可变长度:nvarchar(10|max) 布尔数据(真布尔数据(真/假)假) bit:1/ 0 货币数据货币数据 money日期数据日期数据 datetime提问提问17/44字符数据类型字符数据类型数据类型数据类型Unicode编码编码存储特点存储特点字符数字符数存储大小(字节)存储大小(字节)char(n)否否固定长度固定长度18,000nvarchar(n)否否可变长度可变长度08,000输入数据的实际长度输入数据的实际长度 + 2varchar(max)否否可变长度可变长度0231-1输入数据的实际长度输入数据的实际长度 + 2ncha

14、r(n)是是固定长度固定长度14,000 n * 2 字节字节nvarchar(n)是是可变长度可变长度04,000输入数据的实际长度输入数据的实际长度 * 2 + 2nvarchar(max)是是可变长度可变长度0231-1输入数据的实际长度输入数据的实际长度 * 2 + 218/44创建表创建表建表的语法建表的语法CREATE TABLE 表名表名 ( 列名列名1 数据类型数据类型 列的特征,列的特征, 列名列名2 数据类型数据类型 列的特征,列的特征, .)列的特征:列的特征:包括该列是否为空(包括该列是否为空(NULL)、是否是标识列(自动编号)、是否)、是否是标识列(自动编号)、是否

15、有默认值、是否为主键等有默认值、是否为主键等 语法语法19/44创建表创建表StudentUSE MySchool -将当前数据库设置为将当前数据库设置为MySchoolGOCREATE TABLE Student -创建学生信息表创建学生信息表( StudentNo int NOT NULL, -学号,非空(必填学号,非空(必填) LoginPwd nvarchar(20) NOT NULL, -密码,密码,非空(必填非空(必填) StudentName nvarchar(20) NOT NULL, -姓名,非空(必填姓名,非空(必填) Sex bit NOT NULL, -性别,非空(必填

16、)性别,非空(必填) GradeId int NOT NULL, -年级号年级号(必填必填) Phone nvarchar(50) NULL, -电话电话 BornDate datetime NOT NULL, -出生日期出生日期(必填必填) Address nvarchar(255) NULL, -地址地址 Email nvarchar(50) NULL, -邮件帐号邮件帐号 IDENTITYCard varchar(18) NOT NULL -身份证号身份证号(必填必填)) GO创建创建Student表表演示示例演示示例5:创建学生信息表:创建学生信息表Student示例示例20/44删除

17、表删除表2-1如果当前数据库中已存在如果当前数据库中已存在Student表,再次创表,再次创建时系统将提示出错建时系统将提示出错 。如何解决呢?。如何解决呢?演示示例演示示例6:查询已创建表记录:查询已创建表记录问题问题21/44删除表删除表2-2删除删除表的语法表的语法DROP TABLE 表名表名-将当前数据库设置为将当前数据库设置为MySchool,以便在,以便在MySchool数据库中建表数据库中建表USE MySchoolGOIF EXISTS (SELECT * FROM sysobjects WHERE name=Student ) DROP TABLE StudentCREAT

18、E TABLE Student -创建学生信息表创建学生信息表( ) GO语法语法示例示例22/44序号序号列名称列名称列说明列说明类型类型长度长度属性属性备注备注1SubjectNo课程编号课程编号int非空非空标识列,自标识列,自增增1 12SubjectName课程名称课程名称nvarchar50非空非空3ClassHour学时学时 int4GradeID年级编号年级编号int学员操作学员操作创建创建表表Subject需求说明:需求说明:检查判断课程表检查判断课程表Subject是否已是否已存在存在若存在该表,则先执行删除,再创建新表若存在该表,则先执行删除,再创建新表使用使用SQL语句

19、创建课程表语句创建课程表Subject练习练习完成时间:完成时间:10分钟分钟23/44序号列名称列说明类型长度属性备注1StudentNo学号学号int非空非空2SubjectNo课程编号课程编号int非空非空3ExamDate考试日期考试日期 datetime非空非空4StudentResult考试成绩考试成绩int非空非空学员操作学员操作创建创建表表Result需求说明:需求说明:检查判断成绩表检查判断成绩表Result是否已是否已存在存在若已存在该表,则先执行删除,再创建新表若已存在该表,则先执行删除,再创建新表使用使用SQL语句创建成绩表语句创建成绩表Result练习练习完成时间:完

20、成时间:10分钟分钟24/44学员操作学员操作使用使用SQL脚本创建表脚本创建表需求说明:需求说明:使用现有的使用现有的SQL脚本创建学生表脚本创建学生表Student使用现有的使用现有的SQL脚本创建年级表脚本创建年级表Grade提示:提示:选择菜单选择菜单“文件文件”-“打开打开”指定的指定的SQL脚本文件脚本文件确认数据库是确认数据库是MySchool编译、执行脚本中编译、执行脚本中SQL代码代码检查表是否创建成功检查表是否创建成功练习练习完成时间:完成时间:10分钟分钟25/44共性问题集中讲解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技巧调试技巧

21、26/44小结小结简述数据库、数据文件与日志文件的关系简述数据库、数据文件与日志文件的关系比较比较char与与varchar、nchar与与nvarchar的异的异同点同点已创建的数据库、表可以通过已创建的数据库、表可以通过SQL Server的的哪些系统表查询到?哪些系统表查询到?提问提问27/44回顾数据完整性回顾数据完整性数据完整性有哪几种?各自作用是什么?数据完整性有哪几种?各自作用是什么?实体完整性实体完整性能够唯一标识表中的每一条记录能够唯一标识表中的每一条记录实现方式:主键、唯一键、实现方式:主键、唯一键、IDENTITY属性属性域完整性域完整性表中特定列数据的有效性,确保不会输

22、入无效的值表中特定列数据的有效性,确保不会输入无效的值实现方式:类型、缺省值、约束、空值实现方式:类型、缺省值、约束、空值引用完整性引用完整性维护表间数据的有效性、完整性维护表间数据的有效性、完整性实现方式:建立外键联系另一表的主键实现方式:建立外键联系另一表的主键自定义完整性自定义完整性根据业务处理流程定义的特定业务规则根据业务处理流程定义的特定业务规则实现方式:存储过程、触发器、规则实现方式:存储过程、触发器、规则提问提问28/44回顾回顾SQL Server的约束的约束使用约束的目的是什么?使用约束的目的是什么?确保表中数据完整性确保表中数据完整性常用的约束类型有哪些?常用的约束类型有哪

23、些?主键约束(主键约束(Primary Key Constraint):要求主):要求主键列数据唯一,并且不允许为空键列数据唯一,并且不允许为空唯一约束(唯一约束(Unique Constraint):要求该列数据):要求该列数据唯一,允许为空,但只能出现一个空值唯一,允许为空,但只能出现一个空值检查约束(检查约束(Check Constraint):某列取值范围):某列取值范围限制、格式限制等限制、格式限制等默认约束(默认约束(Default Constraint):某列的默认值):某列的默认值外键约束(外键约束(Foreign Key Constraint):用于两):用于两表间建立关系,

24、需要指定引用主表的哪列表间建立关系,需要指定引用主表的哪列提问提问29/44添加约束添加约束 添加约束的语法添加约束的语法ALTER TABLE 表名表名 ADD CONSTRAINT 约束名约束名 约束类型约束类型 具体的约束说明具体的约束说明约束名的取名规则推荐采用:约束类型约束名的取名规则推荐采用:约束类型_约束列约束列主键(主键(Primary Key)约束:如)约束:如 PK_stuNo唯一(唯一(Unique Key)约束:如)约束:如 UQ_stuID默认(默认(Default Key)约束:如)约束:如 DF_stuAddress检查(检查(Check Key)约束:如)约束:

25、如 CK_stuBornDate外键(外键(Foreign Key)约束:如)约束:如 FK_stuNo 语法语法30/44添加约束添加约束示例示例如何在表如何在表Student中添加下面的约束?中添加下面的约束?主键约束:学号主键约束:学号唯一约束:身份证号唯一约束:身份证号 默认约束:默认约束:Address列的默认值是列的默认值是“地址不详地址不详”检查约束:出生日期的值为检查约束:出生日期的值为1980年年1月月1日后日后外键约束:设置外键约束:设置GradeID列为外键,建立列为外键,建立Grade表表与与Student表的引用关系表的引用关系演示示例演示示例7:给:给Student

26、表添加约束表添加约束问题问题31/44删除约束删除约束删除删除约束的语法约束的语法ALTER TABLE 表名表名 DROP CONSTRAINT 约束名约束名 例如:删除例如:删除Student表中地址默认约束表中地址默认约束ALTER TABLE Student DROP CONSTRAINT DF_stuAddress语法语法示例示例演示示例演示示例8:删除:删除Student表约束表约束32/44练习练习学员操作学员操作添加约束添加约束需求说明:需求说明:使用使用T-SQL语句为语句为Grade表和表和Student表添加约束表添加约束Grade表添加的约束列举如下。表添加的约束列举如

27、下。主键约束:年级编号。主键约束:年级编号。Student表添加的约束列举如下。表添加的约束列举如下。主键约束:学号。主键约束:学号。唯一约束:身份证号。唯一约束:身份证号。默认约束:如果不填写地址,默认值为默认约束:如果不填写地址,默认值为地址不详地址不详。检查约束:要求出生日期在检查约束:要求出生日期在1980年年1月月1日之后。日之后。外键约束:主表外键约束:主表Grade和从表和从表Student通过通过GradeID列建列建立引用关系。立引用关系。完成时间完成时间:15分钟分钟33/44共性问题集中讲解共性问题集中讲解常见问题及解决办法常见问题及解决办法代码规范问题代码规范问题调试技

28、巧调试技巧34/44学员操作学员操作添加约束添加约束2-1训练要点:训练要点:使用使用SQL语句向语句向Subject表添加表添加约束约束需求说明:需求说明:使用使用T-SQL脚本向脚本向Subject表中插入记录,随后,表中插入记录,随后,使用使用ALTER TABLE语句向课程表语句向课程表Subject中添加中添加相关约束相关约束 主键约束:课程编号主键约束:课程编号非空约束:课程名称非空约束:课程名称检查约束:学时必须大于等于检查约束:学时必须大于等于0外键约束:主表外键约束:主表Grade和从表和从表Subject通过通过GradeID建立建立引用关系引用关系教员讲解需求教员讲解需求

29、指导指导35/44学员操作学员操作添加约束添加约束2-2实现思路:实现思路:执行执行T-SQL脚本向脚本向Subject表中插入数据表中插入数据使用使用T-SQL语句添加表的各种约束语句添加表的各种约束通过插入通过插入/修改违反约束的数据进行验证修改违反约束的数据进行验证难点指导:难点指导:使用使用“WITH NOCHECK”解决表中已有数据与添加解决表中已有数据与添加的约束发生冲突的约束发生冲突USE MySchoolGOALTER TABLE Subject -主键约束(课程编号)主键约束(课程编号) ADD CONSTRAINT PK_Subject PRIMARY KEY (Subje

30、ctNo)ALTER TABLE Subject -非空约束(课程名称)非空约束(课程名称) ADD CONSTRAINT CK_SubjectName CHECK (SubjectName is not null)ALTER TABLE Subject WITH NOCHECK -检查约束(学时必须大于等于检查约束(学时必须大于等于0) ADD CONSTRAINT CK_ClassHour CHECK (ClassHour=0)ALTER TABLE Subject -外键约束(主表外键约束(主表Grade和从表和从表Subject建立引用关系)建立引用关系) ADD CONSTRAINT

31、 FK_GradeId FOREIGN KEY (GradeId) REFERENCES Grade (GradeId)GO指导指导完成时间完成时间:15分钟分钟WITH NOCHECK对表中已对表中已有数据不做约束检查,因此有数据不做约束检查,因此不能保证表中数据的正确性不能保证表中数据的正确性36/44练习练习学员操作学员操作添加添加Result表约束表约束需求说明:需求说明:使用使用SQL语句创建成绩表语句创建成绩表Result约束约束包括:包括:主键约束:学号、课程编号、日期三列构成复合主键主键约束:学号、课程编号、日期三列构成复合主键默认约束:日期为系统当前日期默认约束:日期为系统当前日期检查约束:考试成绩不得大于检查约束:考试成绩不得大于100分,或小于分,或小于0分分外键约束:外键约束: 主表主表Student和从表和从表Result通过通过StudentNo列建立引用关系列建立引用关系 主表主表Subject和从表和从表Result通过通过SubjectNo列建立引用关系列建立引用关系完成时间完成时间:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论