기본 개념 주로 데이터베이스에 없는 테이블이 필요할 때 사용된다. 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다. 일반 CTE 기본 형식 WITH [CTE_테이블 이름] (열 이름 1, 열 이름2, ...) AS ( ) SELECT [열 이름] FROM [CTE_테이블 이름 ]; UNION 문으로 CTE 결합 WITH cte_stock_price (date, symbol, price) AS ( SELECT date, symbol, [close] FROM stock WHERE date >= '2021-01-01' AND date = '2021-02-01' AND date = '2021-01-01' AND date = '2021-02-01' AND date = '2021-01-01' A..
기본 개념 정의 쿼리 안의 또다른 쿼리를 말한다. 서브 쿼리는 조인하지 않은 상태에서 다른 테이블과 일치하는 행을 찾거나, 조인 결과를 다시 조인할 때 사용할 수 있다. 특징 반드시 소괄호로 감싸 사용한다. 주 쿼리를 실행하기 전에 1번만 실행한다. 비교 연산자에서 서브 쿼리를 사용하는 경우 서브 쿼리를 오른쪽에 기술해야 한다. 내부에는 정렬 구문인 ORDER BY 문을 사용할 수 없다. 활용 WHERE 문에서 서브 쿼리 사용 WHERE 문에 사용하는 서브 쿼리를 중첩 서브 쿼리(nested subquery) 라고 한다. 중첩 서브 쿼리는 조건문의 일부로 사용한다. 서브 쿼리를 비교연산자 [ =, =, ] 와 함께 사용할 때는 반드시 서브커리의 반환 결과가 1건 이하여야 한다. 만약 서브 쿼리를 반환 결..

기능 테이블 A와 B가 있을 때, 테이블 A의 열과, 테이블 B의의 정보를 포함해 검색할 수 있게 해준다. Q: "테이블을 만들 때 처음부터 하나로 만들면 되지 않을까? 왜 번거롭게 테이블을 나누지?" 충분히 의문이 들 수 있는 요소이다. 하지만 테이블을 하나로 만들면 테이블 열에 데이터가 중복적으로 저장되는 문제가 발생한다. 앞에서 언급했듯이 데이터를 중복 저장하면 저장 공간의 문제와, 중복되는 데이터를 수정 할 경우 해당 데이터를 모두 찾아서 수정해야하는 번거로움이 생긴다. 이에 대한 자세한 설명은 '데이터 모델링' , '정규화' 에 설명되어 있다. 내부 조인 기본 개념 조인키에 해당하는 각 테이블의 열값을 비교해 조건에 맞는 값을 검색한다. (가장 많이 사용하는 JOIN이기도 하다.) 내부 조인의 ..
숫자형 자료형 데이터 크기 (1 byte) 숫자 범위 설명 bit 1 0,1,NULL * boolean 형식으로 true or false으로 사용 tinyint 1 0 ~ 255 * 정수 데이터를 사용하는 정확한 숫자 자료형 * 숫자를 저장할 때 많이 사용 smallint 2 - 32.767 ~ 32,767 int 4 - (2^32) ~ (2^31) -1 bigint 8 - (2^63) ~ (2^63) -1 decimal(p,s) 5 ~ 17 - (10^38) +1 ~ (10^38) -1 * 전체 자릿수와 소수 자릿수가 고정된 숫자 * 최대 38자리 사용 numberic(p,s) 5 ~ 17 - (10^38) +1 ~ (10^38) -1 float(n) 4 ~ 8 - 1.79E+308 ~ 1.79E+30..

데이터 베이스 데이터베이스 생성 (CREATE) CREATE DATABASE [데이터베이스 이름] 예시 CREATE DATABASE MyDB 데이터베이스 선택 (USE) USE MyDB; 또는 상단의 드롭다운 메뉴에서 'MyDB'를 찾아서 선택해도 된다. 데이터베이스 삭제 (DROP) DROP DATABESE MyDB 만약 쿼리가 잘 실행 됐음에도 해당 데이터베이스가 사라지지 않는다면 '새로 고침'을 해보자. 테이블 테이블 생성 (CREATE) CREATE TABLE 테이블 이름 ( 열 1 자료형, 열 2 자료형, ... ) 예시 CREATE TABLE myTable( col_1 INT, col_2 NVARCHAR(50), col_3 DATETIME ) 테이블 삭제 (DROP) *현재 삭제하여는 테이블이..
기능 데이터를 검색할 때, 공통 그룹의 정보를 확인 및 필터링할 때 사용한다. 기본 형식 SELECT [열] FROM [테이블] WHERE [열] = [조건값] GROUP BY [열] HAVING [열] = [조건값] GROUP BY: 데이터를 그룹화하는 구문 [열]: 그룹화 기준의 열 이름을 지정, 1개 이상 그룹화 가능 [HAVING]: WHERE 와 비슷한 기능을 하며 그룹화된 결과의 필터링 기능을 수행 [조건값]: HAVING 필터에 적용할 조건값을 입력 활용 1. GROUP BY 문으로 데이터를 그룹화 1.1. 1개 열 기준으로 그룹화 SELECT sector FROM nasdaq_company GROUP BY sector 해석: 나스닥 회사의 'sector' 를 검색한다. 'sector'를 그..
기능 와일드카드로 지정한 패턴과 일치하는 문자열, 날짜, 시간 등을 검색할 수 있다. 기본 형식 SELECT [열] FROM [테이블] WHERE [열] LIKE [조건값] [열]: 조건을 적용할 열 이름을 입력한다. [조건값]: 조건값을 입력한다. 활용 1. LIKE 와 %로 특정 문자열을 포함하는 문자열 검색하기 % 사용법 A%: A로 시작하는 모든 문자열 %A: A로 끝나는 모든 문자열 %A%: A를 포함하는 모든 문자열 1.1. 'symbol' 열에서 A를 포함하는 문자열 검색 SELECT * FROM nasdaq_company WHERE symbol LIKE '%A%' 해석: 나스닥 회사의 모든 열을 검색한다. 'symbol' 열 데이터에 'A'를 포함하는 문자를 검색한다. 1.2. 'symbo..
기능 검색된 데이터를 정렬하는 데 사용한다. 이 기능은 원하는 데이터를 검색한 후 사용하는 문법이 되겠다. 기본 형식 SELECT [열] FROM [테이블] WHERE [열] = [조건값] ORDER BY [열] [ASC, DESC] [열]: 정렬할 열 이름을 입력한다. [ASC, DESC]: 정렬 기준에 따라 오름차순, 내림차순을 정의한다. 활용 예제 1개 열 기준으로 정렬 SELECT * FROM nasdaq_company ORDER BY symbol 해석: 나스닥 회사의 모든 열을 검색한다. 'symbol' 열을 기준으로 정렬한다. 2개 열 기준으로 정렬 SELECT * FROM nasdaq_company WHERE sector IS NOT NULL AND sector '' ORDER BY sect..
기능 원하는 조건에 맞는 행을 검색할 수 있다. 기본 형식 SELECT [열] FROM [테이블] WHERE [열] = [조건값] [열]: 조건을 적용할 열을 입력 =*: 조건을 적용할 연산자 종류를 입력 [조건값]: 사용자 조건값을 입력 활용 예제 비교 연산자*를 사용하여 검색하기 SELECT * FROM nasadaq_company WHERE symbol = 'MSFT' 해석: 'nasdaq_company'의 전체를 검색한다. 이중에 'symbol'이 'MSFT'인 것만 검색한다. 논리연산자*를 하용하여 검색하기 SELECT * FROM nasadaq_company WHERE ipo_year BETWEEN 2010 AND 2011 해석: 'nasdaq_company'의 전체를 검색한다. 이중에 'ip..
기능 테이블 (Table) 내의 데이터를 검색할 때 사용한다. 기본 형식 SELECT [열] FROM [테이블] SELECT: 데이터 검색 구문 [열] 검색하려는 데이터 열을 입력 FROM: 데이터를 가져올 테이블을 정하는 구문 [테이블]: 데이터가 저장된 테이블 이름을 입력 활용 예제 본 예제는 "Do it! SQL 입문 저서의 예제 코드를 사용했습니다. 1개의 열(column) 검색하기 SELECT symbol FROM nasdaq_company 해석: 'nasdaq_company'의 'symbol' 열을 검색한다. 2개 이상의 열(column) 검색하기 SELECT symbol, company_name FROM nasdaq_company 해석: 'nasdaq_company'의 'symbol'과 'c..