[SQL 독학] SQL 기본 문법(SELECT ~ FROM ~ WHERE)&연산자

2022. 6. 5. 12:11SQL

SELECT~FROM~WHERE

가장 보편적이며 기본적인

형태로 SELECT~FROM~WHERE

한 구문으로 사용된다. SELECT의 의미

그대로 구축되어 있는 데이터베이스에서

데이터 테이블을 가져와 조회하는 것이다.

즉, '읽기' 기능이지 수정/삭제 기능이 아니다.

 

SELECT문 예제 실습

앞으로 계속 예문에서 활용할 DB (출처 : 한빛미디어 - 혼자 공부하는 SQL)

MySQL Workbench를 실행하고

아래 파일을 열어주면 사진에 보이는

DB를 생성할 수 있다. (File-Open SQL Script)

market_db.sql
0.00MB

(일일이 입력해도 OK. 시간 단축을 위해 파일 업로드)

파일 출처 : 한빛 미디어 혼자 SQL 카페 자료실

 

생성된  SQL문을 잠시 살펴보자면,

DROP DATABASE IF EXISTS

DROP DATABASE : DB를 지워라,

IF EXISTS : 만약 존재한다면,

뒤에 있는 이름을 가진 DB가.

~DB가 있다면 지우고,

없으면 그냥 넘어가라.

 

라는 뜻으로 저번 시간에 오류 발생 시

대처했던 것과 동일한 명령어이다.

DB가 이미 존재하는데 또 만들면

오류가 발생하기 때문에 필요한 작업이다.

 

해당 작업을 한 후

CREATE DATABASE ~~;

새로 DB를 생성해주고 시작하면 된다.

 

USE는 뒤에 붙은 걸 사용하겠다고

선언하는 명령어라고 생각하면 된다.

USE ~~;
CREATE TABLE AAA;

CREATE TABLE 역시 위에서

CREATE DATABASE 때와 마찬가지로

테이블을 만들겠다는 문법이다.

 

CHAR와 VARCHAR의 차이를

포함하여 다른 세세한 문법들은

이후에 학습할 예정...

 

USE

USE 데이터베이스_이름;

SELECT문을 실행하기 전에 먼저 사용할

데이터베이스를 지정 또는 변경 하는 작업이다.

참고로 MySQL Workbench를 재시작하거나

쿼리 창을 새로 열면 다시 USE를 실행해야 한다.

USE같은 것들을 예약어, 뒤에 '데·베 이름'

같은 건 사용자 정의어라고 한다.

 

USE문 예제 실습

앞으로 계속 예문에서 활용할 DB (출처 : 한빛미디어 - 혼자 공부하는 SQL)

 

 

 

위에서 앞으로 예제 풀이할 때

 

활용할 것이라고 언급한 DB 사진이다.

 

이걸 기준으로 USE를 활용한

 

쿼리문을 작성하는 연습이다.

 

 

 

 

USE market_db;
SELECT * FROM member WHERE men_name = '블랙핑크';

현재 자료는 10명뿐이라 그냥

SELECT * FROM member 까지만 해도

무리 없지만 자료가 10만, 100만개가

넘어간다고 가정하면 조건문(WHERE)을

붙여주는 것이 용이할 것이다.

 

테이블 경로 추가

USE market_db;
SELECT * FROM market_db.member WHERE men_name = '블랙핑크';

만약 다른 DB에서 member 테이블을

불러오기 위해 경로를 같이 적어줘야 할

경우에는 이와 같이 추가해 줄 수 있다.

 

특정 열만 가져오기

USE market_db;
SELECT addr, height, debut_date
FROM member
WHERE men_name = '블랙핑크';

*(모두) 가져오기 대신 열 이름을

넣어 지정해주면 되며 순서는

중요하지 않다.

입력한 순서대로 출력될 뿐.

 

열 이름 바꿔 보기

USE market_db;
SELECT height 키, debut_date "데뷔 일자", addr 주소
FROM member ;

그냥 테이블 내 열 이름 옆에

넣어주고 싶은 이름을 입력하면

되는데 띄어쓰기가 포함되어 있을

경우 "큰 따옴표"로 묶어준다.

실제 열 이름이 아니라 그냥 예쁘게

보고 싶을 때 씌우는 껍데기로 이해하기.

실제 열 이름은 여전히 height, … addr이다.


비교 연산자

결과로 참(1) 또는 거짓(0)을

반환하는 연산자로

=,<,<=,>,>=<,<>,!= 가 있다.

 

의미는 우리가 수학에서 배우는

부등호와 의미가 동일하고,

<>와 !=는 같은 의미의 연산자이다.

참고로 !=는 ≠라는 뜻이다.

 

 

관계 연산자

결과를 참(1) 또는 거짓(0)으로

반환하는 연산자로 조건들을 조합하여

복합 조건을 나타낼 수 있다.

 

대부분 뜻이 직관적이라 그냥 영어나

수학에서 쓰이는 것과 동일한 의미라고

이해하면 된다. 사전적의미보단 예시 하나

보는 게 이해가 훨씬 빠르나 혹시 몰라

간단하게만 적어 놓는다.

AND  복수의 조건을 동시에 만족 시키게 하고 싶을 때 사용.
OR  복수의 조건 중 어느 하나만 만족 시키게 하고 싶을 때 사용.
BETWEEN AND 조건문이 동일한 열에 적용될 때 활용.
IN OR를 여러번 쓰기 위해 범위를 지정해줄 때 사용.
LIKE %와 _를 사용할 때 =와 비슷한 의미로 사용됨.
% 한글, 영어, 문자 상관없고, 한 글자, 두 글자, 다섯 글자 상관없이
들어갈 수 있기 때문에 글자수를 정확히 모를 때 사용한다.
_ 언더바 하나 당 한글자이기 때문에 글자수를 알 때 사용한다.

 

비교 연산자와 관계 연산자를

같이 쓴 간단한 예문

# AND 활용
# 키가 163이상, 165이하인 멤버들의 이름과 키를 출력
SELECT men_name, height
	FROM member
        WHERE height >= 163 AND height <= 165;
    
    
    
# 위 SQL문을 BETWEEN을 활용해 다시 쓰기
SELECT men_name, height
	FROM member
        WHERE height BETWEEN 163 AND 165;
# OR 활용
# 키가 165이상 이거나 멤버 수가 6명 초과인 멤버 이름과 키를 출력
SELECT men_name, height
	FROM member
        WHERE height >= 165 OR mem_number > 6;
    
    
# OR 복수 사용
SELECT men_name, addr
	FROM member
	WHERE addr = '경기' OR addr = '전남' OR addr = '경남';


# OR 복수문을 WHERE IN 으로 활용
# 멤버의 거주지가 '경기' 이거나 '전남' 이거나 '경남'인 멤버 이름과 주소
SELECT men_name, height
	FROM member
        WHERE addr IN('경기', '전남', '경남');
# 멤버 이름이 맨 앞에 '우'가 들어가는 멤버 이름 조회 (여러글자 모를 때 - %)
# LIKE 대신 = 사용하면 안됨★
SELECT *
	FROM member
        WHERE men_name LIKE '우%';
    
# 글자 수는 알고 있을 때 언더바_ 사용
SELECT *
	FROM member
        WHERE men_name LIKE '__핑크';

The End.