SQL 첫걸음: 2장

나르·2021년 1월 20일
0

RDBMS

목록 보기
3/15
post-thumbnail

예제용 데이터베이스 구축

여기에서 예제용 데이터베이스를 다운로드한다.
압축을 풀어서 "c:\USER\사용자명" 경로에 저장한다(다른 위치에 저장해도 무관)

명령 프롬프트를 실행해 cd 커맨드로 파일이 저장된 위치로 이동
mysql -uroot -p <sample.dump 를 명령해 암호를 입력하면 데이터베이스가 import 된다

하지만 바로 select를 시도하면 위와 같은 에러가 뜬다
SQL을 사용할 때는 사용할 데이터를 구체적으로 결정해 줘야 하기 때문이다

따라서 use 커맨드로 sample 데이터베이스를 선택해준다

🐬 4강 Hello World 실행하기



4-1 SELECT * FROM 실행하기

SELECT * FROM 테이블명;
=명령어 열 대상 테이블명;
=SELECT 구 + FROM 구;
SQL 명령어를 입력할 때는 space로 구분하고, 세미콜론(;)을 붙여야 실행된다

4-2 SELECT 명령 구문

  • SELECT : SQL 명령어
  • 애스터리스크(*) : "모든 열"을 의미하는 메타문자이다
  • FROM : 처리 대상 테이블 지정

4-3 예약어와 데이터베이스 객체명

데이터베이스 객체명을 만들 때 SELECT, FROM과 같은 예약어나 기존에 존재하는 객체명은 사용할 수 없으며, 대소문자를 구분하지 않는다

4-4 Hello World를 실행한 결과=테이블

SELECT 명령을 실행하면 행(레코드)와 열(컬럼/필드)로 구성된 표 형식의 데이터가 출력된다. 열에는 이름이 지정되어있고, 하나의 데이터 값이 저장되는 공간을 "셀" 이라고 부른다.

🐬 5강 테이블 구조 참조하기


5-1 DESC 명령

DESC 테이블명 명령으로 테이블에 정의되어 있는 열을 확인할 수 있다.

  • Field : 열의 이름
  • Type : 해당 열의 자료형
  • Null : NULL 사용여부를 나타내는 제약사항
  • Key : 해당 열의 "키" 지정여부
  • Default : 기본값 (생략시 적용되는 값)

5-2 자료형

  • INTEGER : 수치형, 정수값 지정 (소수점 미포함)
  • CHAR : 문자열형, 열의 최대 길이를 지정해야함(고정 길이 문자열) 빈공간은 공백으로 채움
  • VARCHAR : 문자열형, 최대 길이를 지정하면 데이터 크기에 맞춰 저장공간의 크기도 변경(가변 길이 문자열)
  • DATE : 날짜값 저장 e.g. '2021-01-20'
  • TIME : 시간 저장

🐬 6강 검색 조건 지정하기


6-1 SELECT 구에서 열 지정하기

SELECT 열1, 열2... FROM 테이블명
SELECT 구에 열명을 지정해서 열을 한정할 수 있다.

6-2 WHERE 구에서 행 지정하기

SELECT 열 FROM 테이블명 WHERE 조건식
WHERE 조건식으로 조건에 일치하는 행만 결과로 반환이 가능하다.
WHERE 구처럼 생략이 가능한 구는 있지만, SELECT - WHERE - FROM처럼 구의 순서를 바꾸는 것은 불가능하다.
조건식은 "열과 연산자, 상수로" 구성되는 식이다.

  • =, >=, <=, >, < : n=2 등..
  • <> : n<>2 (2가 아닌 값)
  • 문자열 싱글쿼트'' : '박준용'
  • 시간 콜론(:) : '2013-01-25' '10:21:00'
  • IS NULL : null값 검색은 =null이 아닌 IS NULL

🐬 7강 조건 조합하기


7-1 AND 조합 (교집합)

조건식1 AND 조건식2
좌우식 모두 참인 경우 TRUE 반환
SELECT * FROM sample24 WHERE a<>0 AND b<>0;
a열과 b열 모두 0이 아닌 행

7-2 OR 조합 (합집합)

조건식1 OR 조건식2
어느 쪽이든 하나만 참이 되면 TRUE 반환
SELECT * FROM sample24 WHERE a<>0 OR b<>0;
a열이 0이 아니거나 b열 0이 아닌 행

7-3 주의점❗❗

a가 1이거나 2인 행을 추출하고 싶을 경우
SELECT * FROM sample24 WHERE a=1 OR 2; 를 사용하면 상수 2가 항상 TRUE이기 때문에 모든 행을 반환한다.
따라서SELECT * FROM sample24 WHERE a=1 OR a=2; 라고 입력해야한다.

AND가 OR보다 우선순위가 높기 때문에
a열이 1 또는 2이고 b열이 1 또는 2인 행을 추출할 때
SELECT * FROM sample24 WHERE a=1 OR a=2 AND b=1 OR b=2; 가 아닌
SELECT * FROM sample24 WHERE (a=1 OR a=2) AND (b=1 OR b=2); 와 같이 괄호를 통해 우선순위를 변경해야 한다.

7-4 NOT 조합

NOT 조건식
조건식에 FALSE인 값을 반환
a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행 추출
SELECT * FROM sample24 WHERE NOT (a<>0 OR b<>0);

🐬 8강 패턴 매칭에 의한 검색


= 연산자로 검색하는 경우 셀의 데이터값이 완전히 동일할 때만 반환한다. 이와 다르게 "특정 문자열이 포함되어 있는" 데이터를 찾고싶을 때 사용하는 것이 "패턴 매칭(부분 검색)"이다.

8-1 LIKE로 패턴 매칭

열명 LIKE 패턴
LIKE 술어의 왼쪽에는 매칭 대상, 오른쪽에는 패턴을 문자열로 지정한다. 수치형 상수는 사용할 수 없고 %,_ 메타 문자(aka 와일드카드)가 사용 가능하다.

  • % : 임의의 문자열
  • _(underscore) : 임의의 문자 하나

전방일치
SELECT * FROM sample25 WHERE text LIKE 'SQL%';
중간일치 - %는 빈문자열과도 매칭(1행)
SELECT * FROM sample25 WHERE text LIKE '%SQL%';
후방일치
SELECT * FROM sample25 WHERE text LIKE '%SQL';

8-2 LIKE로 % 검색하기

sample25의 2행처럼 데이터 안에 메타문자(%, _)를 포함한 데이터를 검색하고 싶을 때는
WHERE text LIKE '%\%%';
처럼 \을 앞에 붙여 이스케이프 해준다.

8-3 문자열 상수 ' 의 이스케이프

상수를 검색할 때도 ''로 둘러쌓인 데이터를 검색할 때엔
WHERE text LIKE 'IT''S';
처럼 ''를 연속해서 기술하는 것으로 이스케이프 처리한다.
' 하나의 문자열 데이터를 검색할 땐 WHERE text LIKE ''''라고 입력하면 된다.

profile
💻 + ☕ = </>

0개의 댓글