목록DB (15)
롸?
Any, All 연산자 any : 서브쿼리의 반환값 중 최소값 보다 큰~ all : 서브쿼리의 반환값 중 최대값 보다 큰 ~ From절에서 서브쿼리 ex) 전체 평균 연봉과 최대 연봉 사이의 연봉을 받는 직원은? SELECT * FROM 직원 A, (SELECT AVG(연봉) avgs, MAX(연봉) maxs FROM 직원) B WHERE A.연봉 BETWEEN B.avgs AND B.maxs; Group by의 having절에 서브쿼리 ex) 부서별 평균 연봉 중 2번 부서의 평균 연봉보다 많은 직원? SELECT 부서번호, AVG(연봉) FROM 직원 GROUP BY 부서번호 HAVING AVG(연봉) > (SELECT AVG(연봉) FROM 직원 WHERE 부서번호=2) exists 연산자와 서브..
질의문 안에 질의문이 있는 형태, 안쪽의 질의 결과를 바깥쪽에서 참조한다. ex1) 과일상품 테이블과, 생선상품 테이블이 있다고 가정, '사과' 가격과 같은 가격의 '생선'을 출력하고자 할 때 SELECT 생선이름 FROM 생선 WHERE 생선가격 = '사과가격' - 사과 가격을 직접 입력해서 같은 가격의 생선을 출력 SELECT 과일가격 FROM 과일 WHERE 과일이름 = '사과' - 이름이 '사과'인 과일의 가격을 출력 각각 다른 1번과 2번 질의문을 합쳐서 결과를 출력할 수 있다. SELECT 생선이름 FROM 생선 WHERE 생선가격 = (SELECT 과일가격 FROM 과일 WHERE 과일이름='사과') ()안의 질의문은 사과의 가격을 리턴, 결과적으로 조건절은 생선가격=사과가격 으로 질의한 것..
Union : 구조가 일치하는 두 개 이상의 테이블 자료 합쳐 보기 Union 예시 Select Column 1, Column 2, Column 3 from Table Union Select Column 1, Column 2, Column 3 from Table; 위 테이블을 Union한 결과 Merge : 기존에 존재하는 행이 있다면 갱신되고, 존재하지 않는다면 insert 된다. Merge 예시 MERGE INTO 주로 테이블 USING 서브 테이블 ON (조건) WHEN MATCHED THEN UPDATE SET 컬럼1 = 값1 [, 컬럼2 = 값2 ...] WHEN NOT MATCHED THEN INSERT (컬럼1 [, 컬럼2 ...]) VALUES (값1 [, 값2 ...]) 참고 1. htt..
Joins 하나 이상의 테이블에서 데이터를 검색하여 하나의 테이블인 것처럼 활용하는 방법 3개의 테이블을 조인할 경우 먼저 1번,2번 테이블을 조인한 후 그 결과 테이블과 3번 테이블을 조인한다. EQUI join : 조건에서 같은 레코드를 조인(inner, outer) Non EQUIjoin : 조건에 = 이외의 연산자 사용 inner join 교집합 두 테이블 내에서 서로 일치하는 데이터를 보여준다. 한 쪽에만 있는 데이터는 무시된다. outer join 기준 테이블 값 + 조인테이블과 기준테이블의 중복된 값 어느 컬럼을 먼저 적느냐에 따라 Left, Right로 나뉜다. Left outer join의 경우 왼쪽 테이블의 모든 값과 조인할 테이블의 중복되는 값을 보여준다 기준테이블의 값과 조인테이블의..
전체조회 SELECT * FROM 테이블명 AS SELECT 칼럼명 AS 별명 FROM 테이블명 SELECT 10+5 AS 결과 (간단한 사칙연산도 가능) ASC vs DESC SELECT * FROM 테이블명 ORDER BY 칼럼명 ASC (ASC는 생략 가능) SELECT * FROM 테이블명 ORDER BY 칼럼명 SELECT * FROM 테이블명 ORDER BY 칼럼명 DESC DISTINCT SELECT DISTINCT 칼럼명 FROM 테이블명; AND vs OR 예시 조건 num=6, t_date='2020-01-23; SELECT * FROM WHERE num=6; SELECT * FROM WHERE num=6 OR t_date='2020-01-23; SELECT * FROM WHERE nu..
Index : 검색 속도를 증진시키기 위해 컬럼에 부여된 것. 기본키는 자동으로 색인이 부여된다. 레코드 수가 많은 경우, WHERE에 자주 사용되는 컬럼, JOIN에 자주 사용 되는 경우, NULL을 많이 포함한 경우에 사용하는 것이 좋다. 반면 입력, 수정, 삭제 등의 작업이 빈번한 테이블의 경우 인덱스를 자제하는 것이 좋다. 1) 인덱스 확인하기 - SHOW INDEX FROM 테이블명; 2) 인덱스 추가하기 - CREATE INDEX 인덱스명 ON 테이블명(칼럼명); - ALTER TABLE 테이블명 ADD INDEX 인덱스명(칼럼명, 칼럼명, ...); 3) 유니크 인덱스 추가하기 - CREATE UNIQUE INDEX 인덱스명 ON 테이블명(컬럼명, 컬럼명, ....); - ALTER TABL..