oracle 中建表时,属性用int好还是number好 ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 中建表时,属性用int好还是number好 ?相关的知识,希望对你有一定的参考价值。

各有优劣,int在oracle中是number类型的子集,在oracle内部定义就是number(38);
使用int,直观,和其他语言代码移植方便,但占用数据库空间大;
使用number,是可变长度,如属性值最大是9999,可定义为number(4),占用数据库空间小;
参考技术A int追问

能说明一下为什么吗?

MySQLMySQL中建表时变量名需要加反引号

举个例子,比如这里我想建一个订单表t_order,包含order_id、create_time、price、user_id四个属性,SQL语句如下所写,这样是没有问题的。

CREATE TABLE t_order(
	order_id INT PRIMARY KEY AUTO_INCREMENT,
	create_time DATETIME,
	price DECIMAL(11,2),
	user_id INT,
	FOREIGN KEY(user_id) REFERENCES t_user(id)
);

但是假如再增加一个status属性表示订单的状态时,此时再像如下去写SQL语句就会报错,因为status是MySQL内置的数据类型,会导致编译错误。

CREATE TABLE t_order(
	order_id INT PRIMARY KEY AUTO_INCREMENT,
	create_time DATETIME,
	price DECIMAL(11,2),
	status INT,
	user_id INT,
	FOREIGN KEY(user_id) REFERENCES t_user(id)
);

因此MySQL建表时对于表中涉及到的变量名,无论是否是内置数据类型,都需要添加反引号。注意这里是反引号,而不是单引号或双引号。反引号通过键盘ESC键下方的"~"按键可以输入(注意输入时切换成半角)。正确的SQL语句如下:

CREATE TABLE t_order(
	`order_id` INT PRIMARY KEY AUTO_INCREMENT,
	`create_time` DATETIME,
	`price` DECIMAL(11,2),
	`status` INT,
	`user_id` INT,
	FOREIGN KEY(user_id) REFERENCES t_user(id)
);

以上是关于oracle 中建表时,属性用int好还是number好 ?的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle 11.2的数据库中建表时遇到 RESULT_CACHE (MODE DEFAULT) ORA-00922: missing or invalid option

oracle数据库区分大小写吗?

mysql中建表时形容大小的数据用啥数据类型

在sql中建表时如何查看字段的长度

MySQLMySQL中建表时变量名需要加反引号

在oracle数据库中建表