본 포스팅은 스파르타 코딩클럽 SQL강의를 참고하였습니다.
저번 SQL SELET 포스팅은 유튜브 무료동영상의 짧은 예시를 기반으로 작성하였는데 이번에 스파르타 코딩클럽 SQL강의듣고 실제 DB에서 사용해보면서 SQL에 익숙해 져 보고자 이렇게 포스팅을 작성한다.
이 강의에서는 DBeaver라는 프로그램으로 MySql에 접속하여 RDS에 SQL을 이용해서 데이터를 조회했는데, 나는 어짜피 워크벤치를 쓰고 있고 호스트와 엔트포인트 등 모두 가르쳐 주기때문에 워크벤치를 이용해서 SQL연습을 해 보았다.
일단 내가 원하는 스키마(schema)를 사용하기 위해서 워크벤치는 use 스키마이름
을 한번 실행해줄 필요가 있다. use 스키마이름
은 MySQL 내장 문법으로 어떤 DB에서 SQL을 실행할지 선택할 수 있다.
아직 use 스키마이름
을 실행하기 전이다. 좌측에 sparta라는 스키마가 활성화가 안 되어있지만, use 스키마이름
실행하고 나면 아래와 같이 sparta스키마가 진하게 포커싱됨을 확인할 수 있다.
이후 부터 다른 SQL을 실행해서 동작을 확인할 수 있다.
show tables
show tables
또한 MySQL 내장 문법으로 중 하나 이다. 이는 각 RDBMS마다 고유의 문법을 가지고 SQL과 같이 사용될 수 있는 문법들 이다. show tables
와 같은 내장 문법을 실행하면 아래와 같이 현재 스키마에 들어있는 테이블들의 리스트를 확인할 수 있다.
반대로 모든 RDBMS에서 사용할 수 있는 공통적인 표준 SQL을 ANSI SQL이라고 부른다.
미국국가 표준협회(ANSI)에서 SQL표준에 대해서 관리하기 시작하면서 사용된 용어로, SQL표준의 구현 방법을 규정하기 때문에 대부분의 RDBMS에서 ANSI SQL은 사용이 가능하다.
SELECT * FROM tableName
checkins 테이블의 모든 정보를 조회하였다.
SELET column1, column2, column3, ... FROM tableName
checkins테이블에서 user_id와 week, comments, likes만 뽑아왔다.
다만 user_id와 likes와 달리 week, comments에만 폰트색이 들어있는 것을 확인할 수 있다. week, comments는 앞서 말한 USE 나 SHOW tables와 같은 MySQL의 내장함수와 이름이 똑같기 때문에 폰트색이 나올 뿐이지 동작은 정상적으로 이루어지기 때문에 그대로 사용해도 무방하나, 보기 불편하다면 ''
으로 각 컬럼이름을 감싸주어도 동작시키는데 문제 없다.
where절은 select쿼리문으로 가져올 데이터에 조건을 걸어줄 수 있다.
orders 테이블에서 필요한 정보만 가져와 보자
WHERE * FROM orders WHERE payment_method = 'kakaopay'
여기서 kakaopay에 ''
를 넣어줘야하는 이유는 문자열 데이터 이기 때문이다. 앞의 orders나 payment_method는 각각 테이블과 컬럼명(필드명)을 의미하기 때문에 문자열일 필요가 없으나 kakaopay와 같이 verchar형식으로 들어간 데이터는 ''
의 문자열 처리가 필요하다.
❗❗SQL을 작성하면서 중요한 점은 나중에 조건이 여러개 추가되었을 때 문장의 내용을 구분하기 힘들기 때문에 기준을 가지고 줄을 맞추어 주어야한다. 일반적인 SQL줄맞춤은 회사마다 다르지만, 기준을 잡고 어떻게 줄을 맞춰서 보기쉽게 구분을 해 주어야 한다는 것을 유념해야 한다.
SELECT * FROM point_users WHERE point >= 5000
위와같이 where절 안에서 > < = != 과 같은 연산자를 통해 조건 컨트롤 또한 가능한다.
select * from orders where course_title = '앱개발 종합반' AND payment_method = 'CARD'
Where절에 추가적인 조건을 걸기 위해서 AND나 OR절을 이용할 수 있다.
06-27일 추가
😀위 연습을 시작하기 전에 어떤 테이블에서 어떤 데이터를 뽑아오기가 아닌 그냥 어떤 데이터를 뽑아오기가 목표였다. 왜?? 어떤 테이블에서 뽑아와야하는지 알지 못하면 FROM을 작성할 수 없는데?
😀생각해보면 일을 할 때 어떤 테이블에 어떤 데이터가 있다고 일일히 다 가르쳐주지 않는다. 직접 눈으로 확인하고 아 이곳에 있으니까 여기서 빼오면 되겠구나! 직접 생각하고 행동해야한다.
select * from point_users
로 point필드가 존재하는지 확인select * from users
로 name필드가 존재하는지 확인=
로 해결같지 않음(부등)
범위 조건
포함 조건
패턴조건
제한조건