공부이야기

SQL공부하기 1일차 - WHERE, COUNT, 와일드카드, GROUP BY, ORDER BY

해피밀:D 2023. 7. 20. 16:30

오늘의 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는계산은 못함 

 

 

 

 

 

 

 

 

반응형