页数:58页文件大小:374.1 KB来源: 数据库原理与应用(SQLServer版)ppt课件
本课件从系统数据类型与用户自定义数据类型讲起,依次演示数据表结构的创建、修改与删除,说明列属性、约束设置与索引的建立方法,并给出表内容增加与修改的操作示例,便于参照练习。
第5章数据表的管理
数据库表管理
数据类型
系统数据类型
精确数字、近似数字
用户定义的数据类型
创建用户定义的数据类
例1:为数据库teachingDa
用CREATE TYPE定义数据类型
用CREATE TYPE定义数据类型 在SQL-Server 2005之后的后续版本中,sp_addtype将不再可用,取而代之的是CREATE TYPE语句。其语法方式如下:CREATE TYPE type_name{FROM base_type[ ( precision [, scale ] ) ][ NULL | NOT NULL ]}其中,typename:用户自定义的数据类型的名称。base_type:表示建立的数据类型所基于的由SQL Server提供的数据类型。当建立decimal或numeric类型时,需要用precision来指定总位数,用scale来指定小数位数。NULL | NOT NULL:指定此类型是否可容纳空值。如果未指定,则默认为NULL。例2:方法一CREATE TYPE
当用户定义的数据类型
表结构的创建
使用菜单命令创建表
列属性
例3:teachDataA中新建
常用的设置
数据取值范围的约束、设置为惟一索引
例4:小黄在建立了数据表TchIn
步骤1
步骤2右击列名“Sex”
,在弹出的快捷菜单中选择【CHECK约束】命令,在【CHECK约束】对话框中单【添加】按钮,然后输入表达式:sex=’男’or sex=’女’,如下图所示。
问题:小黄为了输入方便
,希望在输入过程中教师编号TID的起始数据库为10000001,以后每输入一个教师,其编号TID自动加1,因此他根据所学知识,在MicrosoftSQL Server Management Studio窗口中的列属性中展开【标识规范】试图修改【(是标识)】的值为“是”,但发现这一栏是灰色的,他无法进行设置,为什么?应该如何操作才能符合他的要求?解决方案:【标识规范】只对整型数据有效,所以小黄应该先将教师编号TID的数据类型设置为int类,然后再展开【标识规范】,修改【(是标识)】值为“是”,【标识种子】为“10000001”、【标识增量】为“1”
用CREATE TABLE创建表结构
(2)使用命令CREATE TABLE创建表结构创建表结构的语法形式为:CREATE TABLE Table_name(column_name1 data_type [NULL | NOT NULL ][PRIMARY KEY| UNIQUE][FOREIGN KEY [(column_name)]]REFERENCES ref_table[(ref_column)][,column_name2 data_type …]………)其中,Table_name是要创建表的名称,column_name1表示第一个字段的名称,依次类推,data_type用于指定字段的数据类型,NULL或NOT NULL用来限制字段是否允许取空值,PRIMARY KEY设置字段为主键,UNIQUE设置取值的唯一性。
例5:建立StuInfo表
[例5]在teachingDataB中建立StuInfo表(学生信息表)CREATE TABLE StuInfo(SID char(8) primary key, 将SID设置为主键Sname char(10) NOT NULL, Sname不允许取空值Sex char(2) default '男' check(sex='男' or sex='女'),BirthDay smalldatetime NULL,Dept char(20) NULL,Major char(20) NULL,Class char(10) NULL,Grade char(10) NULL,Sage int )例6:建立TchInfo表
[例6]在teachingDataB中建立TchInfo表(教师信息表)CREATE TABLE TchInfo(TID char(8) primary key, 设置主键TName char(10) NOT NULL,Sex char(2) NULL,BirthDay smalldatetime NULL,Title nchar(10) NULL,Dept char(20) NULL)例7:建立CourseInfo表
[例7]在teachingDataB中建立CourseInfo表(选课信息表)CREATE TABLE CourseInfo(CID char(8) primary key,CName char(20) NOT NULL,CCredit tinyint NULL,CProperty char(10) NULL )例8:建立ScoreInfo表
[例8]在teachingDataB中建立ScoreInfo表(学生成绩表)CREATE TABLE ScoreInfo(CID char(8) NOT NULL, 不允许取空值SID char(8) NOT NULL, 不允许取空值TID char(8) NULL,Score numeric(3, 0) NULL,Schyear char(9) NULL,Term char(1) NULL,FOREIGN KEY(CID) REFERENCES CourseInfo(CID),FOREIGN KEY(SID)REFERENCES StuInfo(SID),FOREIGN KEY(TID)REFERENCES TchInfo(TID),Constraint scoInfo_prim PRIMARY KEY(CID,SID))说明:建表的先后顺序
表结构的修改与删除
利用菜单命令实现
(1)利用菜单命令实现表结构的修改和删除步骤1:在Microsoft SQL Server ManagementStudio的“对象资源管理器”窗口中展开相应的数据库和表,右击需要修改的数据表(如StuInfo表),然后选择【修改】命令,打开表设计器窗口。步骤2:在表设计器窗口中,可以直接对已有的字段进行修改,修改列名、数据类型等。也可以右击某个字段,如“Sex”,在属性菜单中,可以选择插入列和删除列,插入列的操作与建表结构时的操作是一样的。步骤3:表中字段修改完成后,单击工具栏上的【保存】按钮,即可完成表结构的修改。
表的删除方式
表的删除可以在Microsoft SQL Server ManagementStudio的“对象资源管理器”窗口中展开相应的数据库和表,右击需要删除的数据表,然后选择【删除】命令即可删除相应的数据表。
用命令语句修改表
(2)用命令语句修改表结构ALTER TABLE Table_nameADD [column_name data_type] [NULL | NOT NULL ][PRIMARY KEY| UNIQUE][FOREIGN KEY [(column_name)]]REFERENCES ref_table[(ref_column)][ DROP [CONSTRAINT] constraint_name | columncolumn_name <完整性约束名> ][ ALTER COLUMN <列名><数据类型> ];虽然从语法格式上来看比较复杂,但实际上该命令语句一次只能修改一个参数。例9:向StuInfo表(学生信息表
[例9]向StuInfo表(学生信息表)中增加“家庭住址(Saddr)”列,其数据类型为字符型。ALTER TABLE StuInfoADD Saddr varchar(20)不论基本表中原来是否已有数据,新增加的列一律为空值。
例10:将表StuInfo中的年龄字段
[例10]将表StuInfo中的年龄字段Sage的数据类型由int改为tinyint,设置其默认值为20,并规定年龄必须在10-60之间。ALTER TABLE StuInfoALTER COLUMN Sage tinyintALTER TABLE StuInfoADD CONSTRAINT Defa_age DEFAULT 20 FOR SageALTER TABLE StuInfoADD CONSTRAINT CK_age CHECK(Sage>10 AND Sage<60)
例11:增加学生姓名必须取唯一值的约束
[例11]增加学生姓名必须取唯一值的约束条件。ALTER TABLE StuInfoADD UNIQUE(Sname)
例12:删除StuInfo表(学生信息
[例12]删除StuInfo表(学生信息表)中属性列“家庭住址(Saddr)”。ALTER TABLE StuInfoDrop column Saddr
例13:修改表tchInfo结构
[例13]修改表tchInfo结构,要求字段TID只能为数字。ALTER TABLE tchInfoADD CONSTRAINT CK_TIDCHECK(TID IN(00,000,000-99,999,999))
删除表可以使用
删除表可以使用DROP TABLE命令来删除表。最简单也是最常用的形式为:DROP TABLE table_name例如,要删除ScoreInfo表,则可以在查询编辑器中输入命令:DROP TABLE ScoreInfo;但有时直接删除基本表
例如
删除字段命令格式
ALTER TABLE table_nameDROP COLUMN column_name
例14:删除字段grade
[例14]删除表StuInfo中的字段grade,其命令语句如下:ALTER TABLE StuInfoDROP COLUMN grade数据表内容的增加与修改
插入数据
表数据的添加方式
插入数据命令
例15:将一个课程信息元组(课程号
[例15]将一个课程信息元组(课程号:00000001;课程名:高等数学;学分:3;课程类别:基础课)插入到CourseInfo表中。可以使用下面的语句来实现:INSERT INTO CourseInfo (CID,CName,CCredit,CProperty)VALUES ('00000001','高等数学',3,'基础课') 或:INSERT INTO CourseInfo (CID,CName,CProperty,CCredit)VALUES ('00000001','高等数学','基础课',3)或:INSERT INTO CourseInfoVALUES ('00000001','高等数学',3,'基础课')如果要想向表中插入成批数据
如果要想向表中插入成批数据,用INSERT-VALUES来解决显然是极为不方便的。在这种情况下用INSERT-SELECT语句就非常有效。它可以将一个或一组表中的数据插入到另外一个表中。插入子查询结果的语句格式:INSERT INTO [(column_list)] SELECT sub-sentence 说明:(1) INTO子句与插入元组时的要求类似;(2)SELECT子句目标列必须与INTO子句匹配,即值的个数和值的类型均要求一致。 例16:对每一个系
[例16]对每一个系,求学生的平均年龄,并把结果存入数据库。第一步:在teachingDataB数据库中建一个新表,其中一列用于保存学年信息,另一列用于保存相应学年的学生平均成绩。CREATE TABLE Schyear_Score(Schyear CHAR(9),Avg_Score SMALLINT);第二步:对ScoreInfo表按Schyear分组,把学年和学生的平均成绩成绩插入到新表Schyear_Score中。INSERT INTO Schyear_Score(Schyear,Avg_score)SELECT Schyear,AVG(Score) FROM ScoreInfoGROUP BY Schyear修改数据(UPDATE)格式
2、修改数据格式:UPDATE <table_name>SET <column1_name>=<new_value1>[,<column2_name>=<new_value2>,…]…[WHERE <conditions>];功能:修改指定table_name表中满足WHERE子句条件的记录。说明:SET子句用于指定要修改的列或变量名称的列表,<column_name>用于指定要更改的列的名称。<new_value>是修改后指定列的新值,它可以是一个常量,也可以是一个表达式或其他表中的数据。
例17:将高等数学的学分改为5分
[例17]将高等数学的学分改为5分。UPDATE CourseInfoSET CCredit =5WHERE CName ='高等数学';
例18:将所有课程的学分增加1分
[例18]将所有课程的学分增加1分。UPDATE CourseInfoSET CCredit = CCredit+1
把所有男生的成绩加5分
把所有男生的成绩加5分。UPDATE ScoreInfoSET Score = Score+5WHERE '男'=(SELECT Sex FROM StuInfoWHERE StuInfo.SID =ScoreInfo.SID);删除数据格式
3、删除数据格式:DELETE FROM [WHERE ];功能:删除指定表中满足WHERE子句条件的所有元组。如果省略WHERE子句,表示删除表中的全部元组,但表的结构仍然存在。即DELETE只能删除表中的数据。 例19:删除表TchInfo中工号
[例19]删除表TchInfo中工号为10040002的教师的记录。DELETE FROM TchInfoWHERE TID='10040002';例20:删除表ScoreInfo
[例20]删除表ScoreInfo中所有的学生成绩的记录。DELETE FROM ScoreInfo;删除表
删除表ScoreInfo中所有男生的成绩记录。DELETE FROM ScoreInfoWHERE '男'=(SELECT Sex FROM StuInfoWHERE StuInfo.SID =ScoreInfo.SID);小结:数据表结构的创建
小结 数据表结构的创建 CREATE TABLE 数据表结构的修改 ALTER TABLE 记录的添加 INSERT INTO-VALUES INSERT INTO-SELECT 记录的修改 UPDATA 记录的删除 DELETE 建立索引的常用命令格式为: CREATE [UNIQUE] [CLUSTERED] INDEX上机实验
下载地址:{{downurl}}
{{{a}}}
{{#b}}{{{b}}}
{{/b}} {{/title}} {{#nolog}}登陆注册
{{/nolog}} {{#djsx}}点我刷新
{{/djsx}} {{#gocz}} {{/gocz}} {{#ffqr}} {{/ffqr}}