[MYSQL]10월 21일 mysql 기본 명령어 , 연산, 비교
*mysql 기본 명령어.
테이블 모든 레코드 조회.
select * from emp; ←table 명이 emp
여기서 empno 과 ename 만 조회하기.
select empno, ename from emp;
ename 컬럼과 sal 컬럼과 sal 컬럼에 12가 곱해진값 출력.
select ename, sal, sal * 12 from emp;
여기서 가능한 산술연산은 + - * / 4가지 다 된다.
emp 테이블에서 어떤 직원(이름)이 어떤 직무를 가지며 어느 부서에서 일하는고 커미션이 얼마고 1년동안 총 받는돈이 얼마인지 출력 해보면!
select ename, job, deptno, comm, sal * 12 + comm from emp;
그런데 여기서 보면 emp 테이블에서 레코드를 총 출력했을때 보았듯이 커미션이 있는 사람들은 계산이 잘나와있고 커미션값이 null 이었던 사람들은 총 연봉이 null로 나온다.
**null 이란값은 존재 자체가 없는것이기 때문에 연산이 안된다.(산술연산뿐 아니라 비교연산도 안됨.)
그래서 null은 위험한 값이고, not null 제약조건을 통해서 아예 안들어오게 제약을 걸기도 한다.
위에 결과값처럼 않나오게 null을 0으로 처주고 계산하는 명령어는.
select ename, job, deptno, comm, sal * 12 + ifnull(comm,0) from emp;
*ifnull({column name},value)
예를들어서 deptno 만 나오도록 출력해보자.
출력값에서 중복을 제거하는 키워드는 distinct
select distinct deptno from emp;
distinct 를 넣고 출력해보면
**다양한 where 절
급여가 1300 이상인 사람들만 출력해보자.
select * from emp where sal > 1300;
활용가능한 연산
= 같다 >= 크거나 같다 <= 작거나 같다
< 작다 > 크다
!= , <>, ^= 다르다
**여러가지 조건을 만족시키는 조건절을 만들기위한 논리 연산 에는 and, or, not 이있다.
부서번호가 10이면서 직무가 manager 인 직원 출력.
select * from emp where deptno = 10 and job = 'manager';
부서번호가 10거나 직무가 manager 인 직원 출력.
select * from emp where deptno = 10 or job = 'manager';
부서번호가 10이 아닌 직원들 출력.
select * from emp where not deptno = 10;
이제 범위를 지정해서 출력해보자.
sal 이 1000보다 크고 1500 보다 작은 직원들을 출력해보자.
select * from emp where sal = 1000 and sal = 1500; <<이런방법이 있고
select * from emp where sal between 1000 and 1500; <<이런 범위검색 조건을 위한 키워드 between 이있다.
between 사용법 : {컬럼명} between {val1} and {val2}
comm 이 300 이거나 500이거나 1400인 직원 출력.
select * from emp where comm = 300 or comm = 500 or comm = 1400; << or연산자 또는
select * from emp where comm in (300,500,1400); <<in 연산자 활용
in 연산자 사용법 : {column} in (val1,val2,val3,...valn)
column값이 오른쪽 괄호 안의 값중 하나와 일치하면 true.
이름이 F로 시작하는 직원
select * from emp where ename like 'f%'
이름이 N으로 끝나는 직원
select * from emp where ename like '%n'
이름에 M이 포함된 직원
select * from emp where ename like '%m%'
*와일드 카드 % : 0개 이상의 문자.
*와일드 카드 _ : 1개의 문자.
*null값은 아까 봤듯이 비교, 산술 연산이 모두 안되니까,
null 인지 비교하기 위한 연산 is.
select * from emp where comm is null; << 이런식으로.
* order by sal → sal값에 크기에 따라 정렬 (기본 오름차순)
order by {column name} [sort]
select * from emp order by sal;
내림차순으로 정렬 하고 싶다면
select * from emp order by sal desc;