Oracle笔记
文章目录
–/****************************************
– * *
– * 常用命令 *
– * *
– ****************************************/
value = value.Replace("’", “’’”);
value = value.Replace("&", “’||chr(38)||’”);
查询代码
– 查询代码 ----------------------------------------------------------------------------------------------------
select * FROM COM_MERCHANT_MASTERTWO where MERCHANT_ID = '011907010170058'
select * FROM goods where name like '%三星%' and stat = '热点'
--查询 所有列 从 goods表 中 name列 包含 三星 且 stat列 为 “热点” 的数据
select id , name FROM goods where g_status = '热点' or (g_price >2000 And g_price<4500)
--查询 id列, name列 从 goods表 中 g_status为“热点” 或 g_price在2000~4500之间 的数据
select g_id 商品编号 FROM egoods29 GROUP BY g_id HAVING sum(g_price* g_number)<6000 ORDER BY sum(g_price* g_number) DESC
-- id列 别名 订单总值小于6000 排列 根据 订单总值 降序(不加DESC为默认升序)
select * FROM egoods29 where g_number in (15,20)
-- G_NUMBER 为 15或20
select extract(year from sysdate) - extract(year from g_Date) as 年数 FROM egoods29
-- ( 现在年份 减 G_Date的年份 )别名
select AVG(G_NUMBER) AS 平均数量 FROM egoods29 where T_ID = '01' --(MAX最大值、MIN最小值、AVN平均值...)
-- 所有T_ID = ‘01’的 平均 G_NUMBER值
select * FROM egoods29 where rownum <= 3
-- 前3条信息
插入代码
– 插入代码 ----------------------------------------------------------------------------------------------------
Insert into GOODS29 values ('01','长虹?',null);
Insert into GOODS29 values ('03','中兴 V889D 9帝','15-2月 -12');
Insert into GOODS29 (G_ID,G_NAME) values ('02','诺基亚X2-00');
-- 表名 (有内容的列) values (插入的内容)
修改代码
– 修改代码 ----------------------------------------------------------------------------------------------------
UPDATE TSETTLE_TRANS_TMP T SET T.ALIPAY_ORDER_CHILD = (SELECT MERCHANT_ORDER_NO FROM ONLINE_ORDER R WHERE R.TRADE_NO = T.ALIPAY_ORDER AND rownum <= 1) WHERE T.ALIPAY_ORDER= '4200000616202005318855196633' AND T.ALIPAY_ORDER_CHILD IS NULL AND GUODUIFLAG1 = '1'
UPDATE GOODS29 SET G_ID = '03' WHERE G_ID = '04';
-- 表名 要修改的内容 修改这些
UPDATE egoods29 SET g_price = g_price + 10 WHERE T_ID = 01
-- 将T_ID = ‘01’的G_PRICE值 + 10
UPDATE TSETTLE_TRANS_TMP T SET T.ALIPAY_ORDER_CHILD = (SELECT MERCHANT_ORDER_NO FROM ONLINE_ORDER R WHERE R.TRADE_NO = T.ALIPAY_ORDER AND rownum <= 1) WHERE T.ALIPAY_ORDER IS NULL
-- 联合修改
删除代码
– 删除代码 ----------------------------------------------------------------------------------------------------
DELETE FROM egoods29 WHERE G_ID = '010001'
-- 表名 删除这些(条件)
创建主键
– 创建主键 ----------------------------------------------------------------------------------------------------
CONSTRAINT "GOODS29_PKg" PRIMARY KEY ("G_ID");
-- 主键名称 捆绑的列
创建外键
– 创建外键 ----------------------------------------------------------------------------------------------------
默认值
– 默认值 ----------------------------------------------------------------------------------------------------
约束
– 约束 ----------------------------------------------------------------------------------------------------
新增列
– 新增列 ----------------------------------------------------------------------------------------------------
alter table 表名 add 新增字段名(类型+长度);
alter table asset_orders add remark varchar2(255);
其它命令
– 其它命令 ----------------------------------------------------------------------------------------------------
DROP DATABASE 数据库名 --删除数据库
建表代码
– 建表代码 ----------------------------------------------------------------------------------------------------
CREATE TABLE StreetTestTable(
num NUMBER(12),
txt VARCHAR2(256),
createTime DATE
)
CREATE TABLE GOODS29 --表名 GOODS29
( G_ID CHAR(6) PRIMARY KEY NOT NULL, --主键(PRIMARY KEY) 不空
G_NAME VARCHAR2(50) NOT NULL,
T_ID CHAR(2) NOT NULL REFERENCES TYBE29(T_ID), --外键 约束TYBE29表的T_ID列
G_PRICE FLOAT(126) NOT NULL CHECK(G_PRICE>=0.5), --约束
G_IMAGE VARCHAR2(100), --列名 类型(长度)
G_STATUS VARCHAR2(10) default '热点', --默认值
G_DESCRIPTION VARCHAR2(1000)
);
COMMENT ON COLUMN GOODS29.G_ID IS '商品编号'; --别名
> 可以通过 -> 导出,去除里面的([ BYTE],[ ENABLE]...)
删表代码
– 删表代码 ----------------------------------------------------------------------------------------------------
DROP TABLE 表名;
其它命令
–/****************************************
– * *
– * 其它命令 *
– * *
– ****************************************/
序列
–序列---------------------------------------------------------------------------------------------------------
--创建序列
CREATE SEQUENCE "SEQ_LOGID29" MINVALUE 1 MAXVALUE 99999 INCREMENT BY 1 START WITH 1001 CACHE 20 NOORDER NOCYCLE ;
-- 序列名称 最小值 最大值 增量 起点 高速缓存 NO周期 NO顺序
--使用序列
Insert into log29 values (SEQ_LOGID29.nextval,'李四');
--插入代码 获取序列值,序列值会自动递增,不会重复
同义词
–同义词---------------------------------------------------------------------------------------------------------
--赋予创建同义词权限
GRANT CREATE SYNONYM TO SCOTT
--创建同义词 ( 同义词G 同等于 表GOODS )
CREATE OR REPLACE SYNONYM "SCOTT"."G" FOR "SCOTT"."GOODS";
--使用同义词
select * from g
PL/SQL命令块
–PL/SQL命令块---------------------------------------------------------------------------------------------
SET SERVEROUTPUT ON
DECLARE /*定义部分*/
v_name VARCHAR(20);
BEGIN /*执行部分*/
BEGIN
v_name := ' XXX';
END ;
DBMS_OUTPUT.PUT_LINE( v_name );
--EXCEPTION/*异常处理部分*/
-- DBMS_OUTPUT.PUT_LINE('出错');
END;
视图
–视图---------------------------------------------------------------------------------------------
--赋予SCOTT创建视图权限
GRANT CREATE VIEW TO SCOTT;
--创建视图1
CREATE OR REPLACE FORCE VIEW "VQ0129" AS select * FROM egoods29 where g_name like '%三星%';
--创建 如果有重名-覆盖 视图 名 代码...
索引
–索引---------------------------------------------------------------------------------------------
--2. 在GOODS学号表中创建基于g_name的唯一、降序索引 ix_n学号
CREATE UNIQUE INDEX ix_n29 ON egoods29(g_name DESC)
--创建 唯一 索引 名 从 表名 列 排序 -p151
--3.在GOODS学号表中创建基于g_price的位图索引 ix_p学号
CREATE BITMAP INDEX ix_p29 ON egoods29(g_price)
--创建 位图 索引 名 从 表名 列
查询触发器
–查询触发器--------------------------------------------------------------------------------------------
SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER'and OBJECT_NAME = '触发器名称';
复杂UPDATE
UPDATE ONLINE_REFUND_REQUEST request
SET (IS_REFUND_SUCCESS, LAST_REFUND_RESPCODE, OLD_TRANSACTION_ID, LAST_REFUND_TIME, REFUND_ORDER_NO, REFUND_REAL_FEE, REFUND_REAL_TYPE) = (
SELECT 'Y' as IS_REFUND_SUCCESS, ttt.RESPCODE, ttt.ALIPAY_ORDER, ttt.SETTLETIME,
concat(SUBSTR(request.OLD_ORDER_NO, 0, 20),ttt.REFNO), request.REFUND_REAL_FEE,
CASE WHEN request.PAY_TYPE LIKE '%ALIPAY%' THEN 'MOP' ELSE 'CNY' END
FROM tsettle_trans_tmp ttt
WHERE ttt.ALIPAY_ORDER_CHILD = request.OUT_REFUND_NO AND rownum <= 1
)
WHERE REQUEST_TIME > to_date('2020-12-07 00:00:00','yyyy-mm-dd hh24:mi:ss')
AND REQUEST_TIME < to_date('2020-12-31 23:59:59','yyyy-mm-dd hh24:mi:ss')
AND LAST_REFUND_RESPCODE <> '00'
AND (SELECT COUNT(1) FROM tsettle_trans_tmp ttt2 WHERE ttt2.ALIPAY_ORDER_CHILD = request.OUT_REFUND_NO AND ttt2.RESPCODE='00') > 0
Oracle转SQL
–/****************************************
– * *
– * Oracle转SQL *
– * *
– ****************************************/
--单击GOODS里面的SQL ( 清除 "SCOTT".、 BYTR、 ENABLE、" )
CREATE TABLE GOODSC29
( G_ID CHAR(6) PRIMARY KEY NOT NULL,
G_NAME NVARCHAR(50) NOT NULL, --(VARCHAR2 换 NVARCHAR )
T_ID CHAR(2) NOT NULL,
G_PRICE FLOAT(53) NOT NULL, --(126 换 53)
G_DISCOUNT FLOAT(53) NOT NULL,
G_NUMBER SMALLINT NOT NULL, --(NUMBER(*,0) 换 SMALLINT)
G_PRODUCEDATE datetime NOT NULL, --(DATE 换 datetime)
G_IMAGE NVARCHAR(100),
G_STATUS NVARCHAR(10) NOT NULL,
G_DESCRIPTION NVARCHAR(1000)
);
--右键GOODS导出数据/INSERT (不要自动换行)、(清除(列)、to_timestamp(、,'DD-MON-RR HH.MI.SSXFF AM'))、(日期 30-9月-16 改 2016-09-30 )
Insert into GOODSC29 values ('010001','诺基亚6500 Slide','01',1500,0.9,20,2016-09-30,'pImage/010001.gif','热点','彩屏,1600万色,TFT,240×320像素,2.2英寸');