DB

[DB] SQL문 기본 문법 - select

개발 공주 2023. 6. 1. 20:04
728x90

SQL문

  • SQL은 “관계형 데이터베이스” 관리 시스템(RDBMS, Relational Database Management System)을 조작할 때 사용하는 언어이다.

  • RDBMS: 행과 열을 가지는 표 형식 데이터(2차원 데이터)를 저장하는 형태의 DB
    • 행(레코드), 열(컬럼/필드), 셀(행과 열이 만나는 부분, 하나의 데이터 값)
    • 수치형, 문자열형, 날짜시간형, NULL(값이 없는 데이터) 등의 자료형이 존재

Select 쿼리문이란

개념 

👉 쿼리(Query)문이란? 쿼리는 질의를 의미하죠. 데이터베이스에 명령을 내리는 것을 의미합니다.

여기서 Select 쿼리문은, 데이터베이스에서 '데이터를 선택해서 가져오겠다'는 의미입니다.

 

Select 쿼리문은 1) 어떤 테이블에서 2) 어떤 필드의 데이터를 가져올지 로 구성됩니다.

 

  • 테이블: 엑셀에서는 시트 이름
  • 필드: order_no, created_at, course_title, user_id, payment_method, email 각각이 필드입니다.

SELECT문 기본

기본 구문은 다음과 같다.

SELECT 조회하고-싶은-컬럼-이름 FROM 데이터베이스-이름 

쿼리 실행 순서

 

Select 쿼리문 연습

여러가지 명령어가 있다. 아래 코드에서 살펴보자...ㅎ


-- 테이블 목록을 볼수 있다.
show tables;

-- SELECT * FROM 테이블   * ==> 전체 컬럼
SELECT * from orders;

-- 해당 테이블에 속한 컬럼들을 조회
SELECT order_no, created_at, user_id, email from orders; 


-- 테이블 별칭 ex) SELECT * from 테이블 별칭
SELECT * from courses c ;
SELECT * FROM  enrolleds e ; 

-- where 조건문
-- orders에서 컬럼 payment_method 에서 kakaopay인건만 조회
SELECT * FROM orders o 
WHERE payment_method = 'kakaopay';

-- payment_method 에서 point가 5000이상인것 조회
SELECT * FROM point_users pu 
WHERE point >= 5000;

-- where 조건 두개 이상
-- and를 사용
SELECT * FROM orders o 
WHERE course_title = '앱개발 종합반' and payment_method = 'CARD';

-- where '같지 않음' 조건 걸어보기
-- course_title컬럼에서 웹개발 종합반을 제외한 데이터 조회
SELECT * FROM orders o 
WHERE course_title != '웹개발 종합반'

-- WHERE '범위' 조건 걸어보기
-- BETWEEN 'a' and 'b'
-- BETWEEN 1 and 2 숫자는 '' 생략
SELECT * FROM orders o 
WHERE created_at BETWEEN '2020-07-13' AND '2020-07-15';

-- '포함' 조건 걸어보기
-- week 컬럼에서 (a,b,c)안에 데이터를 포함한 데이터 조회(여러개 가능)
select * from checkins 
-- where week in (1, 3, 4);
where week in (1, 3);

-- '패턴' (문자열 규칙) 조건 걸어보기
-- where email like 'a%': email 필드값이 a로 시작하는 모든 데이터
-- where email like '%a' email 필드값이 a로 끝나는 모든 데이터
-- where email like '%co%' email 필드값에 co를 포함하는 모든 데이터
-- where email like 'a%o' email 필드값이 a로 시작하고 o로 끝나는 모든 데이터
SELECT * FROM users u 
WHERE email like '%daum.net';

-- limit 숫자 ==> 몇개(숫자)까지 보여준다
SELECT * FROM orders o 
WHERE payment_method = 'kakaopay'
LIMIT 5;

-- 중복 데이터는 제외하고 가져오기: Distinct
SELECT Distinct(payment_method) FROM orders o 
WHERE payment_method = 'kakaopay';

-- 몇 개인지 숫자 세보기: Count
SELECT COUNT(*) from orders o 
WHERE payment_method = 'kakaopay';

-- 범주의 통계를 내주는 Group by

-- 동일한 범주의 개수 구하기
-- ex) 결과 예시
-- 곽**	3
-- 나**	1
-- 진**	1
select 범주별로 세어주고 싶은 필드명, count(*) from 테이블명
group by 범주별로 세어주고 싶은 필드명;

-- 동일한 범주에서의 최솟값 구하기
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

-- 동일한 범주에서의 최댓값 구하기
select 범주가 담긴 필드명, max(최댓값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;

-- 동일한 범주의 평균 구하기 
-- ROUND(데이터 값, 소수점 몇번째 자리) 소수점을 반올림 해준다
select 범주가 담긴 필드명, ROUND(avg(평균값을 알고 싶은 필드명),2) from 테이블명
group by 범주가 담긴 필드명;

-- 동일한 범주의 합계 구하기
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명;


-- 깔끔한 정렬이 필요할 땐 Order by
-- 결과의 개수 오름차순으로 정렬해보기 asc생략 가능 
SELECT 컬럼, count(*) FROM 테이블
order by count(*) asc;

-- 결과의 개수 내림차순으로 정렬해보기
SELECT 컬럼, count(*) FROM 테이블
order by count(*) desc;

 


이외 문법

별칭 기능: Alias

👉 쿼리가 점점 길어지면서 종종 헷갈리는 일이 생길 수 있습니다. 그래서 SQL은 Alias라는 별칭 기능을 지원합니다.

select * from orders o
where o.course_title = '앱개발 종합반'

-- 요렇게 테이블명 뒤에 as를 붙여서 별칭을 추가하는 것도 가능하다.
select payment_method, count(*) as cnt from orders o
where o.course_title = '앱개발 종합반'
group by payment_method

'DB' 카테고리의 다른 글

[DB] 서브 쿼리  (0) 2023.06.02
[DB] Union  (0) 2023.06.02
[DB] Join(Left (outer) Join, Inner Join)  (0) 2023.06.02
[DB] mongoDB 시작하기  (0) 2023.05.18
[DB] DB 개념  (0) 2023.05.18