[SQL첫걸음] 2장

전수현·2021년 9월 10일
0

SQL

목록 보기
1/2

4강 Hello World 실행하기

SELECT * FROM [테이블명];

SELECT문의 연습을 위해 테이블(test)생성 및 데이터 삽입

SELECT

test라는 테이블에 특정 컬럼을 검색하는 경우 SELECT 뒤에 컬럼 명을 넣어준다.

SELECT no,name FROM test;

6강 검색 조건 지정하기

WHERE

조건을 지정하여 데이터를 검색하는 방법
SELECT 열1,열2 FROM 테이블명 WHERE 조건식

no column에서 2의 값을 가지고있는 row를 검색할 때 (=사용)

SELECT * FROM test WHERE no=2;

no column에서 2의 값을 가지고있지 않은 row를 검색할 때 (<>사용)

SELECT * FROM test WHERE no<>2;

숫자가 아닌 문자열 혹은 날짜형식의 경우 싱글쿼트('')로 감싸줘야 한다.

SELECT * FROM test WHERE name = 'name3';

NULL값이 있는 경우 IS NULL이라고 써줘야 검색이 가능하다.

NULL값 추출 위해서 데이터를 넣은 모습

SELECT * FROM test WHERE birthday IS NULL;

반대로 NULL값이 없는 row를 검색하고 싶을때는 IS NOT NULL을 사용

SELECT * FROM test WHERE birthday IS NOT NULL;

7강 조건 조합하기

AND,OR,NOT을 테스트해보기 위해 새로운 테이블(test2) 생성 및 데이터 삽입

AND

AND는 앞 뒤 두 조건을 모두 충족하는 경우를 찾는다.

SELECT * FROM test2 WHERE a<>0 AND b<>0;

OR

OR은 앞 뒤 두 조건 중 한가지의 경우만 충족하여도 검색한다.

SELECT * FROM test2 WHERE a<>0 OR b<>0;

*AND,OR 함께 사용할 시 주의점!

SELECT * FROM test2 WHERE a=1 OR a=2 AND b=1 OR b=2;

a = 1 OR 2
AND
b = 1 OR 2

를 생각하며 위와같이 검색하였지만 결과는 기대와 다르게 나왔다.
이유는 우선순위에 있다. AND가 OR보다 우선적으로 계산되게 된다.
위처럼 AND 와 OR이 같이 쓰이게 되면 프로그램은 아래와 같이 검색한다.

a = 1
a = 2 AND b = 1
b = 2

이를 명렁어에서 표현해보면 아래와 같이 표현한 것 과 같다고 보면 된다.

WHERE a=1 OR (a=2 AND b=1) OR b=2;

의도한 바와 다르게 위처럼 표현이 된다면 ()를 통해서 우선적으로 계산되어야 할 부분을 표시해주면 된다.

SELECT * FROM test2 WHERE (a=1 OR a=2) AND (b=1 OR b=2);

NOT

NOT은 검색조건에 반대되는 항목에 대해 출력해준다.

NOT을 사용하지 않았을 때

SELECT * FROM test2 WHERE (a<>0 OR b<>0);

같은 조건에 NOT을 적용했을 때

SELECT * FROM test2 WHERE NOT (a<>0 OR b<>0);

8강 패턴 매칭에 의한 검색

'LIKE'술어 사용을 위한 새로운 테이블(test3) 생성 및 데이터 삽입.

'LIKE'술어를 사용하면 문자열의 일부분을 비교하는 '부분 검색'을 할 수 있다.
'LIKE'술어에는 %_(메타문자)를 사용하여 패턴을 정의해준다.

% = 임의의 문자열을 의미
_ = 임의의 문자 하나를 의미

위 row 중에서 'SQL'이라는 문자를 검색어로 사용할 때는 %를 사용해준다.

3가지의 경우가 있으며,
SQL%(전방일치) = row중에 가장 앞에 SQL로 시작되는 경우
%SQL%(중간일치) = row중 중간에 SQL이 위치하는 경우
%SQL(후방일치) = row에서 가장 마지막에 SQL로 끝나는 경우

SQL%(전방일치)

SELECT * FROM test3 WHERE text LIKE 'SQL%';

%SQL%(중간일치)

SELECT * FROM test3 WHERE text LIKE '%SQL%';

%SQL(후방일치)
=row상에 SQL로 끝나는 경우가 없기 때문에 Empty set으로 출력된다.

SELECT * FROM test3 WHERE text LIKE '%SQL';

메타문자 %,_ 를 row 상에서 검색하는 경우
\% or \_ 처럼 앞에 역슬래시를 붙혀준다.
ex) (중간일치의 경우 앞뒤로) % + \% + % => %\%%

profile
안녕하세요 :)

0개의 댓글