SQL

justyoon·2023년 3월 2일
0

SQL

목록 보기
1/1
post-thumbnail

SQL = Structured Query Language

SQL이 뭔가요?

SQL (업계에서는 "sequel" 및 "SQL"로 같은 의미로 발음함)은 코더가 관계형 데이터베이스에서 정보를 찾거나 변경하거나 처리할 수 있도록 하는 쿼리 언어입니다. SQL의 유용성과 배우기 쉬운 문법은 SQL이 백엔드 개발자와 데이터 과학자를 위한 표준 언어로 오랫동안 자리 잡은 이유입니다. 쿼리 언어는 PHP와 같은 스크립팅 언어와 함께 사용하여 동적 웹 페이지를 만들 수도 있습니다.

왜 SQL을 배워야 할까요?

데이터 처리 또는 분석(예: 백엔드 프로그래밍, 데이터 과학, 사이버 보안 등)과 관련이 있는 직업을 추구하는 경우 SQL을 배워야 합니다. 앞에서 언급했듯이 SQL은 관계형 데이터베이스와 상호 작용하는 데 사용되는 표준 쿼리 언어입니다. 이 기본 기술이 없으면 관련 업무를 수행하기도, 고용주를 찾기도 어렵습니다.

결국 오늘날의 직업 시장에서 데이터를 다루는 방법을 아는 것은 선택 사항이 아닙니다. 모든 산업 분야의 기업은 데이터 분석이 제공하는 통찰력에 점점 더 의존하고 있습니다. Technavio의 최근 보고서에 따르면 빅 데이터 시장은 2020년에서 2024년 사이에 1,425억 달러 규모로 성장할 것으로 예상됩니다. SQL을 아는 것은 꿈의 직업을 얻는 것과 잃는 것 사이의 차이를 만들 수 있습니다.

C R U D

C (Create)
R (Read)
U (Update)
D (Delete)

ex)
Create = PUT with a new URI 
or
Create = POST to a base URI returning a newly created URI

Read   = GET
Update = PUT with an existing URI
Delete = DELETE

Query

Means `Commands CRUD to the Database(DB)`

Select statement = query?

Means 'Select and import data' from the database

The Select statement consists of 
1) 'which table' and 2) 'which column data to import'.

Where clause

Means 'conditioning the data' to be imported into the Select query statement.

공백

If the data you are looking for is a string, not a column or table,
use this to make the query aware of the data.

!=

'웹개발 종합반'을 제외하고 orders 데이터 전부 보겠다

select * from orders
where course_title != '웹개발 종합반'

Between

범위
2020년 7월 13일, 14일의 orders 데이터만 보겠다

  • 15일이 안되는 이유 = 시간을 명시하지 않으면 15일 00시00분00초로 인식
select * from orders
where created_at between '2020-07-13' and '2020-07-15'

In

포함
1, 3주차 사람들의 'comment' 데이터만 보겠다

select * from checkins 
where week in (1, 3);

Like

문자열 규칙
daum email만 사용하는 유저를 보겠다
select * from users where email like '%daum.net';

  • 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로 끝나는 모든 데이터

Limit

데이터 갯수를 제한해 지정된 값만큼의 데이터만 보는 문법?

ex) 카카오페이로 지불한 주문 5개만 보여줘
select * from orders where payment_method = "kakaopay" limit 5;

Distinct

테이블의 모든 데이터가 아닌 뚜렷하게 찾으려는 필드 데이터?가 있을때 쓰는 문법?

ex) orders 테이블의 결제수단만 바로 보여줘
select distinct(payment_method) from orders;

Count

숫자 세는 문법
근데 나는 좀 다르게 쿼리문을 짰는데 결과값이 신기하게 똑같았음.

ex) orders 테이블에 데이터가 몇 개 들어있는지 보여줘

select count(*) from orders 답안
select COUNT('DATA') from orders 내코드

둘다 결과 값이 같다. 

신기하네

응용

ex) 스파르타 회원 분들의 성(family name)씨가 몇개인지 보여줘

SELECT COUNT(DISTINCT(name)) from users
혼자서 고민하다가 괄호 여닫으면서 찾아냄.

고민의 흔적들

문제를 만날 때 마다 꼭 혼자 고민하는 시간 가지기

계속 퀴즈~

Q1) 성이 남씨인 유저의 이메일만 추출하기

내가 찾아낸 답

select DISTINCT(email) from users
WHERE name = "남**"

정답

select email from users
where name LIKE "남**"

결과값은 동일

Q2) Gmail을 사용하는 2020/07/12~13에 가입한 유저를 추출하기    

내가 찾아낸 답 = 정답
SELECT * FROM users where created_at BETWEEN "2020-07-12" and "2020-07-14" and email LIKE '%gmail.com'

Q3) Gmail을 사용하는 2020/07/12~13에 가입한 유저의 수를 세기
내가 찾아낸 답 = 정답
SELECT COUNT(*)from users where created_at BETWEEN "2020-07-12" and "2020-07-14" and email LIKE '%gmail.com'

count()안에 * 써야하는거 까먹고 해맸다

문제

Q) naver 이메일을 사용하면서, 웹개발 종합반을 신청했고 결제는 kakaopay로 이뤄진 주문데이터 추출하기
내가 찾아낸 답 = 정답
SELECT * FROM orders WHERE email like '%naver.com' and course_title = '웹개발 종합반' and payment_method = 'kakaopay'

회고

이번 SQL은 '웹개발 종합반' 때와는 다르게 강의를 먼저 보는게 아니라 자료의 텍스트를 보면서 시간을 많이 가져봤다.
결론만 말하면 진도는 조금 느려도 문제를 생각 할 시간을 여유있게 가질 수 있어서 응용 문제가 생각보다 어렵지 않았다.
앞으로도 이런 방식으로 계속 해야겠다.

profile
with gratitude, optimism is sustainable

0개의 댓글