ORACLE与PsotgreSQL问题总结

一.ORACLE字段大小写问题

1.不加双引号
CREATE TABLE STC(id INT, length INT);
CREATE TABLE STC(ID INT, LENGTH INT);

因为在ORACLE数据库中,只要是不用双引号,不管是大写还是小写,都会转换成大写,所以在数据库中字段名都是大写。因为length是关键字,所以会自动加上双引号。

当insert数据时不加双引号和加双引号大写都是可以插入的:

INSERT INTO STC(id, length) VALUES(1,1);
INSERT INTO STC(ID,"LENGTH") VALUES(1,1);
2.加双引号大写
CREATE TABLE STC(ID INT, "LENGTH" INT);

因为加双引号大写,存到数据库还是大写,所以和第一种情况是一样的。

3.加双引号小写
CREATE TABLE STC(ID INT, "length" INT);

因为加了双引号,所以在数据库中是小写。

在insert数据时必须加双引号并且是小写才能插入数据:

INSERT INTO STC(ID,"length") VALUES(1,1);

二.numeric数据类型

1.用法

numeric(precision, scale)

2.范围

小数点以前最多 131072位,小数点以后最多16383 位。
标度(scale):是小数部分的位数,scale>=0
精度(precision):是全部数据位的数目,也就是小数点两边的位数总和。
只支持精度大于或等于标度

3.常见使用形式
1.numeric

因为没有限制任何精度和标度,所以它可以存储一个直到实现精度上限的任意精度和标度的数值。

2.numeric(precision)

等价于NUMERIC(precision,0),当你要存小数时,它会四舍五入存成整数,但是四舍五入之后不能超过精度,比如定义一个numeric(6)类型,55.5会存成56,55.4会存成55,而999999.5就不能存,因为四舍五入之后是1000000,位数大约6,所以存不了。

3.numeric(precision, scale)

当你输入的数的标度小于你规定的标度时,它会用0补齐,如果大于你规定的标度,它会四舍五入,但是最后也不能大于精度,否则存不进去,比如定义一个numeric(6,2)类型,5会存成5.00,5.989会存成5.99,9999.999不能存,因为四舍五入后为10000.00,超过了规定的精度,所以存不了。

4.可以存的数

正整数,负整数,0,小数都是可以存的。

5. 对应的Java数据类型

java.math.BigDecimal

三.BLOB类型字段能不能为NULL

BLOB类型字段是可以NULL的。
代码如下:

public void insertData() {
		String sql = "INSERT INTO STCBLOB VALUES(?,?)";
		PreparedStatement pstmt = null;
		Connection con = null;
		try {
			con = JdbcUtilsTest.getConnection();
			pstmt = con.prepareStatement(sql);
			Blob blob = null; 
			pstmt.setString(1, "2");
			pstmt.setBlob(2, blob);
			pstmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			JdbcUtilsTest.close(pstmt);
			JdbcUtilsTest.close(con);
		}
	}

四.JDBC给RAW类型数据赋值

1.byte[]
pstmt.setBytes(index, byte[] bytes);
2.BinaryStream
pstmt.setBinaryStream(index, InputStream in);
3.其他

String不行,CLOB(待定)

五.练习ORACLE数据库数据的备份和还原

1.导出
exp userName/password file=fileName.dump owner=userName rows=N  (rows=N仅导出表结构)
2.登录sysdba用户
sqlplus / as sysdba    或    connect / as sysdba
3.创建新用户并授权
create user userName identified by password;
grant connect,resource,dba to userName;
4.把数据导入新用户
imp userName/password file=fileName.dump fromuser=fromUserName touser=toUserName
5.删除新用户
drop user userName cascade;

六.postgresql源码编译安装contrib

进入根目录下的contrib目录,依次执行以下命令:

make
make install

七.流复制操作

1.修改配置文件

修改data目录下的postgresql.conf文件:
(1)找到wal_level,修改它的值为logical,并去掉注释。
(2)找到max_wal_senders,去掉注释。

保存修改,并重启服务。

2.依次执行下列命令
pg_recvlogical -d postgres --slot=test --create-slot -U userName

pg_recvlogical -d postgres --slot=test --start -U userName-f fileName
3.操作数据库

进行的操作都会打印到你创建的文件中

4.删除slot
pg_recvlogical -d postgres --slot=test --drop-slot -U userName

提示:如果是当前用户可以不加-U userName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值