5 min read

SQL 첫걸음 2장

4강: Hello World 실행하기

1. ‘SELECT * FROM 테이블명’ 실행

SELECT * FROM SAMPLE21;

중간에 띄어쓰기를 생략하면 에러가 발생해서 실행할 수 없다.

2. SELECT 명령 구문

SELECT 명령으로 데이터베이스의 데이터를 읽을 수 있다. 이 명령을 ‘질의’나 ‘쿼리’라고 부른다. *는 모든 열을 의미하는 메타문자다. FROM은 처리 대상 테이블을 지정하는 키워드다.

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

SELECT와 FROM은 예약어다. 데이터베이스에는 테이블 외에 다양한 데이터를 저장하거나 관맇하는 ‘어떤 것’을 만들 수 있다. 이것을 ‘데이터베이스 객체’라고 부른다. 데이터베이스 객체는 이름을 붙여 관리한다. 데이터베이스 객체명은 예약어와 동일한 이름을 사용할 수 없다. SQL은 대소문자 구별하지 않는다.

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

SELECT 명령문을 실행하면 표 형식의 데이터가 출력된다. 각 행과 열이 만나는 부분을 ‘셀’이라고 부르고 있다. 데이터는 자료형으로 분류할 수 있고, 열은 하나의 자료형만 가질 수 있다.

수치형: 숫자로만 이루어져 있는 데이터

문자열형: 임의의 문자로 구성된 데이터

날짜시간형: 날짜와 시각을 나타내는 데이터

5. 값이 없는 데이터=NULL

NULL은 특별한 데이터 값으로 아무것도 저장되어 있지 않은 상태를 의미한다.

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

1.DESC 명령

DESC 테이블명;

DESC 명령으로 테이블에 어떤 열이 정의되어 있는지 파악할 수 있다. (DESC는 SQL 명령어가 아니다) 각 열이 어떤 데이터 형태를 가지고 있는지 알 수 있다.

2. 자료형

열에서 가장 중요한 요소는 ‘자료형’이다.

  • Interger 형

수치형의 하나로 정수값을 정할 수 있는 자료형이다.

  • Char 형

문자열형의 하나로 문자열을 저장할 수 있는 자료형이다. 열의 최대 길이를 지정할 수 있다. var(10)은 최대 10문자로 지정할 수 있다는 뜻이고, 그 이상으로는 저장할 수 없다. ‘고정 길이 문자열’ 자료형라고도 부른다. 이렇게 되면 고정길이보다 짧게 저장되면, 공백으로 나머지를 채우고 저장한다. 이렇게 되면 쓸데없는 용량을 차지하는 것이기 때문에 추천하지 않는다.

  • VarChar 형

VARCHAR형은 저장할 문자열의 길이에 맞춰 저장공간을 가변적으로 사용해서 저장한다. 이것도 char과 마찬가지로 최대 길이를 지정할 수 있다. 그러나 길이에 따라 저장공간의 크기도 달라진다. 따라서 ‘가변 길이 문자열’ 자료형이라고 부른다.

  • Date 형

날짜값을 지정할 수 있는 자료형이다.

  • Time 형

시간을 저장할 수 있는 자료형이다.

6강: 검색 조건 지정하기

SELECT 열1, 열2,.. FROM 테이블명 WHERE 조건식

1. SELECT 구에서 열 지정하기

SELECT 열1, 열2,... FROM 테이블명
  • 을 쓰면 모든 열을 볼 수 있고, 위와 같이 열을 지정해서 쓸 수 있다. 열 지정 순서는 임의로 지정할 수 있다. 결과는 열을 지정한 순서대로 볼 수 있다. 동일한 열을 중복해서 사용해도 괜찮다.

2. WHERE 구에서 행 지정하기

행이 열보다 더 많을 가능성이 매우 높다. 여기서 우리가 필요한 행만 뽑기 위해서 Where 구를 사용한다. WHERE 구는 FROM 구 뒤에 표기한다. 예약어 WHERE 뒤에 검색 조건을 쓰면, 조건에 맞는 행만 추출할 수 있다.

SELECT 열 FROM 테이블명 WHERE 조건식
  • 구의 순서와 생략

SQL에서는 구의 순서가 정해져 있어 바꿔적을 수 없다.

  • WHERE 구

조건식은 ‘열의 연산자, 상수로 구성된 식’이다.

EX)
SELECT * FROM SAMPLE WHERE NO=2;

이런식으로 조건식을 사용해야된다.

  • 조건식

=,<,> 등으로 조건에 맞는 식을 써주면 된다.(<>는 값이 서로 다른 경우 참이 되는 조건이다)

3. 문자열형의 상수

