C-reate: 데이터 생성하여 저장하기
R-ead: 저장된 데이터 불러오기
U-pdate: 저장된 데이터를 변경하기
D-elete: 저장된 데이터 삭제하기
강의에서는 이중 R(ead)만을 다룬다.
데이터 불러오기를 편리하게 하는 도구
데이터 분석과 정리를 위한 기능 지원
show tables
DB에 존재하는 모든 table들의 목록을 표시.
예시 2
select * from orders
orders라는 table의 모든 field를 선택해 불러오기.
- table: excel의 sheet와 같이 특정 주제의 데이터 모음인 2차원 표.
- field: excel의 column(열)과 동일. 각 Record에 대한 개별 속성값.
- Record: excel의 row(행)와 동일. field에서 지정된 속성값을 가지고 DB에 저장되어있는 개별 데이터들.
의미의 차이는 없으나, 적절한 줄 바꿈을 통해 가독성을 늘릴 수 있다.
select * from orders where email like '%naver.com' and course_title = '웹개발 종합반' and payment_method = 'kakaopay'
이것보다는
select * from orders
where email like '%naver.com'
and course_title = '웹개발 종합반'
and payment_method = 'kakaopay'
이게 보기 좋다.
select [field명...] from [table명]
table로 부터 원하는 field의 데이터를 선택해 불러오는 구문.
'*'표시는 '모두'를 의미하므로 field명에 입력시 전체 table을 출력한다.
select * from users
users table의 모든 field의 데이터 불러오기
예시 2
select payment_method, email from orders
orders table의 데이터 중 payment_method, email field의 데이터만 불러오기
select [field명...] from [table명] where [조건문]
select가 가저올 데이터에 조건을 걸어, 해당 조건을 만족하는 데이터만 불러오게한다.
A에 field명, x에 원하는 값을 대입한다.
'A=x': A값이 x와 같을 때
'A!=x': A값이 x와 같지 않을 때
'A>=x', 'A<=x': A값이 x보다 클/작을 때
x에 들어갈 값이 문자열일 경우 반드시 작은 따옴표('')로 감싸야 한다.
그렇지 않을 경우 문자열이 아닌 field 명으로 인식하여 오류가 발생한다.
select * from users where name !='황**';
users 테이블에서 name의 값이 황**이 아닌 record의 모든 field의 값 불러오기.
여러 조건 걸기 : and, or
P와 Q에 각각의 조건문이 들어간다.
'P and Q': P와 Q가 모두 참일 때
'P or Q': P와 Q 둘중 하나가 참일 때
여러개의 and와 or를 사용할 경우 괄호를 이용해 우선순위를 정할 수 있다.예시
select updated_at from orders where (course_title !='앱개발 종합반' or created_at <='2020-07-12') and payment_method ='CARD';
orders 테이블에서 course_title 값이 앱개발 종합반이 아니거나 created_at 값이 2020-07-12 이전임을 만족하는 동시에 payment_method가 CARD인 레코드 record의 updated_at field의 값 불러오기.
A에 field명, x와 y에 각각의 값이 들어간다.
[A] between [x] and [y]
point between 10 and 20
위와 같이 입력할 경우, 조건을 만족하는 point값은 10부터 20 까지가 아닌 10 부터 19 까지 이다.
select * from orders where created_at between "2020-07-13" and "2020-07-15";
2020년 7월 13일, 2020년 7월 14일에 생성된 주문 데이터만 불러오기
포함 조건: in
in 다음에 원하는 값의 목록을 괄호로 감싸 입력한다. 원하는 field의 값이 이 목록안에 존재하는지 본다.
예시
select * from checkins where week in (1, 3);
checkins의 데이터중 week 값이 1, 3중 하나인 데이터만 불러온다.
like 뒤에 주어진 문자열 패턴을 만족하는 값들만 불러올 수 있다.
select * from users where email like '%gmail.com';
'%'는 wildcard와 같은 역할을 한다. 따라서 'email'의 문자열 값 중 앞에 무엇이 오든 상관없이 gmail.com으로 끝나는 문자열이면 조건을 만족한다.
예시 - email주소가 s 로 시작하고 gmail을 사용하는 유저의 정보만 보고 싶다
select * from users where email like 's%gmail.com';
's'와 gmail.com 사이에 무엇이 오든 s로 시작하고 gmail.com로 끝나기만 하면 조건을 만족한다.
출력할 데이터의 갯수를 제한한다. 데이터가 너무 많을 경우 본격적으로 분석, 정리하기 전 대략적인 형태를 파악할 때 사용하기 좋다.
select * from users
where email like 's%gmail.com'
limit 5
조건을 만족하는 데이터 중 5개의 데이터만 보여준다.
field에 어떤 값들이 존재하는지 볼 때, 일일히 읽을 필요 없이 중복되는 값을 제거하여 보여준다.
select distinct(name) from users;
출력될 record 대신 그 record들의 갯수를 출력한다.
select count(*) from orders
전체 주문 record 개수를 출력한다.