oracle
常用函数
简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
应用场景
数据库中存数字,前端接口接收到名字
uuId函数
- oracle
sys_guid() - selserver
newid() 生成36位的GUID
replace(newid(), ‘-’, ‘’) 生成32 位的GUID
orcale指令
导出表数据(包括创建表)
exp user1/pwd@server1 file=c:\temp\exp.dmp tables=(table1, table2)
例子 exp csshaoguan/csshaoguan@orcl file=c:\temp\exp.dmp tables=(FIXFLOW_DEF_BYTEARRAY,FIXFLOW_DEF_DEPLOYMENT,FIXFLOW_DEF_PROCESSDEFINITION
)
exp pubuser/pubuser#WDS9200@10.144.118.125:1521/imcx owner=pubuser file=D:\20210325pubuser_fm.dmp
导入表数据
impdp promng/promng@imc file=D:\0326PROMNG_FM.DMP full=y
导出表空间指令
exp pubuser_fm/pubuser_fm@47.96.94.255:1521/QDH owner=pubuser_fm file=D:\20210325pubuser_fm.dmp
创建新的表控件和用户
1. Create tablespace pubuser_fm
logging
datafile 'D:\data\pubuser_fm.dbf'
size 50m
autoextend on
next 50m
extent management local;
2.Create user pubuser_fm identified by pubuser_fm default tablespace pubuser_fm temporary tablespace temp;
3.Grant connect,dba to pubuser_fm;
impdp promng/promng@imc directory=DATA_PUMP_DIR dumpfile=0326PROMNG_FM.DMP remap_schema=promng_fm:promng nologfile=true table_exists_action=replace
sql报错
ORA-00918: column ambiguously defined 未明确定义列
异常原因:select 查询的字段在from的两张表中都存在,导致数据库无法区别需要查询的字段来自于哪张表
ORA-01747: user.table.column, table.column 或列说明无效
原因:创建表时使用了group作为字段名称,查询语句中使用了group字段,而group是ORACEL的关键字,所以查询时出错
sql编程相关注意点
需求:一张表的多个字段关联另一张表的一个字段(用于数据字典的关联查询)(都是一对一关系)
SELECT
n.orderid,
m.last_name,
q.last_name
FROM
vtiger_orderitem n
LEFT JOIN vtiger_users m ON n.signatory = m.id
LEFT JOIN vtiger_users q ON n.servicer = q.id
where后面不能跟别名,只能跟表名.字段名的形式
数据库中不等于null的判断:
不等于:<> ,!=,~= ,^= 这四个符号据说都可以在oracle中表示不等于,但是试了之后发现<> ,!= ,^=是可以的,
~=不行,需要注意的是,只有<>是标准的sql语法,可以移植,其他的都是oracle平台的特性,移植性较差,所以开发中,尽量使用<>表示不等于 等于:=不用多说, 但是要进行null的等于判断时,须使用is null 或is not null,null只能通过is null或者is
not null来判断,其它操作符与null操作都是false。
oracle中修改已存在数据的列的数据类型(因为有数据的列不可以修改数据类型)
ALTER TABLE TSP_SIS_ALARM ADD tmp_col VARCHAR2 ( 100 );-- 添加临时列
UPDATE TSP_SIS_ALARM SET tmp_col = CONTINUED_TIME;--将目标字段中数据加入到临时列中
UPDATE TSP_SIS_ALARM SET CONTINUED_TIME = NULL;--将目标字段数据清空
ALTER TABLE TSP_SIS_ALARM MODIFY ( CONTINUED_TIME NUMBER );--更改目标字段类型
UPDATE TSP_SIS_ALARM SET CONTINUED_TIME = tmp_col;--将临时列数据加回到目标字段中
ALTER TABLE TSP_SIS_ALARM DROP COLUMN tmp_col;--清除临时列
单表的自关联查询(将一个表看作两个表)
SELECT s1.sname,s2.sname FROM sa_oporg s1 join sa_oporg s2 on s1.sparent = s2.sid
windows启动oracle后台的服务
sqlserver
常见问题
sqlserver导入大型sql时报错,内存不足,采用sqlcmd的方式进行导入
sqlcmd -S 127.0.0.1 -d pubuser -U sa -P Nari2018 -i C:\Users\mn\Desktop\pubuser.sql