목록SQLD (11)
Dende
* 서브쿼리는 WHERE(중첩), FROM(인라인), SELECT(스칼라), HAVING, ORDER BY, INSERT의 VALUES 대체, UPDATE의 SET 대체 * FROM에서 호출될 시에는 DERIVED TABLE로서 반드시 테이블 명을 ALIAS로 지정 * SELECT에서 호출될 시에는 반드시 단일값만 리턴 * 서브쿼리는 ORDER BY를 사용할 수 없다. * 부모쿼리와 분리되어도 사용될 수 있다면 비상관쿼리, 반대는 상관 쿼리
1.Delete - 데이터만 삭제 되며 테이블 용량은 줄어 들지 않는다. 또한 삭제후 잘못 삭제한 것을 되돌릴 수 있다. - TABLE이나 CLUSTER에 행이 많으면 행이 삭제될 때마다 많은 SYSTEM 자원이 소모 된다. - Commit이전에는 Rollback이 가능하다. - 롤백정보를 기록 하므로 Truncate에 비해서 느리다. - 전체 또는 일부만 삭제 가능 하다. - 삭제 행수를 반환 한다. - 데이터를 모두 Delete해도 사용했던 Storage는 Release 처리 되지 않는다. 2.Truncate - 테이블의 모든 로우를 제거하는 Truncate Table / DDL - 테이블을 최초 생성된 초기상태로 만든다. - 용량이 줄어들고, 인덱스 등도 모두 삭제 된다. - Rollback 불가능..

SELECT 절에는 GROUP BY 뒤에서 사용한 컬럼들 또는 COUNT(), MAX() 등과 같은 집계 함수만 쓸 수 있다는 규칙입니다. 이건 거꾸로 말해 GROUP BY 뒤에 쓰지 않은 컬럼 이름을 SELECT 뒤에 쓸 수는 없다는 말입니다. 그런데 GROUP BY 뒤에 쓰지 않은, 그러니까 그루핑 기준으로 사용하지 않은 컬럼명을 SELECT 절 뒤에 써서 조회하려고 하면,각 그룹의 row들 중에서 해당 컬럼의 값을 어느 row에서 가져와야할지 결정할 수가 없습니다. 예를 들어, 위 SQL 문에서 제가 그루핑 기준으로 사용하지 않은 age라는 컬럼명을 SELECT 문 뒤에 붙이면 ? 각 그룹에 속한 여러 row들에서 어떤 row의 age 컬럼의 값을 출력해야하는지 결정할 수가 없습니다. 그래서 이 S..
WHERE 절을 통해 조건에 맞는 데이터를 조회했지만 테이블에 1차적으로 존재하는 데이터 이외의 정보, 예를 들면 각 팀별로 선수가 몇 명인지, 선수들의 평균 신장과 몸무게가 얼마나 되는지, 또는 각 팀에서 가장 큰 키의 선수가 누구인지 등의 2차 가공 정보도 필요하다. GROUP BY 절은 SQL 문에서 FROM 절과 WHERE 절 뒤에 오며, 데이터들을 작은 그룹으로 분류하여 소그룹에 대한 항목별로 통계 정보를 얻을 때 추가로 사용된다. SELECT [DISTINCT] 칼럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼(Column)이나 표현식] [HAVING 그룹조건식] ; 차이점 where은 기본적인 조건절로서 우선적으로 모든 필드를 조건에 둘 수 있다. 하지만 ..