테이블 전체목록조회, 테이블구조조회, WHERE(조건문)절

테이블 전체목록조회, 테이블구조조회, WHERE(조건문)절

테이블 전체 목록조회

내가 어떠한 테이블을 가지고 있는 지 모를때 아래 명령어를 날리면 몇개의 테이블을 가지고 있는지 알려준다

1
2
SQL> select *
SQL> from tab;




테이블 구조조회

위에서 파악된 테이블 전체목록중에 구조 보고싶은 테이블이있다면 아래 명령어를 입력하면된다.

describe 테이블명이지만 실무에선 줄여서 desc 테이블명 명령어를 사용한다.

1
SQL> desc 테이블명

1번과 2번 예시이미지




WHERE(조건문)절

WHERE(조건문) 쿼리종류

where 컬럼명 = 리터럴값

  1. 숫자
    employees테이블에 salary가 3500인 직원들의 last_name을 출력하는 쿼리.

    1
    2
    3
    SQL> select last_name
    SQL> from employees
    SQL> where salary = 3500;
  2. 문자(대소문자 주의!)
    employees테이블에 last_name이 Bell인 직원의 last_name과 연봉을 출력하는 쿼리.
    리터럴값은 대소문자를 구분하기때문에 Bell로 저장된 직원을 bell이나 BELL로 찾으면 no row selected가 뜬다.
    따라서 대소문자를 주의해야한다!
    모든 데이터가 소문자인지 대문자인지 intcap형태인지 헷갈리므로 이때 사용하는 대소문자변환함수가 있다.

1
2
3
SQL> select last_name, salary
SQL> from employees
SQL> where last_name = 'Bell';

where between a AND b

a는 b보다 항상 작은 값을 주고
b는 a보다 항상 큰 값을 입력해야한다.

a와b에는 숫자에만 들어갈 수있을까?

Nope!

날짜도 순서가 있고 문자에도 순서가있다!

  1. 숫자

employees테이블에 연봉 2500에서 3000사이를 받는 직원의 last_name과 salary를 출력하는 쿼리.

1
2
3
SQL> select last_name, salary
SQL> from employees
SQL> where salary between 2500 and 3000;
  1. 날짜 : 오래된날짜부터 최신순으로

날짜는 사람마다 국가마다 다르게 쓰기때문에 순서가 정해져있다.
날짜는 DAY 두자리-MONTH두자리-YEAR두자리로 사용한다.

날짜순서 : DD-MON-RR

employees테이블에서 입사일이 2004년 1월 1일부터 2004년 1월 31일까지인 직원의 last_name과hire_date를 출력하는 쿼리.

1
2
3
SQL> select last_name, hire_date
SQL> from employees
SQL> where hire_date between '01-JAN-04' and '31-JAN-04';
  1. 문자 : 알파벳순서 기준으로

알파벳순서기준으로 Bell부터 Fay사이에 알파벳이 있는 모든 직원의 employee_id와 last_name을 출력하는 쿼리.

1
2
3
SQL> select employee_id, last_name
SQL> from employees
SQL> where last_name between 'Bell' and 'Fay';

이름between출력값

where 컬럼명 in (a,b,c)

a,b,c에는 숫자가능하고 문자도 가능하다.
문자쓸때는 꼭 ('a','b','c')를 붙여서 사용하면된다.

where 컬럼명 in (a,b,c)는 &&(앤드)연산자처럼생각하면된다.
a,b,c를 다 포함하는 걸 출력하는 쿼리이다.

where 컬럼명 in (a,b,c)where 컬럼명 = a or 컬럼명 = b or 컬럼명 = c와 동일하다
or가 약간 헷갈릴수있지만 a,b,c를 다~ 포함하는 것이란걸 유의하자.

employees테이블에서 manager_id가 100이거나 101이거나 201인 직원의 employee_id, last_name, manager_id 를 출력하는 쿼리.

1
2
3
SQL> select employee_id, last_name, manager_id
SQL> from employees
SQL> where manager_id in (100, 101, 201);

이와 동일한 결과가 나오는 쿼리는 아래와 같다.
or가 약간 헷갈릴수있지만 매니저ID가 100,101,201인 걸 다 포함하는 것이란걸 유의하자.

1
2
3
SQL> select employee_id, last_name, manager_id
SQL> from employees
SQL> where manager_id = 100 or manager_id = 101, manager_id = 201);

where 컬럼명 like ‘’ 비교연산자

like비교연산자는 우변에 패턴이 와야한다.
대소문자구분되니 대소문자 작성에 유의하자!

% : 자리에는 문자가 아예 없거나 또는 여러개여도 된다는 의미.
_ : 앞자리에 반드시 무언가가 와야한다는 의미.

  1. a시작하는 문자열 찾기
    a로 시작되는 문자열을 찾고싶을때 like 'a%'로 쿼리를 보내면 된다.

    • abc => 조건일치 (a로 시작해서)
    • a => 조건일치 (a로 시작해서)
    • baaaa => 조건불일치 (a로 시작하지않아서)
    • bsc =>조건불일치
  2. a가 포함된 문자열 찾기
    a가 포함되는 문자열을 찾고싶을때 like '%a%'로 쿼리를 보내면 된다.

    • abc => 조건일치
    • a => 조건일치
    • baaaa => 조건일치
    • bsc =>조건불일치
  3. a로 끝나는 문자열 찾기
    a로 끝나는 문자열을 찾고싶을때 like '%a'로 쿼리를 보내면 된다.

    • abc => 조건불일치
    • a => 조건일치
    • baaaa => 조건일치
    • bsc =>조건불일치
  4. 두번째문자가 a인 문자열 찾기
    두번째문자가 a인 문자열을 찾고싶을땐 like '_a%'(언더바1개)로 쿼리를 보내면 된다.

    • abc => 조건불일치
    • a => 조건불일치
    • baaaa => 조건일치
    • bsc =>조건불일치
  5. 끝에서 세번째문자가 a인 문자열 찾기
    끝에서 세번째문자가 a인 문자열을 찾고싶을땐 like '%a__'(언더바2개)로 쿼리를 보내면 된다.

    • abc => 조건일치
    • a => 조건불일치
    • baaaa => 조건일치
    • bsc =>조건불일치

employees테이블에서 last_name의 두번째 문자가 소문자 o인 직원의 last_name를 출력하는 쿼리.

1
2
3
SQL> select last_name
SQL> from employees
SQL> where last_name like '_o%';

5. where 컬럼명 is null

따라서 아래 4가지로 NULL값을 가진 컬럼을 출력할수있을까?

  • where 컬럼명 = null
  • where 컬럼명 = ‘null’
  • where 컬럼명 = ‘Null’
  • where 컬럼명 = ‘NULL’

정답은 NOPE!

싹 다 틀렸다.

NULL은 특수한 값이다.
따라서 일반 사칙연산자(=등)으로는 비교를 할 수 없다.
NULL은 특수한 값이때문에 자체 연산자가 따로 있다.
그것이 바로 IS NULL이다. 대소문자 구분은 안해도 된다.

employees테이블에서 manager_id가 null인 직원(즉, 대표이사)의 employee_id, last_name를 출력하는 쿼리.

1
2
3
SQL> select employee_id, last_name
SQL> from employees
SQL> where manager_id is null;

참고링크 : where절 쿼리에 조건주기




WHERE(조건문)절 부정

where조건절의 부정은 not을 적어주면 된다.

연산자의 종류