EX)
SELECT * FROM SAMPLE WHERE NAME='JACK';

문자열형을 비교하고 싶은 경우에는 “(싱글쿼트)를 사용해줘야 한다. 날짜시간형도 마찬가지로 싱글쿼트로 감싸줘야한다. 연월일은 -, 시각은 :로 나눠준다.

4. NULL 값 검색

NULL값을 검색할 때는 IS NULL을 사용해줘야한다.

EX)
SELECT * FROM SAMPLE WHERE BIRTHDAY IS NULL;

이것과 반대의 결과를 원하면 IS NOT NULL을 사용해주면 된다.

7강: 조건 조합하기

조건식1 AND 조건식2
조건식1 OR 조건식2
NOT 조건식

1. AND로 조합하기

AND는 논리 연산자의 하나로 좌우에 항목이 필요한 이항 연산자가 된다. 좌우의 식이 모두 참일 경우 참을 반환한다.

조건식1 AND 조건식2
EX)
SELECT * FROM SAMPLE WHERE A<>0 AND B<>0;

AND 논리 연산자로 교집합을 계산할 수 있다. 논리곱을 계산하는 논리 연산자다.

2. OR로 조합하기

‘어느 쪽이든 한쪽이 참인 경우에 참이 된다’라고 할 때 OR 논리 연산자를 사용한다. 한쪽만 만족되면 참이다.

조건식1 OR 조건식2
EX)
SELECT * FROM SAMPLE WHERE A<>0 OR B<>0;

OR 연산 조건을 만족하는 행을 집합으로 표현하면, 합집합을 계산할 수 있다. 논리합을 계산하는 논리 연산자다.

3. AND와 OR을 사용할 경우 주의할 점

옳지 않은 예)
SELECT * FROM SAMPLE WHERE NO=1 OR 2;
옳은 예)
SELECT * FROM SAMPLE WHERE NO=1 OR NO=2;
  • AND와 OR를 조합해 사용하기
EX)
SELECT * FROM SAMPLE WHERE A=1 OR A=2 AND B=1 OR B=2;
  • 연산자 우선순위

AND가 OR보다 우선순위가 높다.

EX)
SELECT * FROM SAMPLE WHERE (A=1 OR A=2) AND (B=1 OR B=2);

위의 예제처럼 하면 or 연산자가 먼저 계산되고 그 후에 and 연산자가 사용된다.

4. NOT으로 조합

NOT 조건식

NOT 연산자는 오른쪽에만 항목을 지정하는 ‘단항 연산자다’. 오른쪽에 지정한 조건식의 반대 값을 반환한다. 주로 복수의 조건식에 대해 ‘~아닌’,’~외에’ 등의 조건을 지정할 경우 사용한다.

EX)
SELECT * FROM SAMPLE WHERE NOT(A<>0 OR B<>0);

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

열 LIKE 패턴

= 연산자로 검색하는 경우 셀의 데이터값이 완전히 동일한지를 비교한다. ‘패턴 매칭’의 경우 어떤 특정 단어나 문장을 포함되어 있는지 확인하고 싶을 때 사용한다.

1. LIKE로 패턴 매칭하기

LIKE 술어를 사용하면 열 값이 부분적으로 맞는 경우에도 참이 된다. 수치형 상수는 지정할 수 없다. 패턴을 정의할 때 메타문자를 사용한다(%_). 임의의 문자 또는 문자열에 매치하는 부분을 지정하기 위해 쓰이는 특수 문자다. %는 임의의 문자열을 의미하고, _는 임의의 문자 하나를 의미한다.

EX)
SELECT * FROM SAMPLE WHERE TEXT(열 이름) LIKE 'SQL%';

SQL 문자열을 포함하는 행을 패턴 매칭으로 검색한 것이다. 이렇게 하면 SQL이 포함된 결과값만 나올 것이다.(전방일치) 그러나 이런식으로 하면 SQL로 시작하는 문장만 추출된다. 따라서 SQL이 포함된 모든 문장을 추출하고 싶다면 다음 예제처럼 사용해야된다.(중간 일치)

SELECT * FROM SAMPLE WHERE TEXT LIKE '%SQL%';

예제에는 없지만 %SQL로 지정하면 후방일치가 된다.

2. LIKE로 %를 검색하기

SQL에서는 %을 메타문자로 지정했기 때문에, 따로 %를 찾기 위해서는 ‘이스케이프’라는 방법을 사용해야된다. ‘\%‘로 이스케이프 처리해서 찾아주면 된다.

EX)
SELECT * FROM SAMPLE WHERE TEXT LIKE '%\%%';

3. 문자열 상수 ‘의 이스케이프

it's->'it''s'

이런식으로 처리할 수 있다.