1、 走进 Oracle . 2 1. Oracle 简介 . 4 2. Oracle 安装 . 5 3. Oracle 客户端工具 . 10 4. Oracle 服务 . 17 5. Oracle 启动和关闭 . 18 6. Oracle 用户和权限 . 19 7. 本章总结 . 22 8. 本章练习 . 23 SQL 数据 操作和查询 26 1. SQL 简介 . 27 2. Oracle 数据类型 . 27 3. 创建表和约束 . 28 4. 数据操纵语言( DML) . 31 5. 操作符 . 36 6. 高级查询 . 37 7. 本章总结 . 45 8. 本章练习 . 46 子查询和常用
2、函数 49 1. 子 查询 . 50 2. Oracle 中的伪列 . 52 3. Oracle 函数 . 55 4. 本章总结 . 64 5. 本章练习 . 65 表空间、数据库对象 68 1. Oracle 数据库对象 . 69 2. 同义词 . 69 3. 序列 . 72 4. 视图 . 74 5. 索引 . 76 6. 表空间 . 78 7. 本章总结 . 82 8. 本章练习 . 83 PL/SQL 程序设计 86 1. PL/SQL 简介 87 2. PL/SQL 块 88 3. PL/SQL 数据类型 92 4. PL/SQL 条件控制和循环控制 94 5. PL/SQL 中动态
3、执行 SQL 语句 104 6. PL/SQL 的异常处理 106 7. 本章总结 . 112 8. 本章练习 . 113 Oracle 应用于 .Net 平台 115 1. 回顾 ADO.NET . 116 2. 使用 ADO.NET 连接 Oracle 117 3. 抽象工厂中加入 Oracle . 121 4. 本章总结 . 126 5. 本章练习 . 127 数据库导入导出 129 1. Oracle 导入导出 . 130 2. EXP 导出数据 130 3. IMP 导入 . 133 4. 常见问题 . 134 第 1 章 走进 Oracle 主要内容 Oracle 安装 Oracl
4、e 创建用户和角色 客户端链接 Oracle 服务器 1. Oracle 简介 在第一学期我们已经接触过关系型数据库 SQL Server,对数据库、表、记录、表的增删改查操作等这些基本的概念已经了解。 Oracle 是基于对象的关系型数据库, Oracle 也是用表的形式对数据存储和管理,并 且在 Oracle 的操作中添加了一些面向对象的思想。 Oracle 数据库是 Oracle(中文名称叫甲骨文)公司的核心产品, Oracle 数据库是一个适合于大中型企业的数据库管理系统。在所有的数据库管理系统中(比如:微软的 SQL Server,IBM 的 DB2 等), Oracle 的主要用户
5、涉及面非常广,包括:银行、电信、移动通信、航空、保险、金融、电子商务和跨国公司等。 Oracle 产品是免费的,可以在 Oracle 官方网站上下载到安装包,另一方面 Oracle 服务是收费的。 Oracle 公司成立以来,从最初的数据库版 本到 Oracle7、 Oracle8i、 Oracle9i, Oracle10g到 Oracle11g,虽然每一个版本之间的操作都存在一定的差别,但是 Oracle 对数据的操作基本上都遵循 SQL 标准。因此对 Oracle 开发来说版本之间的差别不大。 很多人没有学习 Oracle 就开始发怵,因为人们在误解 Oracle,认为 Oracle 太难
6、学了,认为 Oracle 不是一般人用的数据库,其实任何数据库对应用程序研发人员来说,都是大同小异,因为目前多数数据库都支持标准的 SQL。在 Oracle 这本书中,我们能学习到: Oracle 的安装 Oracle 数据管理 常用子查询及常用函数 PL/SQL 编程 Oracle 基本管理 由于在第一学期已经接触了 SQL Server, Oracle 数据库的概念不是很难,主要是实践,因此在本书的学习中,认真的完成上机练习是学习好本书的关键。 接下来我们先从 Oracle 安装开始,接触一些 Oracle 中基本的概念。 2. Oracle 安装 Oracle 数据库产品是免费的,我们可
7、以从 Oracle 的官方网站 (http:/)下载到程序安装包, Oracle 在 Windows 下的安装非常方 便,安装开始后,一直点击安装程序的“下一步”即可。 1. 下载 Oracle10g 后,解压到一个文件夹下,单击“ setup.exe”文件即可启动安装界面。如下图: 图 1 Oracle 安装启动界面 Oracle 主目录位置就是 Oracle 准备安装的位置,称为“ Oracle_Home”,一般 Oracle 根据当前计算机的硬盘大小默认给出一个合适的位置。 Oracle 安装时可以只安装 Oracle 软件,然后单独创建数据库,也可以在上图中选中“创建启动数据库”复选框
8、,在安装 Oracle 产品时,同时创建一个数据库,对初学 者来说,推荐这样安装。填写全局数据库名,以及管理员的密码。全局数据库名是数据库在服务器网络中的唯一标识。 2. 点击“下一步”,就会出现如下图内容,开始对 Oracle 服务器进行环境检查,主要查看服务器是否符合 Oracle 安装的条件,比如操作系统是否支持、系统内存是否符合 Oracle 安装的最低要求等。 图 2 Oracle 安装前环境检查 3. Oracle 检查通过后,单击“下一步”,就会列出所有安装 Oracle 过程中的默认选项。 图 3 Oracle 默认安装设置 4. 单击“安装”按钮,进入安装界面,这一过程 经历
9、时间比较长,根据计算机的性能不同有很大差别。 图 4 Oracle 安装 5. 上图完成后,进入了各种 Oracle 工具的安装阶段,包括网络配置向导, iSQL*plus等(后面课程中讲解)。如下图所示: 图 5 Oracle 各种工具的安装 6. 接下来自动启动 DBCA( Database Configuration Assistant)进入创建默认数据库阶段。 图 6 DBCA 下安装数据库 Oracle 中的数据库主要是指存放数据的文件,这些文件在 Oracle 安装完成后,在计算机硬盘上都能找到,包 括数据文件、控制文件和数据库日志文件。 数据库创建后会有一系列为该数据库提供服务的
10、内存空间和后台进程,称为该数据库的实例。每一个数据库至少会有一个实例为其服务。实例中的内存结构称为系统全局区( SGA),系统会根据当前计算机系统的性能给 SGA 分配非常可观的内存空间。 Oracle创建数据库不能像 SQL Server那样用一个简单的 CREATE DATABASE命令就能完成,在创建数据库的过程中还需要配置各种参数。虽然有 DBCA 工具向导,但是仍然需要进行比较麻烦的配置。 虽然一个 Oracle 数据库 服 务器中 可以安装多个数据库,但是 一个数据库需要占用非常大的内存空间,因此 一般 一个服务器 只安装一个数据库。每一个数据库 可以 有 很多用户, 不同的用户拥
11、有自己的数据库对象(比如:数据库表), 一个 用户 如果访问其他用户的 数据库对象 ,必须由对方用户授予一定的权限 。不同的用户 创建的表,只能被当前用户访问。 因此在 Oracle 开发中,不同的 应用程序只需使用 不同的用户访问即可 。 7. 数据库创建完毕后,需要设置数据库的默认用户。 Oracle 中为管理员预置了两个用户分别是 SYS 和 SYSTEM。同时 Oracle 为程序测试提供了一个普通用 户 scott,口令管理中,可以对数据库用户设置密码,设置是否锁定。 Oracle 客户端使用用户名和密码登录 Oracle 系统后才能对数据库操作。 图 7 DBCA 下的口令管理 图
12、 8 为 system,sys,scott 用户设置密码 默认的用户中, SYS 和 SYSTEM 用户是没有锁定的,安装成功后可以直接使用, SCOTT用户默认为锁定状态,因此不能直接使用,需要把 SCOTT 用户设定为非锁定状态才能正常使用。 这一步完成后, Oracle 系统安装成功。 Oracle 数据库中,默认情况下,所有系 统的数据, SQL 关键字等都是大写的,在操作过程中, Oracle 会自动把这些内容转换为大写,因此用户操作时不需考虑大小写问题,一般情况下,为了良好的程序风格,程序中建议关键字用大写,非关键字可以使用小写。 3. Oracle 客户端工具 Oracle 服务
13、器安装成功后,就可以通过客户端工具连接 Oracle 服务器了,可以到 Oracle官方下载 Oracle 专用的客户端软件,大多客户端工具都是基于 Oracle 客户端软件的。接下来介绍几种常用的 Oracle 客户端工具。 SQL*Plus 工具 该工具是 Oracle 系统默认 安装下,自带的一个客户端工具。在 Windows 命令行中输入“ sqlplusw”命令,就能够启动该工具了。 图 9 SQL*Plus 工具 输入用户名和密码后,如果 SQL*Plus 与数据库服务器在同一台计算机上,并且当前服务器下只有一个数据库实例,那么“主机字符串”可以不用填写。 SQL*Plus 工具虽
14、然是 Oracle 自带的工具,但是在现实开发中,基于该环境对开发不方便,因此很少使用 。 SQL*Plus 连接成功后就如图所示: 图 10 SQL*Plus 工具登录后 SQL*Plus 命令行 工具 该命令行工具,提供了与数据库交互的能力和维护数据库的能力,包括了 Oracle 自带的 SQL*Plus 工具的全部功能,在 Oracle 管理中经常使用。在命令行中输入:“ sqlplus /nolog”即可启动该工具。如下图: 图 11 启动 SQL*Plus 命令行工具 输入“ sqlplus /nolog”命令后,只是启动了一个客户端进程,并没有与服务器连接,连接到 Oracle 服
15、务器的命令是: conn 用户名 /密码 as 连接身份 服务器连接字符串 说明: 1. 连接身份:表示该用户连接后拥有的权限。 sysdba: 即数据库管理员 , 权限包括 : 打开数据库服务器 、 关闭数据库服务器 、 备份数据库 、 恢复数据库 、 日志归档 、 会话限制 、 管理功能 、 创建数据库 。sys 用户必须用 sysdba 身份才能登录, system 用户可以用普通身份登录。 sysyoper: 即数据库操作员 , 权限包括 : 打开数据库服务器 、 关闭数据库服务器 、 备份数据库 、 恢复数据库 、 日志归档 、 会话限制 。 normal: 即普通用户 , 权限只有
16、查询某些数据表的数据 。默认的身份是 normal用户。 2. 客户端工具可以根据“服务器连接字符串”对服务器进行连接,有了连接字符串 后客户端就可以像操作本机一样操作远程数据库,因此“服务器连接字符串”的配置也叫本地网络服务配置,如果 SQL*Plus 工具启动在服务器上,并且服务器上只有一个数据库实例的情况下,连接字符串可以缺省,在连接字符串中包括连接服务器的协议,服务器的地址,服务器的端口等设置, Oracle 服务名等,该配置文件在 Oracle安装目录下的: network/ADMIN/ tnsnames.ora。该文件是一个文本文件,用记事本打开后如下所示: 图 12 服务器连接字
17、符串配置 配置本地网络服务名 本地网络服务名, 即客户端与服务器的连接字符串,本地网络服务名是客户端的配置,Oracle 客户端安装后,可以使用客户端自带的网络配置向导( Net Configuration Assistant)进行配置: 1. 启动 Net Configuration Assistant。选择“本地 Net 服务名配置”选项。如下图所示: 图 13 启动 Net Configuration Assistant 2. 选择“下一步”,本步骤可以对本地网络服务名进行添加,删除,测试是否正常连接等操作,选择“添加”选项。 图 14 Net Configuration Assista
18、nt 3. 点击“下一步”,填写服务名,该服务名就是 Oracle 安装时(图 1),为数据库取的全局数据库名。 图 15 服务名配置 4. 点击“下一步”,选择服务需要的协议,默认是 TCP 协议。推荐使用默认的 TCP 协议。 图 16 选择协议 5. 点击“下一步”,输入主机名,主机名可以是计算机名称,也可以是一个 IP 地址,主机如果是本机,可以使用本机计算机名称、“ localhost”、“ 127.0.0.1”、或者本机的 IP 地址。 图 17 输入主机名和端口 6. 单击“下一步”, 选择“是,进行测试”选项。进入下图界面。 图 18 测试成功 在测试时,默认采用的用户名和密码
19、是 system/manager 进行测试,如果用户 system 的密码不是“ manager”,有可能测试通不过,更改登录后,输入正确的用户名和密码后再进行测试即可。 7. 测试成功后,单击“下一步”,出现如下界面,这一步是为本地网络服务命名,即图 12 中的服务器连接字符串名。 图 19 为网络服务名命名 点击“下一步”,配置就完成了,进入 tnsnames.ora 文件中查看,就出现了如图 12 中的内容。 PL/SQL Developer 工具 在实际 Oracle 开发中,经常使用一个功能强大的第三方工具:“ PL/SQL Developer”工具。PL/SQL Developer
20、 基本上可以实现 Oracle 开发中的任何操作。它运行在客户端时必须先安装Oracle 客户端,并且通过网络配置向导配置网络服务名后才能正常与服务器连接。 图 20 PL/SQL Developer 4. Oracle 服务 Oracle 在 windows 中安装完成后,会安装很多服务,下面介绍几个主要的服务。 图 21 Oracle 服务 OracleService+服务名,该服务是数据库启动的基础,只有该服务启动了, Oracle 数据库才能正常启动。这是必须启动的服务。 OracleOraDb10g_home1TNSListener,该服务是服务器端为客户端提供的监听服务,只有该服务
21、在服务器上正常启动,客户端才能连接到服务器。该监听服务接收客户端发出的请求,然后将请求传递给数据库服务器。一旦建立了连接,客户端和数据库服务器就能直接通信了。 OracleOraDb10g_home1iSQL*Plus,该服务提供了用浏览器对数据库中数据操作的方式。该服务 启动后,就可以使用浏览器进行远程登录并进行数据库操作了。如下图所示: 图 22 iSQL*Plus OracleDBConsole+服务名, Oracle10g 中的一个新服务。在 Oracle9i 之前, Oracle 官方提供了一个基于图形界面的企业管理器( EM),从 Oracle10g 开始, Oracle 提供了一
22、个基于 B/S 的企业管理器,在操作系统的命令行中输入命令: emctl start dbconsole,就可以启动 OracleDbConsole 服务,如下图所示: 图 23 EM 服务的启动 服务启动 之后,就可以在浏览器中输入上图中进入 EM 的地址,使用 B/S 方式管理 Oracle服务器。 5. Oracle 启劢和关闭 OracleService 启动动后,就可以对数据库进行管理了, Oracle 的启动和关闭是最基本的命令,在 SQL*Plus 中,启动 Oracle 必须是 sys 用户,命令格式是: startup open 图 24 Oracle 服务启动 Oracle
23、 服务关闭用命令: shutdown immediate 图 25 Oracle 服务关闭 6. Oracle 用户和权限 Oracle 中,一般不会轻易在 一个服务器上创建多个数据库,在一个数据库中,不同的项目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在 Oracle中非常重要。 Oracle 的用户可以用 CREATE USER 命令来创建。其语法是: 语法结构 : 创建用户 CREATE USER 用户名 IDENTIFIED BY 口令 ACCOUNT LOCK|UNLOCK 语法解析 : LOCK|UNLOCK 创建用户时是否锁定,默认为锁定状态。锁定的用户
24、无法正常的登录进行数据库操作。 代码演示 : 创建用户 SQL CREATE USER jerry 2 IDENTIFIED BY tom 3 ACCOUNT UNLOCK; Oracle 在 SQL*Plus 中的命令以分号(;)结尾,代表命令完毕并执行,系统同时会把该命令保存在缓存中,缓存中只保存最近执行过的命令,如果重新执行缓存中的命令,直接使用左斜杠符号( /)。如果命令不以分号结尾,该命令只是写入缓存保存起来,但并不执行。 尽管用户成功创建,但是还不能正常的登录 Oracle 数据库系统,因为该用户还没有任何权限。如果用户能够正常登录,至少需要 CREATE SESSION 系统权限
25、。 Oracle 用户对数据库管理或对象操作的权利,分为系统权限和数据库对象权限。系统权限比如: CREATE SESSION, CREATE TABLE 等,拥有系统权限的用户,允许拥有相应的系统操作。数据库对象权限,比如对表中的数据进行增删改操作等,拥有数据库对象权限的用户可以对所拥有的对象进行对应的操作。 还有一个概念就是数据库角色( role),数据库角色就是若干个系统权限的集合。下面介绍几个常用角色: CONNECT 角色,主要应用在 临时用户,特别是那些不需要建表的用户,通常只赋予他们 CONNECT role。 CONNECT 是使用 Oracle 的简单权限, 拥有 CONNE
26、CT 角色的用户,可以与服务器建立连接会话 ( session,客户端对服务器连接,称为会话 ) 。 RESOURCE 角色 , 更可靠和正式的数据库用户可以授予 RESOURCE role。 RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程( procedure)、触发器( trigger)、索引( index) 等。 DBA 角色, DBA role 拥有所有的系统权限 -包括无限制的空间限额和给其他用户授予各种权限的能力。 用户 SYSTEM 拥有 DBA 角色。 一般情况下,一个普通的用户(如 SCOTT),拥有 CONNECT 和 RESOURCE 两个角色即可进行
27、常规的数据库开发工作。 可以把某个权限授予某个角色,可以把权限、角色授予某个用户。系统权限只能由 DBA用户授权,对象权限由拥有该对象的用户授权,授权语法是: 语法结构 : 授权 GRANT角色 |权限 TO 用户(角色) 代码演示 : 授权 SQL GRANT CONNECT TO jerry; 授权成功。 SQL GRANT RESOURCE TO jerry; 授权成功。 SQL 语法结构 : 其他操作 /回收权限 REVOKE 角色 |权限 FROM 用户(角色) /修改用户的密码 ALTER USER 用户名 IDENTIFIED BY 新密码 /修改用户处于锁定(非锁定)状态 AL
28、TER USER 用户名 ACCOUNT LOCK|UNLOCK 7. 本章总结 Oracle 是基于对象的关系型数据库, Oracle 产品免费,服务收费。 Oracle 安装后默认会有两个管理员用户( system, sys)和一个普通用户 Scott。 Sql*plus 是 Oracle 管理和数据操 作的客户端工具。 客户端链接服务器前,服务器要启动监听服务,并且客户端工具要安装 Oracle 客户端,并且在客户端要建立本地网络服务名。 Oracle 服务和监听启动后才能对数据库进行操作。 用 startup 命令启动数据库,用 shutdown 命令关闭数据库。 Oracle 的角色
29、包括了一系列系统权限和普通对象权限,可以把权限授权给角色,把权限或者角色授权给用户。 8. 本章练习 1. 描述 Oracle 安装过程中的关键点。 2. 描述创建本地网络服务名的步骤。 3. 描述 Oracle 主要服务的作用。 4. Oracle 使用什么命令才能启动和 关闭。 5. 什么是 Oracle 权限和角色?他们的关系是什么? 6. 创建一个用户,并授权 CONNECT 和 RESOURCE。 章节知识结构图 第 2 章 SQL 数据操作和查询 主要内容 Oracle 数据类型 SQL 建表和约束 SQL 对数据增删改 SQL 查询 Oracle 伪列 1. SQL 简介 在第一
30、学期的 SQL Server 学习中,已经知道, SQL 是结构化查询语言 ( Structured Query Language) , 专门用于数据存取 、 数据更新 及 数据库管理等 操 作。并且已经学习 了用 SQL 语句对数据库的表进行增删改查的操作。 在 Oracle 开发中,客户端把 SQL 语句发送给服务器,服务器对 SQL 语句进行编译、执行,把执行的结果返回给客户端。 Oracle SQL 语句由如下命令组成: 数据定义语言( DDL),包括 CREATE(创建)命令、 ALTER(修改)命令、 DROP(删除)命令等。 数据操纵语言( DML),包括 INSERT(插入)命
31、令、 UPDATE(更新)命令、 DELETE(删除)命令、 SELECT FOR UPDATE(查询)等。 数据查询语言( DQL),包括基本查询语句、 Order By 子句、 Group By 子句等。 事务控制语言( TCL),包括 COMMIT(提交)命令、 SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。 数据控制语言( DCL), GRANT(授权)命令、 REVOKE(撤销)命令。 目前主流的数据库产品(比如: SQL Server、 Oracle)都支持标准的 SQL 语句。数据定义语言,表的增删改操作,数据的简单查询,事务的提交和回滚,权限的授权和撤销等,
32、Oracle与 SQL Server 在操作上基本一致。 2. Oracle 数据类型 Oracle 数据库 的核心是表,表中的列使用到的常见数据类型如下: 类型 含义 CHAR(length) 存储固定长度的字符串。参数 length 指定了长度,如果存储的字符串长度小于 length,用空格填充。默认长度是 1,最长不超过 2000 字节。 VARCHAR2(length) 存储可变长度的字符串。 length 指定了该字符串的最大长度。默认长度是 1,最长不超过 4000 字符。 NUMBER(p, s) 既可以存储浮点数,也可以存储整数 , p 表示数字的最大位数(如果是小数包括整数部
33、分和小数部分和小数点, p 默认是 38 为), s 是 指 小数位数。 DATE 存储日期和时间, 存储纪元、 4 位年、月、日、时、分、秒,存储时间从公元前 4712 年 1 月 1 日到公元后 4712 年 12 月 31 日。 TIMESTAMP 不但存储日期的年月日,时分秒,以及秒后 6 位 ,同时包含时区。 CLOB 存储大的文本,比如存储非结构化的 XML 文档 BLOB 存储二进制对象,如图形、视频、声音等。 表 1 Oracle 的部分数据类型 对应 NUMBER 类型的示例: 格式 输入的数字 实际的存储 NUMBER 1234.567 1234.567 NUMBER( 6
34、, 2) 123.4567 123.46 NUMBER( 4, 2) 12345.67 输入的数字超过了所指定的精度,数据库不能存储 表 2 Number 示例 对于日期类型,可以使用 sysdate 内置函数可以获取当前的系统日期和时间,返回 DATE类型,用 systimestamp 函数可以返回当前日期、时间和时区。 图 1 sysdate 和 sysTimestamp Oracle 的查询中,必须使 用“ select 列 from 表”的完整语法,当查询单行函数的时候, from 后面使用 DUAL 表, dual 表在 系统中只有一行一列,该表在输出单行函数时为了selectfro
35、m 的语法完整性而使用。 3. 创建表和约束 Oracle 创建表同 SQL Server 一样,使用 CREATE TABLE 命令 来完成。 创建约束 则 使用如下命令: 语法格式 : ALTER TABLE 命令 ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容。 不论创建表还是约束,与 SQL Server 基本相同, 注意: 在 Oracle 中 default 是一个值,而 SQL Server 中 default 是一个约束,因此 Oracle 的 default 设置可以在建表的时候创建。 案例 1: 创建一个学生信息( INFOS)表和约束 代码演
36、示: Oracle 创建表和约束 CREATE TABLE INFOS ( STUID VARCHAR2(7) NOT NULL, -学号 学号 =S+ 班号 +2位序号 STUNAME VARCHAR2(10) NOT NULL, -姓名 GENDER VARCHAR2(2) NOT NULL, -性别 AGE NUMBER(2) NOT NULL, -年龄 SEAT NUMBER(2) NOT NULL, -座号 ENROLLDATE DATE, -入学时间 STUADDRESS VARCHAR2(50) DEFAULT 地址不详 , -住址 CLASSNO VARCHAR2(4) NOT
37、 NULL -班号 班号 =学期序号 +班级序号 ) / ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER CHECK(GENDER = 男 OR GENDER = 女 ) / ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT CHECK(SEAT =0 AND SEAT =0 AND AGE=1001 AND CLASSNO=2001 AND CLASSNO=2999) / A
38、LTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) / 代码解析: 在 Oracle 代码中,“ /”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过语 句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有单独一行“ /”。 创建一个主键约束。 与 一起创建各种 check 约束。其中是唯一约束,表示该列值是唯一的,列中的值不能重复。 Oracle 中创建外键约束与 SQL Server 相同。比如:现有成绩表定义如下: 案例 2: 创建一个成绩表( SCORES)表和约束 代码演示: Oracle 创建
39、表和约束 CREATE TABLE SCORES ( ID NUMBER , -ID TERM VARCHAR2(2), -学期 S1或 S2 STUID VARCHAR2(7) NOT NULL, -学号 EXAMNO VARCHAR2(7) NOT NULL, -考号 E+班号 +序号 WRITTENSCORE NUMBER(4,1) NOT NULL, -笔试成绩 LABSCORE NUMBER(4,1) NOT NULL -机试成绩 ) ALTER TABLE SCORES ADD CONSTRAINT CK_SCORES_TERM CHECK(TERM = S1 OR TERM =S2) / ALTER TABLE SCORES ADD CONSTRAINT FK_SCORES_INFOS_STUID FOREIGN KEY(STUID) REFERENCES INFOS(STUID) / 代码解析: SQL Server 中可以使用 identify 创建自动增长列,但是 Oracle 中的自动增长需要借助序列( Sequence)完成,在后面章节中讲解。 Oracle 中的外键约束定义。