国产数据库-崖山使用介绍
本文档基于崖山数据库23.3 个人版本,单机(主备)部署模式的情况下的使用介绍。
数据库实例状态:
· NOMOUNT:仅读取参数文件,不加载数据库
· MOUNT:读取控制文件,加载数据库,但是数据库处于关闭状态
· OPEN:加载并打开数据库
通过yasboot命令切换不同实例状态:
# 方式一:先关闭然后启动数据库集群至NOMOUNT状态
yasboot cluster stop -c yashandb
yasboot cluster start -c yashandb -m nomount
# 方式二:一键重启数据库集群至NOMOUNT状态
yasboot cluster restart -c yashandb -m nomount
通过命令命令 yasql user/password 进入数据库实例,查看当前实例状态,SELECT status FROM V$INSTANCE; 可以看到显示状态为 STARTED。
通过sql可以修改数据库实例:
ALTER DATABASE MOUNT;
ALTER DATABASE OPEN;
以下是一些常用的系统表查询
1、判断表是否存在
SELECT COUNT(*) FROM SYS.ALL_TABLES WHERE OWNER = 'XHAO' AND TABLE_NAME = 'YASGIS'
2、获取表分区列名
SELECT ucc.TABLE_NAME,
uc.CONSTRAINT_NAME,
ucc.COLUMN_NAME
FROM SYS.ALL_CONSTRAINTS uc
JOIN SYS.ALL_CONS_COLUMNS ucc
ON uc.CONSTRAINT_NAME = ucc.CONSTRAINT_NAME
WHERE uc.CONSTRAINT_TYPE = 'P'
AND uc.TABLE_NAME = 'YASGIS'
AND uc.OWNER = 'XHAO';
CONSTRAINT_TYPE 用于标识约束的类型,常见的约束类型包括:
‘P’:主键约束(Primary Key)
‘U’:唯一约束(Unique)
‘C’:检查约束(Check)
‘F’:外键约束(Foreign Key)
‘R’:引用约束(Referential Integrity)
‘X’:其他约束
3、获取表的空间列名
SELECT F_GEOMETRY_COLUMN FROM MDSYS.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'XHAO' AND F_TABLE_NAME = 'YASGIS';
4、获取表的geotype
SELECT "TYPE" FROM MDSYS.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'XHAO' AND F_TABLE_NAME = 'TEST_SHP';
5、获取表的空间类型
select st_geometrytype("shape") from XHAO.TEST_SHP limit 1
6、获取表的空间引用
SELECT PROJ4TEXT FROM MDSYS.SPATIAL_REF_SYS WHERE SRID = 4326/*${wkid}*/;
7、获取表的wkid
SELECT SRID FROM MDSYS.GEOMETRY_COLUMNS WHERE F_TABLE_SCHEMA = 'XHAO' AND F_TABLE_NAME = 'YASGIS';
SELECT ST_SRID("GEOM") FROM XHAO.YASGIS LIMIT 1;
8、获取表的空间维度(Z维度/M维度)
SELECT ST_AsBinary("GEOM") from XHAO.YASGIS limit 1;
Z维度:在空间数据(如地理信息系统 GIS)中,几何图形通常表示为点、线或多边形等类型的几何对象。这些对象通常有两个维度(2D),即 X 和 Y(经度和纬度)。在某些应用中,还可能引入第三维度——Z 维度,表示高度、深度或其他与空间位置相关的数值。
geometry.hasZ:判断一个几何对象是否包含Z坐标的方法或属性。如果几何对象是三维的,即包含Z坐标,返回true;如何是二维的,没有Z坐标,返回false。
M维度:在空间数据中,除了常见的 X, Y 和 Z 坐标外,还可以使用一个额外的 M 坐标,通常用于存储一些附加的测量值或时间信息。这种 M 坐标不代表空间位置,而是用于表示与几何对象相关的其他数据。例如长度、重量、时间、温度、道路流量信息、污染物浓度等
geometry.hasM 用来判断一个几何对象是否包含 M 维度。如果几何对象含有 M 坐标(如附加的测量数据),则返回 true;如果没有 M 坐标,则返回 false
9、判断 GEOMETRY_COLUMNS是否存在
SELECT COUNT(*) FROM SYS.ALL_TAB_COLS WHERE OWNER = 'MDSYS' AND TABLE_NAME = 'GEOMETRY_COLUMNS'
10、获取表ID
SELECT OBJECT_ID FROM SYS.ALL_OBJECTS WHERE OWNER = 'XHAO' AND OBJECT_NAME = 'YASGIS' AND OBJECT_TYPE = 'TABLE';
以下是对于表的一些操作:
1、创建表
CREATE TABLE XHAO.YASGIS(
FID INT,
value VARCHAR(255),
GEOMETRY ST_GEOMETRY
)
2、新增列(设置not null 需对应列没有存储数据)
ALTER TABLE XHAO.YASGIS ADD ("OID" INT NOT NULL PRIMARY KEY)
ALTER TABLE XHAO.YASGIS DROP COLUMN "GEOM"
ALTER TABLE XHAO.YASGIS ADD COLUMN "shape" MDSYS.ST_GEOMETRY
3、添加空间索引
CREATE RTREE INDEX XHAO.shape_2326_1_SDIX ON XHAO."TEST_SHP" ("shape")
4、批量写入数据(可以同时写入不同的表)
-- 语句后面必须有subquery
INSERT ALL INTO XHAO.YASGIS(ID,GEOM) VALUES(1,ST_GEOMFROMTEXT('POINT(1 1)'))
INTO XHAO.YASGIS(ID,GEOM) VALUES(2,ST_GEOMFROMTEXT('POINT(2 2)'))
INTO XHAO.YASGIS(ID,GEOM) VALUES(3,ST_GEOMFROMTEXT('POINT(3 3)'))
SELECT * FROM DUAL
--插入不同的表
INSERT ALL INTO area VALUES('00','unknown','unknown')
INTO branches VALUES('0002','南山','00','----')
INTO branches VALUES('0003','福田','00','----')
SELECT * FROM DUAL;
5、JDBC使用
在Java中使用JDBC执行sql,sql中不能以";"结尾,否则会报异常 YAS-04209 ,非法的单词。