SQL(1)(select, from, limit, where, Comparison Operators, Logical Operators)
https://mode.com/sql-tutorial
위의 사이트에서 SQL에 대해 공부할 예정이다.
SQL이란?
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터를 관리하기 위해 설계된 프로그래밍 언어이다. SQL에는 사용자가 데이터를 읽고, 조작하고, 변경할 수 있는 다양한 기능이 있다.
데이터베이스란?
데이터의 조직 모음.
테이블은 스키마로 구성된다. 모드에서는 업로드 한 사용자를 중심으로 테이블을 구성하여 각 사용자가 자신의 스키마를 갖도록 한다.
SELECT 및 FROM
select는 보려는 열, 해당 열이 from 있는 테이블을 식별한다.
1 2 3 4 | SELECT year, month, west FROM tutorial.us_housing_units | cs |
아래와 같이 지정한 테이블의 year, month, west 세가지의 열을 볼 수 있다.
1 2 | SELECT * FROM tutorial.us_housing_units | cs |
다음과 같이 작성하면 지정한 테이블의 모든 열을 볼 수 있다.
연습문제
tutorial.us_housing_units테이블의 *을 사용하지 않고 모든 열을 선택하는 쿼리를 작성
1 2 3 4 5 6 7 8 | SELECT year, month, month_name, west, midwest, south, northeast FROM tutorial.us_housing_units | cs |
결과는 위의 *를 사용했을 때와 동일하다.
쿼리를 실행하면?
위와 같이 쿼리를 실행하면 테이블을 얻는다. 그러나 그 테이블은 데이터베이스에 영구적으로 저장되지 않는다. 또한 데이터베이스의 테이블을 변경하지 않는다. select명령문은 기본 테이블에서 아무것도 변경하지 않는다.
서식 규칙
select 및 from 명령이 대문자로 표시되어 있지만 소문자로 입력해도 상관없다. 또한, 하나의 공백, 여러 공백 또는 줄 바꿈을 동일한 것으로 취급한다.
열이름
열이름이나 테이블이름에 공백 대신 _를 사용한다. 열 이름에 공백을 넣으려면 항상 ""로 해당 열을 참조해야하기 때문이다.
다음과 같이 열 이름을 바꿀 수 있다.
1 2 | SELECT west AS "West Region" FROM tutorial.us_housing_units | cs |
1 2 3 | SELECT west AS West_Region, south AS South_Region FROM tutorial.us_housing_units | cs |
위와 같이 하면 대문자로 인식이 되지 않는다.
연습문제
모든 열을 선택하는 쿼리를 작성하고 첫 글자가 대문자가되도록 이름을 바꾼다.
1 2 3 4 5 6 7 8 | SELECT year as "Year", month as "Month", month_name as "Month_name", west as "West", midwest as "Midwest", south as "South", northeast as "Northeast" FROM tutorial.us_housing_units | cs |
LIMIT
많은 쿼리의 목적은 단순히 특정 테이블이 어떻게 보이는지 확인하는 것이다. 테이터의 처음 몇 행을 스캔하여 관심있는 필드와 해당 필드를 조작 할 방법에 대한 아이디어를 얻을 수 있다. 매우 큰 테이블을 limit을 사용하지 않으면 모든 결과가 표시될 때까지 오랜시간 동안 기다려야한다.
다음 구문은 데이터를 100개로 제한한다.
1 2 3 | SELECT * FROM tutorial.us_housing_units LIMIT 100 | cs |
연습문제
limit명령을 사용하여 결과 집합을 15개 행으로만 제한하는 쿼리를 작성
1 2 3 | SELECT * FROM tutorial.us_housing_units LIMIT 15 | cs |
WHERE
where은 다음과 같이 조건을 사용하여 데이터를 필터링하는 것이다.
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month = 1 | cs |
Comparison Operators
수치 데이터
예를 들어, 서부지역에서 30,000개 이상의 주택을 생산 한 행만 반환할 때
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE west > 30 | cs |
연습문제
서부지역은 한 달에 50,000개 보다 더 많은 주택을 생산 한 적이 있습니까?
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE west > 50 | cs |
남부 지역에서 한 달에 20,000개 이하의 주택을 생산 한 적이 있습니까?
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE south <= 20 | cs |
숫자가 아닌 데이터
SQL은 ''를 사용하여 열 값을 참조
1월이 아닌 행
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month_name != 'January' | cs |
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month_name > 'January' | cs |
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month_name > 'J' | cs |
연습문제
월 이름이 February인 행만 표시하는 쿼리를 작성
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month_name = 'February' | cs |
month_name가 "N"으로 시작하거나 이전의 문자로 시작하는 행만 표시하는 쿼리
1 2 3 | SELECT * FROM tutorial.us_housing_units WHERE month_name < 'O' | cs |
SQL 산술
연산자를 사용하여 연산 수행을 할 수 있다. 그러나 SQL에서는 주어진 행의 값에 대한 열에 대해서만 산술을 수행할 수 있다.
다음 예는 각 행의 south와 west열에 있는 항목의 합계를 표시하는 열을 생성
1 2 3 4 5 6 | SELECT year, month, west, south, west + south AS south_plus_west FROM tutorial.us_housing_units | cs |
열 이름과 실제 숫자를 포함하여 산술 함수를 연결할 수 있다.
1 2 3 4 5 6 | SELECT year, month, west, south, west + south - 4 * year AS nonsense_column FROM tutorial.us_housing_units | cs |
산술 함수를 포함하는 열은 기본 데이터에있는 정보를 수정하여 생성되기 때문에 "파생 열"이라고 한다.
연습문제
별도의 열에 4개 지역의 합계를 계산하는 쿼리
1 2 3 | SELECT *, south + west + midwest + northeast as total FROM tutorial.us_housing_units | cs |
중서부 및 북동부 지역을 합친것보다 서부 지역에서 더 많은 단위가 생산 된 모든 행을 반환하는 쿼리
1 2 3 | SELECT * FROM tutorial.us_housing_units where (midwest + northeast) < west | cs |
각 지역이 대표하는 미국에서 완공 된 모든 주택의 비율을 계산하는 쿼리, 2000년 이후의 결과만 반환
1 2 3 4 5 6 7 8 9 10 11 12 | SELECT year, month, west, south, midwest, northeast, west/(west + south + midwest + northeast)*100 as west_percentages, south/(west + south + midwest + northeast)*100 as south_percentages, midwest/(west + south + midwest + northeast)*100 as midwest_percentages, northeast/(west + south + midwest + northeast)*100 as northeast_percentages FROM tutorial.us_housing_units WHERE year >= 2000 | cs |
Logical Operators
논리 연산자를 사용하면 하나의 쿼리에서 여러 비교 연산자를 사용할 수 있다.
- LIKE : 정확한 값 대신 유사한 값을 일치시킬 수 있다.
- IN : 포함 할 값 목록을 지정할 수 있다.
- BETWEEN : 특정 범위 내의 행만 선택할 수 있다.
- IS NULL : 주어진 열에 데이터가 없는 행을 선택할 수 있다.
- AND : 두 가지 조건을 만족하는 행만 선택할 수 있다.
- OR : 두 조건 중 하나를 만족하는 행을 선택할 수 있다.
- NOT : 특정 조건과 일치하지 않는 행을 선택할 수 있다.


















댓글
댓글 쓰기