收藏 分销(赏)

数据库原理与应用(数据定义).doc

上传人:精*** 文档编号:2226453 上传时间:2024-05-23 格式:DOC 页数:13 大小:1.95MB 下载积分:8 金币
下载 相关 举报
数据库原理与应用(数据定义).doc_第1页
第1页 / 共13页
数据库原理与应用(数据定义).doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
数据库原理与应用(数据定义) ———————————————————————————————— 作者: ———————————————————————————————— 日期: 13 个人收集整理 勿做商业用途 《数据库原理及应用》电子实验报告 题 目:SQL语言(1)数据定义 日期 2012.10。9 姓 名 党存寿 学号 20102111225 Q Q 1045874070 实验环境: Windows XP,Sql Server2005 实验目的: 1. 熟悉Sql Server2005环境 2. 掌握基本表的定义、删除和修改 3. 掌握索引的建立和删除 实验内容: 1. Sql Server2005的启动 Sql Server2005的启动方法: 单击“开始”按钮→“所用程序” →“Microsoft SOL Server 2005” →“SQL Server Management Studio”。之后将会出现如图1所示的“连接到服务器”的窗口。 图1 “连接到服务器”窗口 注意: ①服务器类型选“数据库引擎” ②身份验证选“Windows 身份验证” ③服务器名称的选择:点击服务器名称的下拉菜单,然后点击“浏览更多”,之后将会出现如图2所示的“查找服务器”窗口。然后双击数据库引擎,在数据库引擎下就能找到服务器的名称,然后选择该名称并单击“确定”按钮退回到“连接到服务器”窗口.然后单击“连接"按钮进入SQL环境. 图2 “查找服务器”窗口 2。 定义基本表的语句格式 1)create语句 SQL 语言使用CREATE TABLE语句定义基本表,其基本格式如下: CREATE TABLE 〈表名> (<列名〉 <数据类型>[ 〈列级完整性约束条件> ] [,〈列名〉 <数据类型〉[ 〈列级完整性约束条件〉] ] … [,<表级完整性约束条件〉 ] ); 〈表名>: 所要定义的基本表的名字 <列名〉: 组成该表的各个属性(列) <列级完整性约束条件>: 涉及相应属性列的完整性约束条件 <表级完整性约束条件〉: 涉及一个或多个属性列的完整性约束条件 2)drop语句 当某个基本表不再需要时,可以使用DROP TABLE语句删除它。其一般格式为: DROP TABLE 〈表名〉 [RESTRICT | CASCADE]; 注意: 基本表删除后:①数据、表上的索引都删除 ②表上的视图往往仍然保留,但无法引用 删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述。 3)alter语句 SQL语言用ALTER TABLE语句修改基本表,其一般格式为: ALTER TABLE <表名〉 [ ADD <新列名〉 <数据类型〉 [ 完整性约束 ] ] [ DROP 〈完整性约束名〉 ] [ MODIFY 〈列名〉 〈数据类型〉 ]; 注: <表名〉:要修改的基本表 ADD子句:增加新列和新的完整性约束条件 DROP子句:删除指定的完整性约束条件 MODIFY子句:用于修改列名和数据类型 3.基本表的定义、删除和修改 1)基本表的定义 【例1】 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一(如图3-1所示)。 键入如下命令: CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 附:常用完整性约束 主码约束:PRIMARY KEY 唯一性约束:UNIQUE 非空值约束:NOT NULL 参照完整性约束 图3—1 学生表 【例2】建立一个“课程”表Course,它由课程号Cno、课程名Cname,先行课Cpno,学分Ccredit组成,其中(Cno)为主码(如图3-2所示)。 键入如下命令: CREATE TABLE Course ( Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cno) ); 因为先行课Cpno是参照课程号Cno的,所以定义约束: FOREIGN KEY (Cpno) REFERENCES Course(Cno) 【例3】建立一个“学生选课"表SC,它由学号Sno、课程号Cno,修课成绩Grade组成,其中(Sno, Cno)为主码(如图3—3所示)。 键入如下命令: CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY(Sno) REFERENCES Student(Sno), FOREIGN KEY(Cno) REFERENCES Course(Cno) ); 学生选课SC表中的学号Sno和课程号Cno分别参照学生表Student和课程表Course,所以定义约束: l FOREIGN KEY(Sno) REFERENCES Student(Sno), l FOREIGN KEY(Cno) REFERENCES Course(Cno) 图3-2 课程表course 图3—3 学生选课表 2)基本表的删除 【例4】 删除Student表 DROP TABLE Student ; 【例5】删除Course表 DROP TABLE Course; 【例6】删除学生选课SC表 DROP TABLE SC; 3)基本表的修改 【例7】 向Student表增加“入学时间”列,其数据类型为日期时间型。 ALTER TABLE Student ADD Scome DATETIME; 注:不论基本表中原来是否已有数据,新增加的列一律为空值(如图4所示)。  图4 向Student表增加“入学时间(Scome)”列 【例8】将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整数,运行结果如图5所示。 ALTER TABLE Course ALTER COLUMN Sage INT; 【例9】 增加课程名称必须取唯一值的约束条件, 运行结果如图6所示. ALTER TABLE Course ADD UNIQUE(Cname); 【例10】直接删除属性列 ALTER TABLE Student Drop Scome; 图5 将年龄的数据类型由字符型改为整数 图 6 增加课程名称必须取唯一值的约束条件 4 定义索引的语句 1) create语句 语句格式: CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序〉][,〈列名>[<次序〉] ]…); 用〈表名〉指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用〈次序>指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引 2) Drop语句 语句格式: DROP INDEX <索引名>; 删除索引时,系统会从数据字典中删去有关该索引的描述。 5 索引的建立和删除 1)索引的建立 唯一索引和聚簇索引的区别 l 唯一值索引: 对于已含重复值的属性列不能建UNIQUE索引 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束 l 聚簇索引: 建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致 【例11】 为学生—课程数据库中的Student,Course,SC三个表(如图7所示)建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 Student 学 号 Sno 姓 名 Sname 性 别 Ssex 年 龄 Sage 所 在 系 Sdept 95001 李勇 男 20 CS 95002 刘晨 女 19 IS 95003 王敏 女 18 MA 95004 张立 男 19 IS (a) SC 学 号 Sno 课 程 号 Cno 成绩 Grade 95001 1 92 95001 2 85 95001 3 88 95002 95002 2 3 90 80 (b) Course 课 程 号 Cno 课 程 名 Cname 先 行 课 Cpno 学 分 Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 5 6 7 操作系统 数据结构 数据处理 PASCAL语言 6 7 6 3 4 2 4 (c) 图7 学生—课程数据库 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 命令及运行结果如图8所示: 图8 建立Student、Course、SC表的索引 l 【例12】在Student表的Sname(姓名)列上建立一个聚簇索引。 CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的Sname(姓名)列上建立一个聚簇索引,而 且Student表中的记录将按照Sname值的升序存放 在一个基本表上最多只能建立一个聚簇索引 聚簇索引的用途:对于某些类型的查询,可以提高查询效率 聚簇索引的适用范围 很少对基表进行增删操作 很少对其中的变长列进行修改操作 2)索引的删除 【例13】 删除Student表的Stusname索引。 DROP INDEX Stusname; 【例14】删除Student、Course、SC表的Stusno、Coucno、SCno索引. DROP INDEX Stusno ON Student; DROP INDEX Coucno ON Course; DROP INDEX SCno ON SC; 完成情况: 1 完成了对学生表Student。课程表Course、学生选课SC表的创建、删除、修改。 2 完成了对学生表Student。课程表Course、学生选课SC表索引的创建和删除。 出现的问题:(小四宋体) 1 在完成表的索引创建任务时,遇到了消息159,级别15,状态1,第1 行 必须为DROP INDEX 语句指定表和索引名称. 消息159,级别15,状态1,第2 行 必须为DROP INDEX 语句指定表和索引名称。 消息159,级别15,状态1,第3 行 必须为DROP INDEX 语句指定表和索引名称。问题, 解决思路是给每一条删除语句加上了表名。及将语句 DROP INDEX Stusno ; DROP INDEX Coucno ; DROP INDEX SCno ; 改为: DROP INDEX Stusno ON Student; DROP INDEX Coucno ON Course; DROP INDEX SCno ON SC;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服