목록STUDY (37)
체다의 기록
JOIN 두 개 이상의 테이블을 연결 또는 결합해 데이터를 출력 PK나 FK값의 연관에 의해 JOIN 성립 PK, FK 관계가 없어도 논리적인 값들의 연관으로 JOIN 성립 가능 한 SQL에서 여러 테이블을 조인할 수 있지만, SQL이 처리할 땐 두 개의 집합 간에서만 JOIN을 수행함 -> 그래서 AND로 계속 묶어야 함 Equi JOIN (동등 조인, 이퀄 조인) '=' 연산자로 하는 조인, 그 외 비교연산자를 사용할 경우는 모두 Non-Equi 두 테이블 간 칼럼값들이 서로 정확하게 일치하는 경우에만 사용 --WHERE절 방법-- SELECT ta1.칼럼명, ta2.칼럼명, FROM table1 AS ta1, table2 AS ta2 WHERE ta1.칼럼A = ta2.칼럼B; --ON절 방법-- ..
ORDER BY절 (중요) ORDER BY에는 GROUP BY 칼럼이나 SELECT의 칼럼만이 올 수 있다. 숫자형 오름차순 -> 작은 값부터 출력 날짜형 오름차순 -> 빠른 날부터 출력 [Oracle] NULL값을 가장 큰 값으로 간주 [SQL server] NULL값을 가장 작은 값으로 간주 만약 ORDER BY 1, 2라면 1번 칼럼 기준으로 ASC한 후 2번 칼럼 기준으로 ASC한다 SELECT A, B, C FROM TABLE1 ORDER BY 2, 3 SELECT문의 2번째로 먼저 정렬 후 3번째로 정렬 즉, B로 ASC 후 C로 ASC함 => SELECT에 A만 있는데 ORDER BY 2 이러면 에러 ORDER BY에 CASE를 적용한 예시 ID 100 100 200 200 200 999 9..
집계함수 여러 행들로 구성된 그룹당 하나의 결과를 돌려주는 "다중행 함수" GROUP BY절은 행들을 소그룹화한다 SELECT / HAVING / ORDER BY 절에서 사용 가능 집계함수명 (ALL | DISTINCT 칼럼) : ALL이 기본값 주로 숫자형에서 사용 -> MIN, MAX, COUNT는 문자, 날짜도 적용 가능 집계 함수 함수 설명 COUNT(*) NULL값을 포함한 행의 수를 출력한다 COUNT(표현식) 표현식의 값이 NULL값인 것을 제외한 행의 수를 출력 SUM([DISTINCT | ALL] 표현식) 표현식의 NULL값을 제외한 합계를 출력 AVG([DISTINCT | ALL] 표현식) 표현식의 NULL값을 제외한 평균을 출력 MAX([DISTINCT | ALL] 표현식) 표현식의 ..
단일행 함수 vs. 다중행 함수 단일행 함수 내장함수 중 파라미터가 하나~여러 개인 함수 (SUM, AVG 이런건 다중행) 추출되는 각 행마다 작업을 수행 각 행마다 하나의 결과를 반환 SELECT, WHERE, ORDER By, Update의 Set 절에서 사용 가능 데이터 타입 변경 가능 중첩해서 사용 가능 다중행 함수 여러 개의 행이 입력, 하나의 값 변환 그룹 (집계) 함수가 다중 행 함수 SUM, AVG, MAX, MIN, COUNT,.... 단일행 함수 문자형 함수 => DB는 인덱스가 항상 1부터 문자형 함수 함수 설명 LOWER('SQL Expert') 'sql expert' UPPER('SQL Expert') 'SQL EXPERT' ASCII('A') 65 Oracle: CHR(65) S..
WHERE절 자신이 원하는 데이터만 골라 수행할 수 있도록 하는 구문 WHERE절에 조건이 없는 FTS(Full Table Scan) 문장은 SQL 튜닝 1차 검토 대상 FTS가 무조건 나쁜 건 아님 -> 병렬 처리를 이용해 유용하게 사용하는 경우도 있음 연산자 종류 비교 연산자 = : 같음 > : 큼 >= : 크거나 같음 < : 작음 : 크지 않다 SQL 연산 Between a AND b : a와 b 사이 (a, b 포함) IN(list): List 중 하나와 일치 하나라도 일치하면 TRUE, 없으면 FALSE Like '비교문자열' : 비교문자열을 포함 % : 0개이상 문자열 _ : 1개 단일문자 IS NULL : NULL값 NULL값이면 TRUE 아니면 FALSE (NULL인 것만 찾기) + NUL..
TCL 논리적인 작업 단위를 묶어 DML에 의해 조작된 결과를 작업 단위별로 제어 Commit, Rollback 등이 해당 일부에서는 DCL로 분류하기도 한다 트랜잭션 데이터를 조작하기 위한 하나의 논리적인 작업 단위 밀접히 관련되어 분리될 수 없는 한개 이상의 DB 조작을 가리킴 하나 이상의 SQL 문장이 포함됨 분할할 수 없는 최소단위이므로 전부 적용하거나 전부 취소해야 함 트랜잭션의 특징 특징 설명 원자성 (Atomicity) 트랜잭션의 연산은 모두 성공하거나 모두 실패해야 한다 일관성 (Consistency) 트랜잭션 실행 전 DB에 이상이 없다면 실행 후에도 일관되게 이상이 없어야 한다 고립성 (Isolation) 트랜잭션 실행 중 다른 트랜잭션의 영향을 받아서는 안 된다 지속성 (Durabil..
DML 호스트 프로그램 속에 삽입되어 사용 -> 데이터 부속어 (Data Sub Language)라고도 함 Procedural DML (절차적 데이터 조작어) : 초급언어니까 다 알려줘야 함 사용자가 무슨 데이터 (what) 원하고 어떻게 (how) 접근해 처리할 것인지 명시해야 함 Nonprocedural DML (비절차적 데이터 조작어) : 고급언어니까 어떻게 하는지 알려줄 필요 x 사용자가 무슨 데이터 (what) 원하는지만 명세하고 어떻게 (how) 접근할 것인지는 x 사용자가 원하는 데이터만 선언하기 떄문에 선언적 언어 (declarative language)라고도 함 1. INSERT 테이블에 데이터를 입력하는 명령어 주의사항: 데이터가 문자형일 경우 ' ' (single quotation)으..
DDL 스키마, 도메인, 테이블, 뷰, 인덱스를 정의/변경/제거할 때 사용 auto commit이 되기 때문에 DDL이 수행되면 ROLLBACK해도 데이터 COMMIT이 된다. 1. CREATE 테이블을 생성하기 위한 명령어 CREATE TABLE 테이블명( 컬럼명1 데이터 타입 (DEFAULT/NULL 여부), 컬럼명2 데이터 타입 (DEFAULT/NULL 여부), ... ); 테이블 생성 시 반드시 지켜야 할 규칙 테이블명은 고유해야 한다 한 테이블 내에서 칼럼명은 고유해야 한다 칼럼명 뒤에 데이터 유형과 데이터 크기가 명시되어야 한다 칼럼에 대한 정의는 괄호() 안에 기술한다 각 컬럼들은 콤마(,)로 구분된다 테이블명과 컬럼명은 숫자로 시작될 수 없다 마지막은 세미콜론(;)으로 끝난다 에러를 발생시..