데이터를 베이스화 해서 사용하면 효율적으로 정보를 저장하기 위해 여러 개의 테이블로 나누어 정보들을 저장하게 됩니다. 나뉜 테이블을 조합하여 정보를 조회하기 위해 JOIN을 사용합니다. ✔ INNER JOIN 두 테이블에서 ON을 통한 조건절을 통해 특정 RECORD만 조회를 합니다. MEMBER 와 NOTICE 테이블을 예로 들면 아래와 같이 작성가능합니다. SELECT * FROM MEMBER INNER JOIN NOTICE ON MEMBER.ID=NOTICE.WRITER_ID; MEMBER.ID 와 NOTICE.WRIDER_ID 가 같은 정보를 가리키므로 양쪽에 동일한 ID가 있을 때 조회를 합니다. ✔ OUTER JOIN INNER 와 달리 OUTER은 두 집합이 가리키는 벤다이어그램이 있을 때,..
SELECT 절은 다음과 같은 순서로 작성되어야 합니다. SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY 작성되는 순서와 다르게 명령을 처리하는 순서는 SELECT가 맨 뒤로 간 순서대로 처리 됩니다. FROM, WHERE, GROUP BY, HAVING, ORDER BY, SELECT 만약 회원별 조회수를 조회하면서 조회수가 2 미만인 레코드만 확인하는 쿼리는 다음과 같이 작성할 수 있습니다. SELECT SUM(HIT) FROM NOTICE WHERE SUM(HIT)
SELECT를 사용하여 결과집합을 조회하게 되면 만들지 않은 ROWNUM이 자동으로 생기게 됩니다. 왼쪽에 있는 빨간색 사각형이 ROWNUM에 해당하는 부분입니다. SELECT * FROM NOTICE; 상위 5개의 결과만 보기 위해서 다음과 같은 SQL을 사용할 수 있습니다. SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 1 AND 5; 6번째부터 10번째를 조회하려면 위 내용을 응용해 다음과 같이 작성하면 된다고 생각할 수 있습니다. SELECT * FROM NOTICE WHERE ROWNUM BETWEEN 6 AND 10; 하지만 아무것도 출력되지 않았습니다. 왜 이런 현상이 발생할까요? ROWNUM은 결과집합을 만든 후 하나하나 넘버링 하는 것이 아니기 때문입니다. S..
✔ CHARACTER SQL에서는 기본 데이터 형식은 CHARACTER입니다. 크게 4가지로 구분하여 사용할 수 있습니다. 1-1. CHAR 길이가 고정된 문자열을 저장할 때 사용합니다. 사용하지 않는 공간은 반환하지 않고 그대로 사용하므로 고정된 데이터 길이의 형식을 저장하기에 적합합니다. EX) 생년월일, 전화번호 다음은 전화번호를 저장하기 위한 PHONE COLUMN을 선언한 예시입니다. PHONE CHAR(13); -- 000-0000-0000 , 총 13바이트를 저장할 수 있다. 1-2 VARCHAR2 VARCHAR2는 가변길이를 저장하기에 적합합니다. 괄호안에 적는 숫자는 최대 길이를 나타냅니다. 사용하지 않는 공간에 대해서는 반환을 하게 됩니다. SQL은 데이터를 구분자로 구분을 하게 되는데..
트랜젝션은 업무를 처리하기 위한 개념적인 실행단위입니다. 예를 들어 여러 UPDATE이 모여 계좌이체라는 하나의 트랜젝션을 만들 수 있는 것입니다. 트랜젝션을 안전하게 처리하기 위해서는 여러 SQL들이 임시공간에서 테스트되어야 하며, 이 과정에서 다른 세션이 개입해서는 안됩니다. [사진 1] [사진 2] 사진 1과 2는 같은 데이터베이스와 같은 계정을 사용하지만 접속하는 환경이 달라 다른 세션으로 나뉜 상태입니다. 서로 다른 세션이므로 SELECT * FROM MEMBER; 을 실행하게 되면 다른 결과가 나오게 됩니다. 사진 1에서 INSERT한 정보들을 COMMIT하기 전까지는 임시공간에서 테스트 되어 다른 세션에 노출되지 않습니다. [사진 3] 첫 번째 세션에서 COMMIT을 하게 되면 다른 사용자에..
Listener refused the connection with the following error : ORA-12505, TNS:listener does not currently know of SID given in connection descriptor. 와 같은 에러를 만나게 된다면 Listener에 해당 SID 정보가 없다는 뜻입니다. Listener가 설치된 경로에 가서 드래그한 부분을 추가적으로 넣게 되면 해결됩니다. (SID_DESC = (SID_NAME = XE) (GLOBAL_DBNAME = XE) (ORACLE_HOME = @설치경로@) ) 본인의 설치경로에 맞게 넣은 후, Listener을 재시작하면 해결 됩니다.
✔ INSERT 테이블에 데이터를 넣는 SQL입니다. 기본형식은 다음과 같습니다. INSERT INTO VALUES MEMBER 테이블의 모든 COLUMN에 값을 넣으려면 다음과 같이 작성해야합니다 INSERT INTO MEMBER VALUES('A','B','C',.....) 하지만 회원가입때도 필수로 요구하는 정보도 있지만 그렇지 않은 정보도 있습니다. 특정 COLUMN만 넣으려면 다음과 같이 작성하면 됩니다. 이때 나머지 부분에는 null이 들어가게 됩니다. INSERT INTO MEMBER(ID,PWD) VALUES('DEVBELLY','111') ✔ SELECT 테이블의 데이터를 조회하는 SQL 입니다. 기본형식은 다음과 같습니다. SELECT * FROM MEMBER; -- 에스터리스크를 사용..
✔ CREATE 사용하게 될 데이터 형식을 정의하는 것. 다른 언어에서 구조체, 클래스와 비슷한 개념입니다. CREATE TABLE MEMBER( ID VARCHAR2(50), -- COLUMN이름, 데이터 형식 PWD VARCHAR2(50), NAME VARCHAR2(50), GENDER VARCHAR2(50), AGE NUMBER, BIRTHDAY VARCHAR2(50), PHONE VARCHAR2(50), REGDATE DATE ); MEMBER 라는 이름의 TABLE을 정의 하는 예시입니다. 일반적인 프로그래밍 언어에서는 데이터 형식 뒤에 변수명을 정의하지만 SQL에서는 반대로 적습니다. ✔ ALTER 테이블의 구조를 변경하기 위해 사용합니다. ALTER TABLE MEMBER MODIFY ID ..
- Total
- Today
- Yesterday
- Segment tree
- Suffix Array
- 펜윅트리
- bfs
- spring boot
- 2-SAT
- string
- 세그먼트트리
- knapsack
- hld
- greedy
- sorting
- dijkstra
- 동적계획법
- 스위핑
- SCC
- kmp
- 이분매칭
- DP
- union find
- spring
- Fenwick
- dfs
- 이분탐색
- 좌표압축
- 트라이
- Oracle
- 정렬
- sweeping
- implementation
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |