[SQL첫걸음] 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,NOT을 테스트해보기 위해 새로운 테이블(test2) 생성 및 데이터 삽입
AND는 앞 뒤 두 조건을 모두 충족하는 경우를 찾는다.
SELECT * FROM test2 WHERE a<>0 AND b<>0;
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'술어 사용을 위한 새로운 테이블(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) (중간일치의 경우 앞뒤로)% + \% + %
=>%\%%
Author And Source
이 문제에 관하여([SQL첫걸음] 2장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@tngusl5/SQL첫걸음-2장저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)