์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์ฑ
- ์นํผ๋ธ๋ฆฌ์ฑ
- ์นดํ๋๊ฐ
- dmz๋คํธ์ํฌ
- Python
- dmz๋
- html
- ๋ ์
- ์ํ
- Java
- ํ์ด์ฌ
- JavaScript
- ๋คํธ์ํฌdmz
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- css
- ๋๊ฐ
- ์ค๋ผํด
- ์ ๋ฆฌํธ๋ฆฌํธ
- ๋ฐฉํ๋ฒฝdmz
- dmz๊ตฌ์ฑ
- ํ์ฒ์ ๋ฆฌํธ๋ฆฌํธ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๊ฐ๋ฐ
- ๊ฐ์์ ์
- ์ค๋ธ์
- ์๋ฐ
- database
- ํ๋ก๊ทธ๋๋ฐ
- ์ฝ๋ฉ
- ์๋ฐ์คํฌ๋ฆฝํธ
- Today
- Total
๋ชฉ๋กStudy/database (22)
JiYoung Dev ๐ฅ

์ง๋ ๊ธ์์ MariaDB ํด๋ฌ์คํฐ๋ง์ ์ํ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์๋ค. Galera Cluster๋ฅผ ํตํ MariaDB ์ด์คํ ๊ตฌ์ฑ (1) MariaDB ์ด์คํ ์ข ๋ฅ(Replication, Galera Cluster)DB ํน์ ์คํ๋ง ๋ถํธ ์๋ฒ์ ๊ฐ์ ์์คํ ์ ๊ตฌ์ฑํ ๋, ๋จ ํ๋์ ์๋ฒ๋ณด๋ค๋ ์ด์คํ ํน์ ๊ทธ ์ด์์ผ๋ก ํ์ฌ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด์คํ์ ๋ชฉ์ ์ ๊ณ ๊ฐ์ฉ์ฑ์ธ๋ฐ, ์ฌํด ๋ฐ์์ด๋ ์danyoujeong.tistory.com Replication์ ํตํด Master-Slave ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๊ณผ Galera Cluster๋ฅผ ํตํด ๋ฉํฐ ๋ง์คํฐ ๋ฐฉ์์ผ๋ก ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ๋ํด ๊ฐ๋ ์ ๋๋ฅผ ์์๋ณด์๋๋ฐ, ์ด๋ฒ ๊ธ์์๋ ๊ทธ๋์ ์ค์ ๋ก Galera Cluster ์ด๋ค ๋์ ..

DB ํน์ ์คํ๋ง ๋ถํธ ์๋ฒ์ ๊ฐ์ ์์คํ ์ ๊ตฌ์ฑํ ๋, ๋จ ํ๋์ ์๋ฒ๋ณด๋ค๋ ์ด์คํ ํน์ ๊ทธ ์ด์์ผ๋ก ํ์ฌ ์ํคํ ์ฒ๋ฅผ ์ค๊ณํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ์ด์คํ์ ๋ชฉ์ ์ ๊ณ ๊ฐ์ฉ์ฑ์ธ๋ฐ, ์ฌํด ๋ฐ์์ด๋ ์์์น ๋ชปํ ์ฅ์ ์ํฉ์์๋ ์์คํ ์ด ๋ฉ์ถ์ง ์๊ณ ์ ์์ ์ผ๋ก ์ด์๋๋๋ก ํ๊ณ ์ ํจ์ด๋ค. ์ค๋์ DB ์ค์์๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ข ๋ฅ์ธ MariaDB๋ฅผ ์ด์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ณ ์ ํ๋ค. ํ์๋ MariaDB์ ์ฌ๋ฌ ์ด์คํ ๋ฐฉ๋ฒ ์ค์์ Galera Cluster๋ฅผ ์ฌ์ฉํ์ฌ ์ด์คํ๋ฅผ ์๋ํ๊ณ , ๊ทธ ๊ณผ์ ๊ณผ ๊ด๋ จ๋ ์ด๋ก ์ ์ ๋ฆฌํด ๋ณด์๋ค. โญMariaDB๋ฅผ ์ด์คํํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๋ค๋ณธ๋ก ์ ๋ค์ด๊ฐ๊ธฐ์ ์์ MariaDB๋ฅผ ์ด์คํํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ๋ํด ๋จผ์ ์์๋ณด์. Galera Cluster๋ฅผ ํตํ ๋ฐฉ๋ฒ๋ ์์ง๋ง, ..

