2.MySql(scott)-기본문법- DML ⑴ 데이터 조회 (SELECT) 및 연산자

JungSik Heo·2024년 12월 15일
0

MySQL

목록 보기
13/33

1.SELECT ==> 테이블 내의 데이터를 조회할 때 사용한다 <<실행순서>>

  [기본형식]
  SELECT 컬럼명1, 컬럼명2.....					.5
  FROM 테이블명					       	        .1
  WHERE 조건절							.2		
  GROUP BY 칼럼명						.3
  HAVING 조건절 (GROUP묶은 다음에 조건 줄 때	)		.4
  ORDER BY 칼럼명[ASC|DESC] => 오름차순 혹은 내림차순		.6

1. 전체 데이터 검색

  • SELECT 뒤에 * 을 입력하면 모든 데이터를 출력할 수 있다.

select * from dept;

select * from emp;

emp 테이블에서 사원번호, 사원이름, 직업을 출력해보세요.

SQL> select empno,ename,job from emp;

emp 테이블에서 사원번호, 급여, 부서번호를 출력해보세요.
단,급여가 많은 순서대로 출력

SQL> select empno,sal,deptno 
from emp 
order by sal desc;

emp 테이블에서 사원번호, 급여, 입사일을 출력해보세요.
단,급여가 적은 순서대로 출력

SQL> SQL> select empno,sal,hiredate
from emp
order by sal asc;

emp 테이블에서 직업,급여를 출력해보세요.
단,직업명으로 오름차순,급여로 내림차순 정렬해서

SQL> select job,sal
from emp
order by job asc,sal desc;

2.WHERE 절 사용하기 (조건을 주어서 검색하고자 할 때)

emp 테이블에서 급여가 2000 이상인 사원의 사원번호, 사원이름, 급여 출력하기

SQL> SELECT ENAME, SAL FROM EMP WHERE SAL > 2000

emp 테이블에서 입사일이 '81/02/20'인 사원의 사원번호,이름,입사일을 출력해보세요

SQL> select empno,ename,hiredate
from emp
where hiredate = '81/02/20';

emp 테이블에서 직업이 'SALESMAN'인 사람들의 이름,직업,급여를 출력해보세요
단, 급여가 높은 순서대로

SQL> select ename,job,sal from emp
where job = 'SALESMAN'
order by sal desc;

3.ALIAS 사용하기 (칼럼에 별칭 붙이기)

큰 따옴표는 생략가능

SQL> select empno, ename as "no", ename as "na" from emp;
SQL> select empno, ename as no, ename as na from emp;

as와 큰 따옴표 " " 는 생략이 가능하다 (공백문자가 있으면 안됨 = > 사원 번호)

SQL> select empno, ename as "no", ename as "na" from emp;
SQL> select empno, ename as no, ename as na from emp;

4.연산자들

1. 비교 연산자 (=, !=, > , < , >= , <= )

급여가 3000이상인 사원들의 모든 정보를 출력하세요

SQL> select * from emp
where sal >= 3000;

부서번호가 30번이 아닌 사람들의 이름과 부서번호를 출력해보세요.

SQL> select ename, deptno
from emp
where deptno != 30;

2. 논리 연산자 ( AND(&&), OR(||), NOT(!=) )

MYSQL 에서 제공하는 논리 연산자

  • NULL VALUE TEST OPERATOR – IS NULL
  • RANGE TEST OPERATOR – BETWEEN
  • SET MEMBERSHIP TEST OPERATOR – IN
  • PATTERN MATCHING OPERATOR – LIKE
  • EXISTS
  • UNIQUE
  • ALL AND ANY

부서번호가 10번이고 급여가 3000 이상인 사원들의 이름과 급여를 출력하세요

SQL> select ename,sal
from emp
where deptno = 10 and sal >= 3000;

직업이 SALESMAN 이거나 MANAGER인 사원의 사원번호와 부서번호를 출력하세요

SQL> select empno,deptno
from emp
where job='SALESMAN' or job='MANAGER';

3. SQL 연산자 (IN,ANY,BETWEEN,LIKE,IN NULL,IS NOT NULL)

부서번호가 10번이거나 20번인 사원번호와 이름, 부서번호를 출력하세요

SQL> select empno,ename,deptno
from emp
where deptno=10 or deptno=20;

IN 연산자를 사용한다면?

SQL> select empno,ename,deptno
from emp
where deptno in(10,20)

ANY 연산자 (조건을 비교할 때 어느 하나라도 맞으면 true)

SQL> select empno,sal
from emp
where sal > any(1000,2000,3000);
==> 결과적으로는 급여가 1000 이상인 rowselect 하게 된다

ALL 연산자 (조건을 비교할 때 조건이 모두 맞으면 true)

SQL> select empno, sal
from emp
where sal > all(1000,2000,3000)
==> 결과적으로는 급여가 3000 이상인 rowselect 하게 된다

https://www.java4coding.com/contents/mysql/mysql-logical-operators

4.BETWEEN A AND B (A와 B 사이의 데이터를 얻어온다)

급여가 1000과 2000 사이인 사원들의 사원번호, 이름, 급여를 출력하세요

SQL> select empno,ename,sal
from emp
where sal >= 1000 and sal <=2000;

BETWEEN A AND B 연산자를 사용한다면?

SQL> select empno,ename,sal
from emp
where sal between 1000 and 2000;

사원이름이 FORD와 SCOTT 사이의 사원들의 사원번호, 이름을 출력하세요

SQL> select empno,ename
from emp
where ename between 'FORD' and 'SCOTT';

5. IS NULL (NULL인 경우 true),IS NOT NULL (NULL이 아닌 경우 true)

*null이면 비교자체가 불가하다

커미션이 NULL인 사원의 사원이름과 커미션을 출력하세요

SQL> select ename,comm
from emp
where comm is null;

커미션이 NULL이 아닌 사원의 사원이름과 커미션을 출력해보세요

SQL> select ename,comm
from emp
where comm is not null;

6. EXISTS (데이터가 존재하면 true)

사원이름이 'FORD'인 사원이 존재하면 사원의 이름과 커미션을 출력하기

SQL> select ename,comm
from emp
where exists(select ename from emp where ename='FORD');

7. LIKE 연산자(문자열 비교) 중요!!

사원이름이 'J'로 시작하는 사원의 사원이름과 부서번호를 출력

SQL> select ename,deptno
from emp
where ename like 'J%';

사원이름에 'J'가 포함되는 사원의 사원이름과 부서번호를 출력

SQL> select ename,deptno
from emp
where ename like '%J%';

사원이름의 두 번째 글자가 'A'인 사원의 이름,급여,입사일을 출력하기

SQL> select ename,sal,hitedate from emp
where ename like '_A%';

사원이름의 두 번째 글자가 'A'인 사원의 이름,급여,입사일을 출력하기

SQL> select ename,sal,hiredate
from emp
where ename like '%ES';

입사년도가 81년인 사원들의 입사일과 사원번호를 출력해보세요

SQL> select hiredate,empno
from emp
where hiredate like '1981%';
profile
쿵스보이(얼짱뮤지션)

0개의 댓글