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 |