ํธํ๊ฒ ์ฌ์ฉํ๋ ค๋ฉด autoincrement ์ฌ์ฉํ๋ ํ์id ๊ฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๋ ์ปฌ๋ผ์ด ์๋ค๋ฉด ์ด๋ฅผ pk๋ก ์ฌ์ฉํ๋ ๊ฒ์ ์ถ์ฒํจ db ์ค๊ณ์ ๊ณ ๋ คํ ์ 1. ๊ฐ๊ฐ ํ ์ด๋ธ์ pk๋ ์ ์ค์ ์ด ๋์ด ์๋๊ฐ? 2. ์ธ๋ํค ์ค์ ์ด ์ ๋์๋๊ฐ? ๊ผญ ์ธ๋ํค๋ ์ค์ ์ํด๋ ๋จ โ ํ์ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋ ๋ ๊ด๋ จ๋ ๋ฐ์ดํฐ ์ง์ฐ๊ณ ์ถ์ ๋, ํ์์ด ์์ด์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉ โ ์ฐ๊ด๊ด๊ณ๋ ์ค์ ํ๋ ์ธ๋ํค ์ค์ ์ ์ํด๋ ๋จ 3. ๊ฐ๊ฐ์ ์์ฑ์ด ๊ผญ ํ์ํ ์์ฑ์ธ๊ฐ? 4. ์ฃผ์ํฐํฐ ๋จผ์ ํ๋ก๊ทธ๋จ ๊ตฌํ ํ ๋ฉ์ธ ์ํฐํฐ , ํ์ ์ํฐํฐ ์์ผ๋ก ๊ฐ๋ฐํ๋ฉด ํธํ๋ค.

ํ๋ก์์ SQL์ ์ ์ฐจ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐํ์ฌ ์ฌ์ฉํ๋ ๊ธฐ์ SQL์ ๋ํ์ ์ธ ๋น์ ์ฐจํ ์ธ์ด SET SERVEROUTPUT ON; SELECT * FROM TB_CUST; CREATE OR REPLACE PROCEDURE P_SOLD_OUT_YN_DEL AS v_cnt NUMBER := 0; BEGIN DBMS_OUTPUT.PUT_LINE(v_cnt); SELECT COUNT(*) INTO v_cnt FROM TB_CUST ; DBMS_OUTPUT.PUT_LINE(v_cnt); EXCEPTION WHEN OTHERS THEN NULL ; END ; / EXEC P_SOLD_OUT_YN_DEL; ๋ณ์ ์ ์ธ CREATE OR REPLACE PROCEDURE P_SOLD_OUT_YN_DEL AS v_cust_id..

๊ณ์ธต ์ฟผ๋ฆฌ ํ์ฉ์ ๋ฉ๋ด, ๊ฒ์ํ์ ๋๊ธ, ๋๋๊ธ์ ๋ง๋ค ์ ์์ ์์ ์ฟผ๋ฆฌ SELECT ๋ฉ๋ดID , ์์๋ฉ๋ดID , ๋ฉ๋ด์ด๋ฆ , LEVEL , LPAD(' ' , ( LEVEL -1 ) * 2 , ' ' ) || ๋ฉ๋ด์ด๋ฆ FROM ๋ฉ๋ด WHERE 1=1 -- WHERE ์กฐ๊ฑด์ด ์์ผ๋ฉด ๋ฐ๋ก ์์จ๋ ๋จ START WITH ์์๋ฉ๋ดID IS NULL CONNECT BY NOCYCLE ์์๋ฉ๋ดID = PRIOR ๋ฉ๋ดID ORDER SIBLINGS BY ๋ฉ๋ดID ; ์ ํ ์กฐ์ธ(SELF JOIN) SELECT * FROM ๋ฉ๋ด A, ๋ฉ๋ด B WHERE A.์์๋ฉ๋ดID = B.๋ฉ๋ดID; -- ์ ํ์กฐ์ธ (๊ณ์ธต ์ฟผ๋ฆฌ๊ฐ ์๋ ์์ ์ ๊ณ์ธต์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ์ฉ) ๋๋๊ธ ๊ตฌํ SELECT ๋๊ธID , ์์๊ธ , ์์ฑ๊ธ , C..

FULL SCAN ์ธ๋ฑ์ค ์ธ๋ฑ์ค ์์ฑ CREATE INDEX IDX_PRD ON TB_PRD ( PRD_TYPE ) ; ์ธ๋ฑ์ค ์ฌ์ฉ ๋ชฉ์ : ์กฐํ ์ฑ๋ฅ ํฅ์ ๋์ DML ์ฑ๋ฅ์ด ๊ฐ์ํจ ์ธ๋ฑ์ค ํ์ฉ : NL์กฐ์ธ (Nested Loop / ์ค์ฒฉ์กฐ์ธ) ์ธ๋ฑ์ค์ ํจ๊ป ์ฌ์ฉํ์ ๋ ํจ์จ์ด ๋์์ง ํน์ง PRIMARY KEY ์์ฑ ==> ์์ด์ ๊ทธ PK์ ๋ํ ์ธ๋ฑ์ค ํ๋ ์์ฑ๋จ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ์ง์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ผ ํจ

