PL/SQL

PL/SQL 知识量:16 - 57 - 244

3.1 创建表><

创建表的语法- 3.1.1 -

在Oracle数据库中数据表是存放在表空间中的,每一个表空间都可以存放多个数据表。如果没有指定创建表的表空间,默认是存放在SYSTEM表空间中的。

数据表主要包括以下几个组成部分:

  • 字段名(列名):可长达128个字符,包含中文、英文字母、下画线、#号、货币符号(¥)及AT符号(@),且同一表中不许有重名列。

  • 字段数据类型

  • 字段的长度、精度和小数位数:字段的长度是指字段所能容纳的最大数据量,但对不同的数据类型来说,长度对字段的意义可能有些不同。1、对字符串与Unicode数据类型而言,长度代表字段所能容纳字符的数目,因此它会限制用户所能输入的文本长度。2、对数值类的数据类型而言,长度则代表字段使用多少个字节来存放数字。3、对binary、varbinary、image数据类型而言,长度代表字段所能容纳的字节数。

精度是指数中数字的位数,包括小数点左侧的整数部分和右侧的小数部分;小数位数则是指数字小数点右侧的位数。例如,数字12345.678,其精度为8,小数位数为3。所以,只有数值类的数据类型,才有必要指定精度和小数位数。

与SQL标准语法相同,在PL/SQL中,创建一个新表可以使用CREATE TABLE命令:

CREATE TABLE table_name
(
column_name datatype,
column_name datatype;
…
)

在CREATE TABLE命令后,指明创建表的名称,接着分别定义表中各列的名称、数据类型等。表中各列的定义在括号中完成,且各列之间以逗号隔开。

常用的数据类型- 3.1.2 -

数据类型可以简单地分成:数字型、字符型、日期型和其他类型4种。

1、数字型

数字型就是用来存放数的,包括整数和小数,主要用到的数据类型是number类型和float类型。

数据类型 取值范围 说明
number(p,s) p最大精度是38位(十进制) p代表精度,s代表小数点位数;可以用来存储定长的整数和小数。
float 用来存储126位数据(二进制) 精度范围为二进制的1~126,在转换为十进制时需要乘以0.30103。

定义数据类型时如果使用decimal类型,Oracle会自动把该类型的数据转换成number类型的数据。

2、字符型

字符型是用来存放字符和字符串的,在Oracle数据库中主要有varchar2、nvarchar2、char、nchar、long等类型。

数据类型 取值范围 说明
varchar2 0.4000 存储可变长度的字符串
nvarchar2 0.1000 存储Unicode字符集的变长字符型数据
char 0.2000 存储定长的字符型数据
nchar 0.1000 存储Unicode字符集的定长字符型数据
long 0.2G 存储可变长的字符串

3、日期型

日期型是用来存放表示日期的数据的,以日期格式存放。在实际编程时,需要在数据库中存放日期型的数据时,也经常使用varchar2类型来表示。在Oracle数据库中,日期型主要有date和timestamp类型,其中date类型是比较常用的类型。

数据类型 说明
date 存储日期和时间,范围为公元前4717年1月1日到公元9999年12月31日
timestamp 存储日期和时间。与date的区别是显示日期和时间更加精确。日期和时间能够显示是上午还是下午。

4、其他数据类型

除了上面讲的3种常用的数据类型外,还有一些特殊的类型,比如:存放大数据的blob类型和clob类型,这两种数据类型经常用于存放XML类型的数据或图片信息。

数据类型 取值范围 说明
blob 最多可以存放4GB数据 存储二进制数据
clob 最多可以存放4GB数据 存储字符串数据
bfile 大小与操作系统有关 用来把非结构化的二进制数据存储在数据库以外的操作系统文件中

创建表实例- 3.1.3 -

采用最基本的创建语法创建people表:

CREATE TABLE "SYSTEM"."people" 
   (	"id" NUMBER(2,0), 
	"name" VARCHAR2(10), 
	"age" NUMBER(2,0), 
	"sex" CHAR(5)
   ) ;

在创建表时,必须要保证该表名在表空间中不存在,否则数据库会提示创建失败。如果需要创建已经存在的表,必须先将原来的表删除,再重新创建。

创建指定默认值的表- 3.1.4 -

使用CREATE TABLE命令创建表时,可以为每列指定默认值。即当向表中插入数据,且不指定该列的值时,系统会自动地采用设定的默认值,该默认值是通过DEFAULT关键字来实现的。其语法如下:

<column name>  <data type> DEFAULT  <default value>

简要说明:

  • column name:列的名称。

  • data type:列的数据类型。

  • DEFAULT:关键字后面指定该列的默认值,无论<default value>使用什么类型的值,都必须符合在列定义中指定的数据要求。如果使用char数据类型,那么指定的默认值也必须是该数据类型的。

下面示例中,age默认为0:

CREATE TABLE "SYSTEM"."people" 
   (	"id" NUMBER(2,0), 
	"name" VARCHAR2(10), 
	"age" NUMBER(2,0) DEFAULT 0, 
	"sex" CHAR(5)
   ) ;