오늘의 SQL공부
1. 데이터복원하기
데이터복원을 할 때 DB가 아닌 단일 파일이기에 디바이스 - 파일 경로 선택하여 데이터 복원
2. SELECT 구문 연습
select Col1, Col2 From Table name
Select * from table name
[dbo] schema이름
select * from Doit(디비명).dbo(스키마명).Table name(테이블명)
3. WHERE 구문 연습
SET STATISTICS IO ON --디스크에서 용량을 얼마나 읽는지 코드
메세지에서 확인 가능 / 페이지 수가 (논리적 읽기 2---) 로 확인 가능
SELECT (259*8)/1024 -- Output 계산됨
SELECT COUNT(*) FROM table name --table name에 대한 열을 세는 코드
Ctrl+T : 텍스트로 결과보기 / Ctrl + D 표 형태로 결과보기
SELECT * FROM TABLE NAME WHERE COL NAME < 2021 혹은 '2021-10-14'
숫자를 할 때에는 '' 붙이지 않아도 됨, 문자를 할 때에는 ''붙여야 함
날짜를 표기 할 때에는 초단위가 있을 경우에는 '2021-10-14 00:00:00' 이 필요 -- 날짜의 경우 밀리초까지 저장
3. WHERE 구문 연습 -2
SELECT * FROM TABLE NAME WHERE COL NAME BETWEEN 2022 AND 2023
SELECT * FROM TABLE NAME WHERE COL NAME >=2022 AND COL NAME <= 2023
IN = OR
SELECT * FROM TABLE NAME WHERE COL NAME = 2022 OR COL NAME = 2023
SELECT * FROM TABLE NAME
WHERE COL NAME IN (2022,2023)
SELECT * FROM TABLE NAME
WHERE COL NAME NOT IN (2022,2023)
--괄호를 사용하여 우선순위를 지정하는 것 (괄호에 있는 것이 먼저 환산)
SELECT * FROM TABLE NAME
WHERE ( COL NAME = ' ' OR COL NAME = ' ' )
AND COL NAME IN ('' , '')
3. WHERE 구문 연습 -3
ALL / SOME / ANY
SELECT * FROM TBALE NAME
WHERE COL NAME = ANY ( -- ANY 나 ALL이나 SOME을 넣어서 구문 사용할 수 있음
SELECT ' ' UNION ALL --UNION은 '' '' '' 를 다 보여주는데 각각 다른 ROW로 보여달라는 문구 (하위쿼리)
SELECT '' UNION ALL
)
--EXISTS
IF EXISTS (SELECT*FROM TABLE NAME WHERE COL NAME = ' 123')
BEGIN
SELECT 1
END
ELSE BEGIN
SELECT 2
END
--OUTPUT : 1
NULL인 것을 찾을 때에는 IS NULL로 입력해야함
4. 와일드카드 이용하기
--LIKE함수
%A : 마지막 글자가 A로 끝나는 RJATOR
A%: A라는 글자로 시작하며 뒤에 어떠한 글자가 와도 상관이 없는 문자 검색
SELECT * FROM TABLE NAME WHERE COL NAME LIKE 'A%'
--TABLE 만드는 함수 -- 새로운 테이블을 만들며 아래의 기준으로 내려오게끔 COL이 만들어짐
WITH TABLE NAME (COL NAME) AS (
SELECT 'A%BC' UNION ALL
SELECT 'A_bc' UNION ALL
)
--모든 것이 조회되는 것
SELECT * FROM TABLE NAME WHERE COL NAME LIKE '%''
--#를 제외하고 실행해 달라
SELECT * FROM TABLE NAME WHERE COL NAME LIKE '%#%%' ESCAPE "#'
5. 와일드카드 이용하기 -2
A%:A라는 글자로 시작하며 뒤에 어떠한 글자가 와도 상관이 없는 문자 검색
A__: A뒤 언더바는 자리수를 지정해서 검색
SELECT * FROM TABLE NAME WHRE COL NAME LIKE 'A[A,B,C]'
SELECT * FROM TABLE NAME WHRE COL NAME LIKE 'A[A-C]'
SELECT * FROM TABLE NAME WHRE COL NAME LIKE 'A[A-C,G, M-R]_' -- AAC세글자같은 것
SELECT * FROM TABLE NAME WHRE COL NAME LIKE 'A[C,D][^B]%W' -- B가 안들어가고 W로 끝나는 문자 검색
6. 데이터 정렬하기
SELECT * FROM TABLE NAME
WHERE COL IS NOT NULL AND COL <> ''
ORDER BY COL NAME, COL NAME -- COL NAME 1 이후 2로 정렬이 됨
ORDER BY ASC / DESC
SELECT * FROM TABLE NAME
ORDER BY COL NAME
OFFSET 1000 ROWS -- 1000번째 행을 건너뛰고 보겠음
SELECT * FROM TABLE NAME
ORDER BY COL NAME
OFFSET 1000 ROWS -- 1000번째 행을 건너뛰고 보겠음
FETCH NEXT 10 ROWS ONLY -- 10개 행만 보겠음
7. 데이터 그룹화하기
SELECT COL NAME1 COL NAME 2 FROM TABLE NAME
GROUP BY COL NAME1 NAME 2 --항상 COL NAME1, 2 를 포함해서 나열해야함
SELECT COL NAME, COUNT(*) AS COL NAME -- COL에 들어있는 행의 수를 카운트해서 옆 COL에 나타내줌
FROM TABLE NAME
GROUP BY COL NAME
ORDER BY COL NAME
SELECT COL NAME, COUNT(*) AS COL NAME
FROM TABLE NAME
GROUP BY COL NAME
HAVING COUNT(*) >= 10 -- 10개 이상의 COL을 조회해달라
ORDER BY COL NAME DESC -- 새로 만든 COL로도 ORDER BY를 사용할 수 있음
SELECT DISTINCT COL NAME
FROM TABLE NAME
DISTINCT VS GROUP BY = 동일하지만 중복 데이터를 제거하며 DISTNCT는계산은 못함
'공부이야기' 카테고리의 다른 글
SQL공부하기 4일차: WHERE (IN, ANY), FROM, CTE, UNION (1) | 2023.07.25 |
---|---|
SQL 공부하기3일차: JOIN-INNER, OUTER, CROSS, SELF (1) | 2023.07.25 |
SQL공부하기 2일차 - 데이터베이스, 테이블 생성, ALTER, CREATE, DROP, INSERT, PARENT&CHILD (1) | 2023.07.20 |