테이블 전체목록조회, 테이블구조조회, WHERE(조건문)절
테이블 전체 목록조회
내가 어떠한 테이블을 가지고 있는 지 모를때 아래 명령어를 날리면 몇개의 테이블을 가지고 있는지 알려준다
1 | SQL> select * |
테이블 구조조회
위에서 파악된 테이블 전체목록중에 구조 보고싶은 테이블이있다면 아래 명령어를 입력하면된다.
describe 테이블명
이지만 실무에선 줄여서 desc 테이블명
명령어를 사용한다.
1 | SQL> desc 테이블명 |
WHERE(조건문)절
where 컬럼명 = 리터럴값
숫자
employees테이블에 salary가 3500인 직원들의 last_name을 출력하는 쿼리.1
2
3SQL> select last_name
SQL> from employees
SQL> where salary = 3500;문자(대소문자 주의!)
employees테이블에 last_name이 Bell인 직원의 last_name과 연봉을 출력하는 쿼리.
리터럴값은 대소문자를 구분하기때문에 Bell로 저장된 직원을 bell이나 BELL로 찾으면no row selected
가 뜬다.
따라서 대소문자를 주의해야한다!
모든 데이터가 소문자인지 대문자인지 intcap형태인지 헷갈리므로 이때 사용하는 대소문자변환함수가 있다.
1 | SQL> select last_name, salary |
where between a AND b
a는 b보다 항상 작은 값을 주고
b는 a보다 항상 큰 값을 입력해야한다.
a와b에는 숫자에만 들어갈 수있을까?
Nope!
날짜도 순서가 있고 문자에도 순서가있다!
- 숫자
employees테이블에 연봉 2500에서 3000사이를 받는 직원의 last_name과 salary를 출력하는 쿼리.
1 | SQL> select last_name, salary |
- 날짜 : 오래된날짜부터 최신순으로
날짜는 사람마다 국가마다 다르게 쓰기때문에 순서가 정해져있다.
날짜는 DAY 두자리-MONTH두자리-YEAR두자리로 사용한다.
날짜순서 : DD-MON-RR
employees테이블에서 입사일이 2004년 1월 1일부터 2004년 1월 31일까지인 직원의 last_name과hire_date를 출력하는 쿼리.
1 | SQL> select last_name, hire_date |
- 문자 : 알파벳순서 기준으로
알파벳순서기준으로 Bell부터 Fay사이에 알파벳이 있는 모든 직원의 employee_id와 last_name을 출력하는 쿼리.
1 | SQL> select employee_id, last_name |
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 | SQL> select employee_id, last_name, manager_id |
이와 동일한 결과가 나오는 쿼리는 아래와 같다.
or가 약간 헷갈릴수있지만 매니저ID가 100,101,201인 걸 다 포함하는 것이란걸 유의하자.
1 | SQL> select employee_id, last_name, manager_id |
where 컬럼명 like ‘’ 비교연산자
like비교연산자는 우변에 패턴이 와야한다.
대소문자구분되니 대소문자 작성에 유의하자!
% : 자리에는 문자가 아예 없거나 또는 여러개여도 된다는 의미.
_ : 앞자리에 반드시 무언가가 와야한다는 의미.
a시작하는 문자열 찾기
a로 시작되는 문자열을 찾고싶을때like 'a%'
로 쿼리를 보내면 된다.- abc => 조건일치 (a로 시작해서)
- a => 조건일치 (a로 시작해서)
- baaaa => 조건불일치 (a로 시작하지않아서)
- bsc =>조건불일치
a가 포함된 문자열 찾기
a가 포함되는 문자열을 찾고싶을때like '%a%'
로 쿼리를 보내면 된다.- abc => 조건일치
- a => 조건일치
- baaaa => 조건일치
- bsc =>조건불일치
a로 끝나는 문자열 찾기
a로 끝나는 문자열을 찾고싶을때like '%a'
로 쿼리를 보내면 된다.- abc => 조건불일치
- a => 조건일치
- baaaa => 조건일치
- bsc =>조건불일치
두번째문자가 a인 문자열 찾기
두번째문자가 a인 문자열을 찾고싶을땐like '_a%'
(언더바1개)로 쿼리를 보내면 된다.- abc => 조건불일치
- a => 조건불일치
- baaaa => 조건일치
- bsc =>조건불일치
끝에서 세번째문자가 a인 문자열 찾기
끝에서 세번째문자가 a인 문자열을 찾고싶을땐like '%a__'
(언더바2개)로 쿼리를 보내면 된다.- abc => 조건일치
- a => 조건불일치
- baaaa => 조건일치
- bsc =>조건불일치
employees테이블에서 last_name의 두번째 문자가 소문자 o인 직원의 last_name를 출력하는 쿼리.
1 | SQL> select last_name |
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 | SQL> select employee_id, last_name |
WHERE(조건문)절 부정
where조건절의 부정은 not을 적어주면 된다.