实验7创建及管理0acIe数据表 实验目的 1.熟悉数据表与表空间的关系; 2.熟悉数据表的结构及相关属性 3.熟悉 Oracle中sQL的数据定义及数据操纵的使用方法 4.熟练掌握创建与管理数据表的方法。 实验环境 1.硬件 每位学生配备计算机一台,满足相关软件的安装 2.软件 Windows操作系统,安装 Oracle database11g企业版; 3.网络 需要局域网支持; 4.工具 无 三、实验理论与预备知识 1. Oracle中创建及管理数据表的方法 2.SQL语法 3.数据表完整性约束的使用。 四、实验任务 1.创建数据表 2.为学生成绩管理系统创建及管理数据表; 3.管理表数据 五、实验内容及步骤 1.创建数据表 (1)通过SQL*Pus为图书管理系统创建数据表 以数据库XSC及表空间 book oracle为基础,创建相应的数据表; 1)创建图书类别表(type)
实验 7 创建及管理 Oracle 数据表 一、实验目的 1. 熟悉数据表与表空间的关系; 2. 熟悉数据表的结构及相关属性; 3. 熟悉 Oracle 中 SQL 的数据定义及数据操纵的使用方法; 4. 熟练掌握创建与管理数据表的方法。 二、实验环境 1. 硬件 每位学生配备计算机一台,满足相关软件的安装; 2. 软件 Windows 操作系统,安装 Oracle Database 11g 企业版; 3. 网络 需要局域网支持; 4. 工具 无 三、实验理论与预备知识 1. Oracle 中创建及管理数据表的方法; 2. SQL 语法; 3. 数据表完整性约束的使用。 四、实验任务 1. 创建数据表; 2. 为学生成绩管理系统创建及管理数据表; 3. 管理表数据。 五、实验内容及步骤 1. 创建数据表 (1) 通过 SQL*Plus 为图书管理系统创建数据表 以数据库 XSCJ 及表空间 book_oracle 为基础,创建相应的数据表; 1) 创建图书类别表(type)
SQL语句: CREATE TABLE type( typeid number(10 )PRIMARy KEY typename varchar 2 (20)UNIQUE NOT NULL) TABlESPace book oracle 2)创建图书信息表(book) SQL语句: CREATE TABLE book( bookid number(10) PRIMARY KEY booknumber CHar(8 UNIQUE NOT NULL bookname varchar 2 (30)NOT NULL, bookpress varchar 2 (40) NOT NULL, bookprice number(8, 2)NOT NULL, typeid number(10)DEFAULT 1 NOT NULL, booktime DAtE NOT NUlL CoNSTRAINT book type FoReiGN KEY(typeid) REFERENCES type(typeid TableSPace book oracl 3)创建学生信息表( student) SQL语句: CREATE TABLE student( studentid number(10)PRIMARY KEY studentnumber char(7 )UNIQUE NOT NULL, tudentname varchar 2 (12) NOT NULL studentsex char(2) NOT NULL check(studentsex in('s")) TableSPace book oracle 4)创建管理员等级表( grade) SQL语句: CREATE TABLE grade(
SQL 语句: CREATE TABLE type( typeid number(10) PRIMARY KEY , typename varchar2(20) UNIQUE NOT NULL) TABLESPACE book_oracle; 2) 创建图书信息表(book) SQL 语句: CREATE TABLE book( bookid number(10) PRIMARY KEY , booknumber CHAR(8) UNIQUE NOT NULL, bookname varchar2(30) NOT NULL, bookpress varchar2(40) NOT NULL, bookprice number(8,2) NOT NULL, typeid number(10) DEFAULT 1 NOT NULL, booktime DATE NOT NULL, CONSTRAINT book_type FOREIGN KEY(typeid) REFERENCES type(typeid) ) TABLESPACE book_oracle; 3) 创建学生信息表(student) SQL 语句: CREATE TABLE student( studentid number(10) PRIMARY KEY , studentnumber char(7) UNIQUE NOT NULL, studentname varchar2(12) NOT NULL, studentsex char(2) NOT NULL check (studentsex in ('男','女')) ) TABLESPACE book_oracle; 4) 创建管理员等级表(grade) SQL 语句: CREATE TABLE grade(
graded number(10)PRIMARY KEY gradename varchar 2 (20)UNIQUE NOT NULL) TABLESPACE book oracle: 5)创建管理员表( manager) SQL语句 CREATE TABLE manager( managerid number(10) PRIMARY KEY ealname varchar 2(10)NOT NULI sex char(2)NOT NULL username varchar 2 (16 NOT NULL password varchar 2 (16) NOT NULL, registertime DATE NOT NULL graded number(10)DEFAULT 1 NOT NULL, CONSTRAINT manager_ grade FOREIGN KEY(graded)REFERENCES grade(gradeid TAbleSPace book oracl 6)创建图书证表(card) SQL语句 CREATE TABLE card( cardid number(10 )PRIMARY KEY cardnumber char(9) UNIQUE NOT NULL studentid number(10) UNIQUE NOT NULL, registertime DAtE NoT nUll CONSTRAINT card student FOREIGN KEY(studentid) REFERENCES student(studentid) TableSPace book oracle 7)创建借书信息表(|end) SQL语句 CREATE TABLE lend( lendid number(10)PRIMARY KEY
gradeid number(10) PRIMARY KEY , gradename varchar2(20) UNIQUE NOT NULL) TABLESPACE book_oracle; 5) 创建管理员表(manager) SQL 语句: CREATE TABLE manager ( managerid number(10) PRIMARY KEY , realname varchar2(10) NOT NULL, sex char(2) NOT NULL, username varchar2(16) NOT NULL, password varchar2(16) NOT NULL, registertime DATE NOT NULL, gradeid number(10) DEFAULT 1 NOT NULL, CONSTRAINT manager_grade FOREIGN KEY(gradeid) REFERENCES grade(gradeid) ) TABLESPACE book_oracle; 6) 创建图书证表(card) SQL 语句: CREATE TABLE card( cardid number(10) PRIMARY KEY , cardnumber char(9) UNIQUE NOT NULL, studentid number(10) UNIQUE NOT NULL, registertime DATE NOT NULL, CONSTRAINT card_student FOREIGN KEY(studentid) REFERENCES student(studentid) ) TABLESPACE book_oracle; 7) 创建借书信息表(lend) SQL 语句: CREATE TABLE lend( lendid number(10) PRIMARY KEY
cardid number(10 )NOT NULL bookid number(10)NOT NULL leadtime DAtE NoT null CONSTRAINT lend card FOREIGN KEY(cardid )rEFerENces card( cardid CONSTRAINT lend book FoREIGN KEY(bookid) REFERENCeS book(bookid), TABlESPace book oracl 8)删除数据表 SQL语句 DROP TABLE type DROP TABLE book (2)通过 SQL Developer为图书管理系统创建数据表 具体步骤 1)启动相应的oace服务; 2)启动 SQL Developer主界面,选择【开始】→【所有程序】→ 【 Oracle-OraDb11 g home1】→【应用程序开发】→【 SQL Developer】。并选 择Java路径;如“D: app product\11.1.0db1 jdk bin java.exe 3)连接ⅹSCJ数据库。选择“连接”→“新建连接”,即可打开连接界面,输 入 username、 password、 hostname、port、SID等信息,单击【 Connect】按 钮即可完成。如输入:stu, system,123456, localhost,1521,XSCJ )创建相应的数据表 (3)通过OEM为图书管理系统创建数据表 以数据库XSC及表空间 book oracle为基础,创建相应的数据表; 具体步骤 1)启动相应的 Oracle服务; 2)启动并登录OEM主界面;
cardid number(10) NOT NULL , bookid number(10) NOT NULL , lendtime DATE NOT NULL, CONSTRAINT lend_card FOREIGN KEY(cardid) REFERENCES card(cardid), CONSTRAINT lend_book FOREIGN KEY(bookid) REFERENCES book(bookid), ) TABLESPACE book_oracle; 8) 删除数据表 SQL 语句: DROP TABLE type; DROP TABLE book; (2) 通过 SQL Developer 为图书管理系统创建数据表 具体步骤: 1) 启动相应的 Oracle 服务; 2) 启 动 SQL Developer 主界面 , 选 择 【 开始】→【所有 程 序】→ 【Oracle-OraDb11g_home1】→【应用程序开发】→【SQL Developer】。并选 择 Java 路径;如“D:\app \product\11.1.0\db_1\jdk\bin\java.exe”; 3) 连接 XSCJ 数据库。选择“连接” →“新建连接”,即可打开连接界面,输 入 username、password、hostname、port、SID 等信息,单击【Connect】按 钮即可完成。如输入:stu,system,123456,localhost,1521,XSCJ; 4) 创建相应的数据表; (3) 通过 OEM 为图书管理系统创建数据表 以数据库 XSCJ 及表空间 book_oracle 为基础,创建相应的数据表; 具体步骤: 1) 启动相应的 Oracle 服务; 2) 启动并登录 OEM 主界面;
3)选择【方案】→【表】,即可打开数据表页面,单击【创建】按钮,即可打 开数据表创建首页面,如图1所示 数氨库 H象里置 入方名称像苦粒,以过特果期内显字 方 卡执行常 图1创建数据表 选择“标准(按堆组织)”,单击【继续】按钮,即可打开数据表创建页面,输 入表名称“book”,选择表空间“ book oracle”,输入字段名称、数据类型、大小或 默认值等属性,如图2所示,单击【确定】按钮即可完成数据表book的创建, RAC甲h料相节 aR S i ss w 方买5sTM 有空D 计着大小 d里所以的L性)(比 害性删后了 为认 图2创建数据表book 2.为学生成绩管理系统创建及管理数据表,请在实验指导书中写出相应的SQL语 句 (1)以数据库XSC及表空间 stu oracle为基础,创建相应的数据表,表结构如表 2和3所示 表1学生信息表(
3) 选择【方案】→【表】,即可打开数据表页面,单击【创建】按钮,即可打 开数据表创建首页面,如图 1 所示; 图 1 创建数据表 选择“标准(按堆组织)”,单击【继续】按钮,即可打开数据表创建页面,输 入表名称“book”,选择表空间“book_oracle”,输入字段名称、数据类型、大小或 默认值等属性,如图 2 所示,单击【确定】按钮即可完成数据表 book 的创建。 图 2 创建数据表 book 2. 为学生成绩管理系统创建及管理数据表,请在实验指导书中写出相应的 SQL 语 句。 (1) 以数据库 XSCJ 及表空间 stu_oracle 为基础,创建相应的数据表,表结构如表 1、2 和 3 所示; 表 1 学生信息表(student)
字段名称 数据类型 长度 说明 备注 字符类型 学生学号 主关键字 字符类型 学生姓名 非空 Ssex 字符类型2 学生性别 可为空 Birth 日期类型 学生出生日期可为空 Sdept 变长字符类型|30 学生所在院系可为空 表2课程信息表( course) 字段名称 数据类型 长度 说明 备注 字符类型 11 果程编号主关键字 字符类型 30 课程名称|非空 字符类型 6 课程性质可为空 字符类型 4 考核方式可为空 Ccredit 数值型 学分 [1-16],可为空 字符类型 开课院系可为空 表3选课信息表(SC) 字段名称 数据类型 长度 说明 备注 Sno 字符类型 10 学生学号主关键字,外键 字符类型 11 课程编号主关键字,外键 数值型 成绩 整数,[0-100],可为空 (2)在数据表 student中,增加字段“入学日期”、“班级名称”,数据类型等内容 自定 (3)在数据表 student中,修改字段“姓名”的长度由原来的Char(8)改为 VARChar2(8) (4)在数据表 student中,修改字段 sname的名称为修改为 stuname; (5)在数据表 course中,增加字段“理论学时”、“实验学时”“适用专业”; (6)在数据表 course中,修改字段“适用专业”名称为“ Czhuanye”,字段为 Varchar (50),可为空; (7)在数据表sc中,修改字段“ grade”数据类型为 number(42); (8)在数据表sc中,增加字段“授课地点”,数据类型等内容自定 (9)删除数据表 student字段“班级名称” (10)删除数据表 course字段“适用专业”、“开课院系”;
字段名称 数据类型 长度 说明 备注 Sno 字符类型 10 学生学号 主关键字 Sname 字符类型 8 学生姓名 非空 Ssex 字符类型 2 学生性别 可为空 Sbirth 日期类型 学生出生日期 可为空 Sdept 变长字符类型 30 学生所在院系 可为空 表 2 课程信息表(course) 字段名称 数据类型 长度 说明 备注 Cno 字符类型 11 课程编号 主关键字 Cname 字符类型 30 课程名称 非空 Cclass 字符类型 6 课程性质 可为空 Cexam 字符类型 4 考核方式 可为空 Ccredit 数值型 学分 [1-16],可为空 Cdept 字符类型 30 开课院系 可为空 表 3 选课信息表(sc) 字段名称 数据类型 长度 说明 备注 Sno 字符类型 10 学生学号 主关键字,外键 Cno 字符类型 11 课程编号 主关键字,外键 Grade 数值型 成绩 整数,[0-100],可为空 (2) 在数据表 student 中,增加字段“入学日期”、“班级名称”,数据类型等内容 自定; (3) 在数据表 student 中,修改字段 “姓名”的长度由原来的 Char(8)改为 VARChar2(8); (4) 在数据表 student 中,修改字段 sname 的名称为修改为 stuname; (5) 在数据表 course 中,增加字段 “理论学时”、“实验学时”、“适用专业”; (6) 在数据表 course 中,修改字段“适用专业”名称为“Czhuanye”,字段为 Varchar (50),可为空; (7) 在数据表 sc 中,修改字段“grade”数据类型为 number(4,2); (8) 在数据表 sc 中,增加字段“授课地点”,数据类型等内容自定; (9) 删除数据表 student 字段“班级名称”; (10) 删除数据表 course 字段“适用专业”、“开课院系”;
(11)分别显示数据表 student、 course、sc的结构 (12)修改数据表c的名字为 stucour (13)在数据表 student中,设置字段ssex只能输入“男”或者“女”; (14)在数据表 student中,设置字段 sdept只能输入“信息学院”、“软件学院”、 药学院”及“外语学院”; (15)在数据表sc中,设置字段 grade中输入数据范围为0-100之间; (16)在数据表 student中,删除 sname字段的 not nu约束 六、实验分析 1.比较 ARCHAR与CHAR两种数据类型的区别,并举例说明分别在什么情况下使 用这两种数据类型? 2.如果需录入表的数据比较多,有哪些方法可以快速导入到现有的数据表中,请 举例说明? 3.如何将其他数据格式(如xs、mdb等)导入至 Oracle数据表? 4.如何将 Oracle数据表导出为其他数据格式,如xls、mdb等? 七、课外自主实验 1.移动数据表 在创建数据表时可以为表指定存储空间,如果不指定, Oracle会将该表存储到 默认表空间中,现实情况中,我们需要将数据表从一个表空间移动到另一个表空间 案例1:移动 person表到表空间 stu oracle中 具体步骤: 1)查看数据表 person的当前表空间 SQL iE SELECT table name, tablespace name FROM user tables WHERE table name= perSon 2)移动数据表到表空间 stu oracle中 SQL iF A: ALTER TABLE person MOVE TABLESPACE stu oracle 3)再次查看 person的当前表空间 SQL in F]: SELECT table name, tablespace name FRoM user tables WHERE table name= PERSON’;
(11) 分别显示数据表 student、course、sc 的结构; (12) 修改数据表 sc 的名字为 stucour; (13) 在数据表 student 中,设置字段 ssex 只能输入“男”或者“女”; (14) 在数据表 student 中,设置字段 sdept 只能输入“信息学院”、“软件学院”、 “药学院”及“外语学院”; (15) 在数据表 sc 中,设置字段 grade 中输入数据范围为 0-100 之间; (16) 在数据表 student 中,删除 sname 字段的 not null 约束; 六、实验分析 1. 比较 VARCHAR 与 CHAR 两种数据类型的区别,并举例说明分别在什么情况下使 用这两种数据类型? 2. 如果需录入表的数据比较多,有哪些方法可以快速导入到现有的数据表中,请 举例说明? 3. 如何将其他数据格式(如 xls、mdb 等)导入至 Oracle 数据表? 4. 如何将 Oracle 数据表导出为其他数据格式,如 xls、mdb 等? 七、课外自主实验 1. 移动数据表 在创建数据表时可以为表指定存储空间,如果不指定,Oracle 会将该表存储到 默认表空间中,现实情况中,我们需要将数据表从一个表空间移动到另一个表空间 中。 案例 1:移动 person 表到表空间 stu_oracle 中 具体步骤: 1) 查看数据表 person 的当前表空间 SQL 语 句 : SELECT table_name,tablespace_name FROM user_tables WHERE table_name='PERSON'; 2) 移动数据表到表空间 stu_oracle 中 SQL 语句:ALTER TABLE person MOVE TABLESPACE stu_oracle; 3) 再次查看 person 的当前表空间 SQL 语 句 : SELECT table_name,tablespace_name FROM user_tables WHERE table_name='PERSON';
八、实验扩展资源 1.图书 (1)王彬,周士贵 Oracle11g基础与提高[M]电子工业出版社,2008 (2) Oracle database11g数据库管理艺术[M]人民邮电出版社2010 期刊论文 (1)朱沈丹,薛吟兴胡启平.基于 ORDBMS的 Spatia数据管理的实现[.计算机与 数字工程2007(03) (2)李俊超利用SQL* Loader速导入 Oracle10g数据表U硅谷2009(02) 3.在线学习平台 (1)http://xg.hactcm.edu.cn 4.其他资源 (1)http://www.oracle.com/cn (2)https:/academy.oracle.com
八、实验扩展资源 1. 图书 (1)王彬,周士贵.Oracle 11g 基础与提高[M].电子工业出版社,2008. (2)Oracle Database 11g 数据库管理艺术[M].人民邮电出版社,2010. 2. 期刊论文 (1)朱沈丹,薛吟兴,胡启平. 基于 ORDBMS 的 Spatial 数据管理的实现[J]. 计算机与 数字工程.2007(03). (2)李俊超.利用 SQL*Loader 速导入 Oracle 10g 数据表[J]. 硅谷.2009(02). 3. 在线学习平台 (1)http://xg.hactcm.edu.cn 4. 其他资源 (1)http://www.oracle.com/cn (2)https://academy.oracle.com