一.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