본문 바로가기

DataBase

(20)
[SQL] 기본 함수 문자함수 LOWER, UPPER () : 문자열을 소문자, 대문자로 반환 SELECT 'DataBase', LOWER('DataBase') FROM dual; --데이터베이스에서 제공하는 가상의 테이블 SUBSTR () : 특정 부분 문자열 반환 SELECT SUBSTR('abcdefg', 2, 4) FROM dual; -- 2번째 문자부터 4글자 반환 -- bcde SELECT SUBSTR('ABCDEFG',4) FROM DUAL; -- DEFG LENGTH () : 문자열 길이 SELECT LENGTH('12345') FROM DUAL; -- 5 LENGTHB () : 특정 데이터의 바이트 수 구하기 select lengthb('joker'), lengthb('조커') from dual; -- 결과 ..
[SQL] DDL 사용법 DDL이란 Data Definition Languaged의 약어로 데이터 정의어를 뜻한다. 데이터 정의어란 데이터베이스를 정의하는 언어이며, 데이터를 생성, 수정, 삭제하는 등의 데이터의 전체의 골격을 결정하는 역할을 하는 언어이다. 종류 create alter drop truncate 대부분 직접적으로 구조에 관한 명령어들이다. 데이터를 담는 구조는 기본적으로 table을 생각 할 수 있지만 더 많은 종류가 존재한다. table : 데이터를 저장하는 기본 저장 단위이고, 행과 열로 구성 index : 검색 속도를 향상시키기 위한 db 오브젝트 view : 테이블을 바라보는 쿼리문이 출력되는 결과(하나 이상의 테이블에 있는 데이터의 부분 집합) sequence : 일련번호 생성기(번호를 생성하는 db 오..
[DB] SQL 구문 순서, 실행 순서 구문 순서 SELECT FROM WHERE GROUT BY HAVING ORDER BY 실행 순서 FROM : 각 테이블 확인 ON : 조인 조건 확인 JOIN : 테이블 조인 WHERE : 데이터 추출 조건 확인 GROUP BY : 특정 컬럼으로 데이터 그룹화 HAVING : 그룹화 이후 데이터 추출 조건 확인 SELECT : 데이터 추출 DISTINCT : 중복 제거 ORDER BY : 데이터 정렬
[SQL] JOIN - 2 INNER JOIN 가장 많이 사용되는 JOIN 기법으로 두 개의 합쳐서 새로운 테이블을 만들고 조건에 부합하는 레코드만 반환한다. SELECT A.* FROM A INNER JOIN B ON B.n = A.n; - 3개의 테이블 합치기 SELECT A.* FROM A INNER JOIN B ON B.n = A.n INNER JOIN C ON C.n = A.n; LETF OUTER JOIN 먼저 기술된 왼쪽 테이블을 기준으로 오른쪽 테이블의 데이터를 합치며 오른쪽 테이블에 만족하는 정보가 없다면 NULL로 반환한다. SELECT A.*, B.* FROM A LEFT JOIN B ON B.n = A.n; 코드와 그림의 예시는 다르지만 좋은 예제라고 생각한다. 왼쪽 테이블의 x값과 오른쪽 테이블의 y값이 같..
[SQL] Join 데이터들을 정규화 하다보면 여러 테이블이 생기기 마련이다. 그런 데이터들을 조합하여 결과를 도출하기 위해 JOIN을 사용한다. Equi join 두 테이블에서 공통적으로 존재하는 컬럽의 값이 일치되는 행을 연결해서 결과를 생성하는 것을 equal join이라 한다. select d.department_name from employees e, departments d where e.department_id = d.department_id and e.employee_id = 110; Inner Join & Outer Join - Inner Join : 두 테이블을 조인했을때 조건에서 값이 일치하는 컬럼만 반환 select d.department_name from employees e join departme..
[SQL] CASE WHEN THEN END CASE WHEN THNE END 문법은 JAVA에 나오는 if ~ else문과 비슷하다. case 컬럼명| 표현식 when 조건식1 then 결과1 when 조건식2 then 결과2 ... else 결과 end 기능을 설명하자면, 컬럼 값이 하나씩 들어오면서 조건을 거치게 된다. 자신의 조건에 맞는 조건식과 만난다면 해당 결과 값으로 반환이 되고 모두 맞지 않다면 마지막에 else에 지정된 결과값으로 반환이 된다. SELECTNAME, NOTE, CASE NOTE WHEN NOTE>=90 THEN '1등급' WHEN NOTE = 80 THEN '2등급' WHEN NOTE = 70 THEN '3등급' WHEN NOTE = 6..
[SQL] NULL 관련 함수 NVL, ISNULL, IFNULL NVL은 오라클 문법이고, ISNULL은 MS-SQL, IFNULL은 MY-SQL 문법이다. 기능은 모두 같다. -- SQL NVL(job, 0) -- MS SQL ISNULL(salary, 0) -- MY SQL IFNULL(expr1, expr2) 모두 표현식을 두개 받은 뒤 첫번째 받은 값이 NULL이라면 두번째 받은 값을 반환하고 아니라면 그대로 첫번째 값으로 사용된다. ( 첫번째 값이 NULL이면 두번째 값 사용, NULL이 아니면 첫번째 값 사용 ) NULLIF nullif 역시 NULL과 관련된 기능으로, 두개의 값을 받아서 첫번째 값이 두번째 값과 같다면 NULL을 반환하고, 같지 않다면 첫번째 값을 반환한다. nullif('oracle','oracle)..
TOP, LIMIT, ROWNUM - 반환할 레코드 수를 지정하는 데 사용됩니다. - 수천 개의 레코드가 있는 대형 테이블에서 유용합니다. 많은 수의 레코드를 반환하면 성능에 영향을 줄 수 있습니다. 참고: 데이터 베이스에 따라 문법이 다르다. TOP = MS SQL, LIMIT = MY SQL, ROWNUM = ORACLE MS SQL - top 예제 SELECT TOP number|percent column_name(s) FROM table_name WHERE condition; top 뒤에 원하는 컬럼의 갯수 혹은 percent를 적어주면 된다. MY SQL - LIMIT 예제 SELECT column_name(s) FROM table_name WHERE condition LIMIT number; 마지막에 LIMIT를 넣어주고 원하..