SELECT PRD_ID , PRD_NAME , PRD_AMT , DENSE_RANK() OVER (ORDER BY PRD_AMT DESC) AS ๊ฐ๊ฒฉ๋์์ FROM TB_PRD; ์๋์ฐํจ์ : ํ ์ด๋ธ์ ํ๊ณผ ํ๊ฐ์ ๊ด๊ณ๋ฅผ ์ด์ฉํด์ ์๋ฏธ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฝ๋๋ค. RANK : ์ค๋ณต๋ ์์ ๋ค์ ์ซ์ ๊ฑด๋๋ DENSE_RANK : ์ค๋ณต๋ ์์ ๋ค์ ์ซ์ ๊ฑด๋๋ฐ์ง ์์ ROW_NUMBER : ๊ณ ์ ํ ์ซ์ ์คํ์์ ์ธ๋ผ์ธ๋ทฐ๋ฅผ ์ด์ฉํด์ ์กฐ๊ฑด ๋ถ์ฌ ๊ฐ๋ฅ SELECT * FROM ( SELECT PRD_ID , PRD_NAME , PRD_AMT , DENSE_RANK() OVER (ORDER BY PRD_AMT DESC) AS ๊ฐ๊ฒฉ๋์์ FROM TB_PRD ) WHERE ๊ฐ๊ฒฉ๋์์

UNION : ์ค๋ณต ์ ๊ฑฐ UNION ALL : ์ค๋ณต ํฌํจ ํน์ง1. ์ปฌ๋ผ์ ์ฒซ๋ฒ์งธ ์ปฌ๋ผ์ ๋ฐ๋ผ๊ฐ๋ค. SELECT ์๋งค๋ฒํธ, ๋ฎค์ง์ปฌ์ด๋ฆ, ๋ฎค์ง์ปฌ๊ฐ๊ฒฉ FROM ๋ฎค์ง์ปฌ์๋งค๋ด์ญ UNION ALL SELECT ์๋งค๋ฒํธ, ์ฝ์ํธ์ด๋ฆ, ์ฝ์ํธ๊ฐ๊ฒฉ FROM ์ฝ์ํธ์๋งค๋ด์ญ UNION ALL SELECT ์๋งค๋ฒํธ, ๊ทน์ด๋ฆ, ๊ทน๊ฐ๊ฒฉ FROM ๊ทน์ฅ์๋งค๋ด์ญ ; ํน์ง 2. ์ปฌ๋ผ์ ๊ฐ์์ ์๋ฃํ์ด ์ผ์นํด์ผ ํจ! ์ง์ ๋ฌธ์ํ์ด๋ NULL๊ฐ์ ์ง์ ํ์ฌ ํด๋น ์ปฌ๋ผ์ ์ฌ์ฉํ ์ ์๋ค. oracle ๋ฒ์ ์ ๋ฐ๋ฅธ ์ฐจ์ด ์ค๋ณต์ ๊ฑฐ + ์ ๋ ฌ = union ์ค๋ณต x + ์ ๋ ฌ x = union all (๊ณต๊ณต๊ธฐ๊ด ๋ฑ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๋ฒ์ ) union = ์ค๋ณต union all = ์ค๋ณตx ๊ฐ์ฅ ์ต์ ๋ฒ์ ์ด๋ ์๋ชป ์ ๊ทธ๋ ์ด๋ํ๋ค๊ฐ ๊ธฐ์กด๊ฒ ์๋์ํ ์ ์์

๋ฐฑ์ ํ ์ด๋ธ ์์ฑ CTAS : CREATE TABLE AS SELECT(CTAS) SELECT ๋ฌธ์ ๊ฒฐ๊ณผ๋ก๋ถํฐ ์ ํ ์ด๋ธ์ ์์ฑํ๋ค. CREATE TABLE TB_CUST_BAK AS SELECT * FROM TB_CUST; --๋ฐ์ดํฐ์ ์๋ฃํ๊น์ง ํ๋ฒ์ ๋ค์ด๊ฐ(PK, FK ๋ณต์ฌ๋ ๋ถ๊ฐ) CREATE TABLE TB_CUST_BAK AS SELECT * FROM TB_CUST WHERE 1=0; -- TB_CUST์ ๋๊ฐ์ ํํ์ ํ ์ด๋ธ ์์ฑ (๋ฐ์ดํฐ X)

-- MERGE MERGE INTO TB_CUST_TEL USING DUAL ON ( CUST_ID = 'C0007' AND TEL_DVCD = 'ํด๋ํฐ') WHEN MATCHED THEN UPDATE SET TEL_NO = '010-7777-7777' WHEN NOT MATCHED THEN INSERT (CUST_ID, TEL_DVCD, TEL_NO) VALUES ('C0007', 'ํด๋ํฐ', '010-7777-7777'); SELECT * FROM TB_CUST_TEL;