created by aha00a at 2014-05-17
last modified by aha00a at 2021-04-12
revision: 23

Oracle Database

sucks.

1. Versioning

  • 8i, 9i - Internet
  • 10g, 11g - Grid
  • 12c - Cloud

2. Administration

2.1. NLS 값을 확인하기 (Encoding 등)

SELECT * FROM NLS_DATABASE_PARAMETERS

2.3. Table Description with SQL

SELECT
	COLUMN_ID, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, NULLABLE
	FROM ALL_TAB_COLUMNS
	WHERE TABLE_NAME='<TABLE_NAME>'
	ORDER BY COLUMN_ID

4. Queries

4.1. ISNULL

SELECT COALESCE(NULL, NULL, 1) FROM DUAL -- 1

4.2. safe TO_NUMBER

SELECT
	TO_NUMBER(REGEXP_REPLACE(X, '([0123456789\.]*).*', '\1'))
	FROM (
		SELECT '123' X       FROM DUAL UNION ALL  -- 123
		SELECT 'A23' X       FROM DUAL UNION ALL  -- NULL
		SELECT 'A23D' X      FROM DUAL UNION ALL  -- NULL
		SELECT '12C34' X     FROM DUAL UNION ALL  -- 12
		SELECT '12.45D34' X  FROM DUAL UNION ALL  -- 12.45
		SELECT '123DE6' X    FROM DUAL UNION ALL  -- 123
		SELECT NULL X        FROM DUAL            -- NULL
	)

5. Auto Increment

5.1. supports ver 12c or more.

CREATE TABLE TEST_AUTOINCR
(
 "ID" INT GENERATED ALWAYS AS IDENTITY NOT NULL,
 "DATA" NVARCHAR2(100) NOT NULL,
 UNIQUE ("ID", "DATA")
)
INSERT INTO TEST_AUTOINCR (DATA) VALUES ('a')
INSERT INTO TEST_AUTOINCR (DATA) VALUES ('b')
INSERT INTO TEST_AUTOINCR (DATA) VALUES ('c')
SELECT * FROM TEST_AUTOINCR

5.2. 11g

CREATE SEQUENCE AUTOINCR_SEQ
    START WITH 1
    INCREMENT BY 1
create table AUTOINCR
(
	SEQ NUMBER not null primary key,
	DATA NVARCHAR2(512) not null
)
INSERT INTO AUTOINCR (SEQ, DATA) VALUES (AUTOINCE_SEQ.NEXTVAL, 'a')
INSERT INTO AUTOINCR (SEQ, DATA) VALUES (AUTOINCE_SEQ.NEXTVAL, 'b')
INSERT INTO AUTOINCR (SEQ, DATA) VALUES (AUTOINCE_SEQ.NEXTVAL, 'c')

--2020-07-03

7. See Also

7.2. Similar Pages

Similar pages by cosine similarity. Words after page name are term frequency.

7.3. Adjacent Pages