■8. mySQL
-> centos 에서 수행
ip 102
root
oracle880401
https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-centos-7
이거보면서 mySQL 설치
root 계정 접속한 사람은 sudo 빼고 코드 복붙
임시비번 :
=E5;VTrYWPh(
새비번:
쓰더
mysql -u root -p (접속하는 거 ! )
접속 안된 사람, 접속 성공한 사람들도
https://dev.mysql.com/downloads/file/?id=480542
링크 타고 들어가서
Windows (x86, 64 비트), MSI 설치 프로그램 |
저장해두시오
mysql> status
--------------
mysql Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using EditLine wrapper
Connection id: 15
Current database:
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.24 MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket: /var/lib/mysql/mysql.sock
Uptime: 28 min 33 sec
Threads: 1 Questions: 15 Slow queries: 0 Opens: 107 Flush tables: 1 Open tables: 100 Queries per second avg: 0.008
mysql> select version()
-> ;
+-----------+
| version() |
+-----------+
| 5.7.24 |
+-----------+
1 row in set (0.00 sec)
mysql> create database orcl;
Query OK, 1 row affected (0.03 sec)
mysql> use orcl;
Database changed
■ emp 테이블 만들기
drop table emp;
drop table dept;
CREATE TABLE dept
(deptNO int,
DNAME VARCHAR(14),
LOC VARCHAR(13) );
INSERT INTO dept VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES (40, 'OPERATIONS', 'BOSTON');
CREATE TABLE emp (
empNO int NOT NULL,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR int,
HIREDATE DATE,
SAL int,
COMM int,
deptNO int );
INSERT INTO emp VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO emp VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO emp VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO emp VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO emp VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO emp VALUES (7499,'ALLEN','SALESMAN',7698,'81-02-11',1600,300,30);
INSERT INTO emp VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO emp VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO emp VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO emp VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO emp VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO emp VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO emp VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO emp VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);
commit;
mysql> select * from emp;
+-------+--------+-----------+------+------------+------+------+--------+
| empNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | deptNO |
+-------+--------+-----------+------+------------+------+------+--------+
| 7839 | KING | PRESIDENT | NULL | 1981-11-17 | 5000 | NULL | 10 |
| 7698 | BLAKE | MANAGER | 7839 | 1981-05-01 | 2850 | NULL | 30 |
| 7782 | CLARK | MANAGER | 7839 | 1981-05-09 | 2450 | NULL | 10 |
| 7566 | JONES | MANAGER | 7839 | 1981-04-01 | 2975 | NULL | 20 |
| 7654 | MARTIN | SALESMAN | 7698 | 1981-09-10 | 1250 | 1400 | 30 |
| 7499 | ALLEN | SALESMAN | 7698 | 1981-02-11 | 1600 | 300 | 30 |
| 7844 | TURNER | SALESMAN | 7698 | 1981-08-21 | 1500 | 0 | 30 |
| 7900 | JAMES | CLERK | 7698 | 1981-12-11 | 950 | NULL | 30 |
| 7521 | WARD | SALESMAN | 7698 | 1981-02-23 | 1250 | 500 | 30 |
| 7902 | FORD | ANALYST | 7566 | 1981-12-11 | 3000 | NULL | 20 |
| 7369 | SMITH | CLERK | 7902 | 1980-12-09 | 800 | NULL | 20 |
| 7788 | SCOTT | ANALYST | 7566 | 1982-12-22 | 3000 | NULL | 20 |
| 7876 | ADAMS | CLERK | 7788 | 1983-01-15 | 1100 | NULL | 20 |
| 7934 | MILLER | CLERK | 7782 | 1982-01-11 | 1300 | NULL | 10 |
+-------+--------+-----------+------+------------+------+------+--------+
14 rows in set (0.00 sec)
※ 오라클 mysql 을 인수하면서 비교적 저렴하게 mysql 을 내놨다.
※ 정리
NoSQL: 1. hive
2. Tajo
3. pig
4. mongodb
RDBMS: 1. Oracle
2. MySQL
※ 오라클 vs mySQL
nvl ifnull
sysdate sysdate()
round(sysdate-hiredate) to_days()
months_between period_diff
add_months period_add
last_day last_day
to_char format, date_format
문자화 지정날짜값으로
to_days (날짜화, 일)
decode if (컬럼명=조건,조건,조건)
case case
rollup with rollup
rank 지원안함
listagg group_concat
| (string) concat
문제120.
직업이 SALESMAN 인 사원들의 이름,월급,직업을 출력하는데
월급이 높은 사원부터 출력하시오 !
select ename, sal, job
from emp
where job='SALESMAN'
order by sal desc;
+--------+------+----------+
| ename | sal | job |
+--------+------+----------+
| ALLEN | 1600 | SALESMAN |
| TURNER | 1500 | SALESMAN |
| MARTIN | 1250 | SALESMAN |
| WARD | 1250 | SALESMAN |
+--------+------+----------+
※오라클과 다른점 :
SALESMAN을 소문자로 써도 된다 !!
문제121.
이름,커미션을 출력하는데 커미션 null 인 사원들은 0 으로 출력하시오
select ename, ifnull(comm,0)
from emp;
문제122.
오늘 날짜를 출력하시오 !
select sysdate()
from dual;
+---------------------+
| sysdate() |
+---------------------+
| 2019-01-03 16:50:40 |
+---------------------+
문제123.
이름,입사한 날짜부터 오늘까지 총 몇 일 근무했는지 출력하시오
select ename, to_days(sysdate())-to_days(hiredate)
from emp;
**각각에 to_days() 시켜줘야 함
문제124. 이름,입사한 날짜부터 오늘까지 총 몇 달 근무했는지 출력하시오
select ename, period_diff(date_format ( now(), '%Y%m'),
date_format(hiredate, '%Y%m') ) as months
from emp;
+--------+-------+
| ename | month |
+--------+-------+
| KING | 446 |
| BLAKE | 452 |
| CLARK | 452 |
| JONES | 453 |
| MARTIN | 448 |
| ALLEN | 455 |
| TURNER | 449 |
| JAMES | 445 |
| WARD | 455 |
| FORD | 445 |
| SMITH | 457 |
| SCOTT | 433 |
| ADAMS | 432 |
| MILLER | 444 |
문제125. 오늘부터 100 달 뒤에 돌아오는 날짜가 어떻게 되는가?
SQL> select add_months(sysdate,100)
from dual;
mySQL>select period_add(date_format(sysdate(), '%Y%m' ), 100)
from dual; <<<-- 이거 오답
mySQL> select substring(aa,1,4) as year,
substring(aa,5,2) as month
from (
select period_add(date_format(sysdate(), '%Y%m'),100) aa
from dual
) aaa;
+------+-------+
| year | month |
+------+-------+
| 2027 | 05 |
+------+-------+
문제126.
이번달의 마지막 날짜가 어떻게 되는가?
SQL>select last_day(sysdate)
from dual;
mySQL>select last_day(sysdate() )
from dual;
+----------------------+
| last_day(sysdate() ) |
+----------------------+
| 2019-01-31 |
+----------------------+
문제127. (오늘의 마지막 문제)
오늘부터 이번달 말일까지 총 몇일 남았는지 출력하시오
select to_days(last_day(sysdate()) )-to_days(sysdate())
from dual;
+--------------------------------------------------+
| to_days(last_day(sysdate()) )-to_days(sysdate()) |
+--------------------------------------------------+
| 28 |
+--------------------------------------------------+
문제128. 오늘이 무슨 요일인지 출력하시오
SQL> select to_char(sysdate,'day')
from dual;
mysql>select date_format(sysdate(), '%W')
from dual;
+------------------------------+
| date_format(sysdate(), '%W') |
+------------------------------+
| Friday |
+------------------------------+
문제129. 이름,입사일,입사한 요일을 출력하시오
SQL> select ename, hiredate, to_char(hiredate, 'day')
from emp;
mysql>select ename, hiredate, date_format(hiredate, '%W' )
from emp;
+--------+------------+------------------------------+
| ename | hiredate | date_format(hiredate, '%W' ) |
+--------+------------+------------------------------+
| KING | 1981-11-17 | Tuesday |
| BLAKE | 1981-05-01 | Friday |
| CLARK | 1981-05-09 | Saturday |
| JONES | 1981-04-01 | Wednesday |
| MARTIN | 1981-09-10 | Thursday |
| ALLEN | 1981-02-11 | Wednesday |
| TURNER | 1981-08-21 | Friday |
| JAMES | 1981-12-11 | Friday |
| WARD | 1981-02-23 | Monday |
| FORD | 1981-12-11 | Friday |
| SMITH | 1980-12-09 | Tuesday |
| SCOTT | 1982-12-22 | Wednesday |
| ADAMS | 1983-01-15 | Saturday |
| MILLER | 1982-01-11 | Monday |
+--------+------------+------------------------------+
문제130. 이름,월급을 출력하는데 월급을 출력할 때에 천단위를 붙이시오
SQL> select ename, to_char(sal,'999,999')
from emp;
mysql> select ename, format(sal,0)
from emp;
+--------+---------------+
| ename | format(sal,0) |
+--------+---------------+
| KING | 5,000 |
| BLAKE | 2,850 |
| CLARK | 2,450 |
| JONES | 2,975 |
| MARTIN | 1,250 |
| ALLEN | 1,600 |
| TURNER | 1,500 |
| JAMES | 950 |
| WARD | 1,250 |
| FORD | 3,000 |
| SMITH | 800 |
| SCOTT | 3,000 |
| ADAMS | 1,100 |
| MILLER | 1,300 |
+--------+---------------+
문제131.
이름,직업,보너스를 출력하는데 직업이 SALESMAN 이면 보너스를 6000 을 출력하고
아니면 0 을 출력하시오
SQL> select ename, job,
decode(job,'SALESMAN',6000,0) as bonus
from emp;
mysql>select ename, job,
if ( job='salesman',6000,0) as bonus
from emp;
+--------+-----------+-------+
| ename | job | bonus |
+--------+-----------+-------+
| KING | PRESIDENT | 0 |
| BLAKE | MANAGER | 0 |
| CLARK | MANAGER | 0 |
| JONES | MANAGER | 0 |
| MARTIN | SALESMAN | 6000 |
| ALLEN | SALESMAN | 6000 |
| TURNER | SALESMAN | 6000 |
| JAMES | CLERK | 0 |
| WARD | SALESMAN | 6000 |
| FORD | ANALYST | 0 |
| SMITH | CLERK | 0 |
| SCOTT | ANALYST | 0 |
| ADAMS | CLERK | 0 |
| MILLER | CLERK | 0 |
+--------+-----------+-------+
문제132.
이름,직업,보너스를 출력하는데 직업이 SALESMAN 이면 보너스를 6000 을 출력하고
직업이 ANALYST 면 3000 을 출력하고
나머지는 0을 출력하시오
SQL> select ename, job,
decode(job,'SALESMAN',6000,0) as SALES_bonus,
decode(job,'ANALYST',3000,0)as ANALYST_bonus
from emp;
mysql>select ename, job,
if (job='SALESMAN',6000,0) as bonus1,
if ( job='ANALYST',3000,0) as bonus2
from emp;
같은 컬럼에 넣으려면
select ename, job,
if(job='salesman', 6000,
if(job='analyst', 3000, 0)) as bonus
from emp;
문제133.
이름,부서번호,보너스를 출력하는데
부서번호가 10번이면 보너스를 7000을
부서번호가 20번이면 보너스를 9000을
부서번호가 30번이면 보너스를 4000으로
출력하시오
SQL> select ename, deptno,
case deptno when 10 then 7000
when 20 then 9000
when 30 then 4000
else 0 end as bonus
from emp;
mysql>select ename,deptno,
case deptno when 10 then 7000
when 20 then 9000
when 30 then 4000
else 0 end as bonus
from emp;
+--------+--------+-------+
| ename | deptno | bonus |
+--------+--------+-------+
| KING | 10 | 7000 |
| BLAKE | 30 | 4000 |
| CLARK | 10 | 7000 |
| JONES | 20 | 9000 |
| MARTIN | 30 | 4000 |
| ALLEN | 30 | 4000 |
| TURNER | 30 | 4000 |
| JAMES | 30 | 4000 |
| WARD | 30 | 4000 |
| FORD | 20 | 9000 |
| SMITH | 20 | 9000 |
| SCOTT | 20 | 9000 |
| ADAMS | 20 | 9000 |
| MILLER | 10 | 7000 |
+--------+--------+-------+
문제134. 이름,월급,보너스를 출력하는데
월급이 2000 이상이면 보너스를 900 을 출력하고
1000 이상이면 보너스를 800 을 출력하고
나머지는 0을 출력하시오
SQL> select ename,sal,
case when sal>=2000 then 900
when sal>=1000 then 800 # 2000>sal>=1000 으로 하면 값 안나옴
else 0 end as bonus
from emp;
문제135. 아래와 같이 결과를 출력하시오
SQL> select sum(decode(deptno,10,sal,null) ) as "10",
sum(decode(deptno,20,sal,null)) as "20",
sum(decode(deptno,30,sal,null)) as "30"
from emp;
mysql>select
sum(if (deptno=10, sal, null ) ) as "10", #sum으로 묶어서 그룹처리 가능
sum(if (deptno=20, sal, null ) ) as "20",
sum(if (deptno=30, sal, null ) ) as "30"
from emp;
mysql>select
case deptno when 10 then sum(sal) #에러뜸. group 없이 sum 안된다함
when 20 then sum(sal)
when 30 then sum(sal)
else 0 end as "bonus"
from emp;
문제136.
아래의 SQL 을 Mysql 로 구현하시오!
SQL> select deptno, sum(sal)
from emp
group by rollup(deptno);
mysql> select deptno, sum(sal)
from emp
group by deptno with rollup;
+--------+----------+
| deptno | sum(sal) |
+--------+----------+
| 10 | 8750 |
| 20 | 10875 |
| 30 | 9400 |
| NULL | 29025 |
+--------+----------+
※ 오라클과 달리 mysql 은 with rollup 을 지원하나
cube 는 지원하지 않는다.
문제137.
아래의 SQL 을 mySQL 로 구현하시오
SQL> select deptno, sum(sal)
from emp
group by cube(deptno);
mysql>select null, sum(sal)
from emp
union all
select deptno, sum(sal)
from emp
group by deptno;
+------+----------+
| NULL | sum(sal) |
+------+----------+
| NULL | 29025 |
| 10 | 8750 |
| 20 | 10875 |
| 30 | 9400 |
+------+----------+
문제138.
이름,입사일,순위를 출력하는데 순위가 먼저 입사한 사원순으로 순위를 부여하시오
SQL> select ename, hiredate,
dense_rank()over(order by hiredate asc) rn
from emp;
mysql> select ename, hiredate, (select count(*) + 1
from emp
where hiredate < e.hiredate) 순위
from emp e;
※ 랭크함수가 안되서 스칼라 서브쿼리로 처리한다.
가장 먼저 입사한 사원은 0 이라서 +1 처리한거다.
select ename, hiredate, (select count(*) + 1
from emp
where hiredate < e.hiredate) rn
from emp e
order by rn asc;
***스칼라서브 한글로 alias 처리 하면 에러뜸.
문제139.
이름,월급,순위를 출력하시오
(순위가 월급이 높은 사원에 대한 순위입니다)
mysql> select ename, sal,
(select count(*) +1
from emp
where sal>e.sal) rn
from emp e
order by rn asc;
+--------+------+------+
| ename | sal | rn |
+--------+------+------+
| KING | 5000 | 1 |
| FORD | 3000 | 2 |
| SCOTT | 3000 | 2 |
| JONES | 2975 | 4 |
| BLAKE | 2850 | 5 |
| CLARK | 2450 | 6 |
| ALLEN | 1600 | 7 |
| TURNER | 1500 | 8 |
| MILLER | 1300 | 9 |
| WARD | 1250 | 10 |
| MARTIN | 1250 | 10 |
| ADAMS | 1100 | 12 |
| JAMES | 950 | 13 |
| SMITH | 800 | 14 |
+--------+------+------+
문제140.
부서번호, 이름, 월급, 순위를 출력하는데
순위가 부서번호별로 각각 월급이 높은 순서대로 순위를 출력하시오
SQL> select deptno, ename, sal,
dense_rank()over(partition by deptno order by sal desc)
from emp;
mysql> select deptno, ename, sal,
(select count(*) +1
from emp
where deptno=e.deptno and
sal>e.sal
) as rn
from emp e
order by deptno, rn asc;
+--------+--------+------+------+
| deptno | ename | sal | rn |
+--------+--------+------+------+
| 10 | KING | 5000 | 1 |
| 10 | CLARK | 2450 | 2 |
| 10 | MILLER | 1300 | 3 |
| 20 | FORD | 3000 | 1 |
| 20 | SCOTT | 3000 | 1 |
| 20 | JONES | 2975 | 3 |
| 20 | ADAMS | 1100 | 4 |
| 20 | SMITH | 800 | 5 |
| 30 | BLAKE | 2850 | 1 |
| 30 | ALLEN | 1600 | 2 |
| 30 | TURNER | 1500 | 3 |
| 30 | WARD | 1250 | 4 |
| 30 | MARTIN | 1250 | 4 |
| 30 | JAMES | 950 | 6 |
+--------+--------+------+------+
문제141.
부서번호, 해당 부서번호에 속한 사원들의 이름을 가로로 출력하시오
SQL> select deptno,
listagg(ename,',') within group
(order by ename asc) ename
from emp
group by deptno;
mysql>select deptno,
group_concat(ename order by ename asc separator ',')
from emp
group by deptno;
+--------+------------------------------------------------------+
| deptno | group_concat(ename order by ename asc separator ',') |
+--------+------------------------------------------------------+
| 10 | CLARK,KING,MILLER |
| 20 | ADAMS,FORD,JONES,SCOTT,SMITH |
| 30 | ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD |
+--------+------------------------------------------------------+
select deptno,
group_concat(ename order by ename)
from emp
group by deptno;
※ asc, separator, ',' 가 default 값이다. 다른걸로 구분하고 싶으면 넣으면 된다.
문제142.(점심시간문제)
아래와 같이 결과를 출력하시오
SQL>select deptno,
listagg(ename|'('|sal|')',',') within group
(order by ename asc) ename
from emp
group by deptno;
mysql> select deptno,
group_concat(ename,concat('(',sal,')' ) order by ename asc separator ',')
from emp
group by deptno;
+--------+---------------------------------------------------------------------------+
| deptno | group_concat(ename,concat('(',sal,')' ) order by ename asc separator ',') |
+--------+---------------------------------------------------------------------------+
| 10 | CLARK(2450),KING(5000),MILLER(1300) |
| 20 | ADAMS(1100),FORD(3000),JONES(2975),SCOTT(3000),SMITH(800) |
| 30 | ALLEN(1600),BLAKE(2850),JAMES(950),MARTIN(1250),TURNER(1500),WARD(1250) |
| 70 | jack(4500) |
+--------+---------------------------------------------------------------------------+
문제143. 이름,부서위치를 출력하시오
※ mySQL 에서의 조인은 1999ANSI 문법
select e.ename, d.loc
from emp e join dept d
on e.deptno=d.deptno ;
문제144. 아래의 오라클 조인문장을 mysql 에서 구현하시오
SQL> select e.ename, d.loc
from emp e, dept d
where e.deptno(+)=d.deptno; *emp에 없는것을 갖고와라(=dept에 더 있는걸 갖고와라)
mysql> select e.ename, d.loc
from emp e right outer join dept d
on (e.deptno=d.deptno);
+--------+----------+
| ename | loc |
+--------+----------+
| KING | NEW YORK |
| BLAKE | CHICAGO |
| CLARK | NEW YORK |
| JONES | DALLAS |
| MARTIN | CHICAGO |
| ALLEN | CHICAGO |
| TURNER | CHICAGO |
| JAMES | CHICAGO |
| WARD | CHICAGO |
| FORD | DALLAS |
| SMITH | DALLAS |
| SCOTT | DALLAS |
| ADAMS | DALLAS |
| MILLER | NEW YORK |
| NULL | BOSTON |
+--------+----------+
문제145. 아래의 오라클의 full outer join 을 mysql 에서 구현하시오
**값 하나 insert 하시오
insert into emp(empno, ename, sal, deptno )
values (2929, 'jack', 4500,70 );
SQL> select e.ename, d.loc
from emp e full outer join dept d
on (e.deptno = d.deptno) ;
mysql> select e.ename, d.loc
from emp e right outer join dept d
on (e.deptno=d.deptno)
union
select e.ename,d.loc
from emp e left outer join dept d
on (e.deptno=d.deptno);
문제. 146.(점심시간문제2)
아래와 같이 결과를 출력하시오
mysql> select ename, sal
from emp
where sal > (select sal from emp where ename='JONES');
+-------+------+
| ename | sal |
+-------+------+
| KING | 5000 |
| FORD | 3000 |
| SCOTT | 3000 |
| jack | 4500 |
+-------+------+
■ Mysql 에서의 DML 문
"오라클과의 가장 큰 차이점이 있어서 반드시 알고 가야한다"
해커스 DBA 인 3기 지민이의 선배 사원이 해커스 데이터를 삭제해서
장애가 난적이 있었음.
문제147.
SCOTT 의 월급을 0 으로 변경하시오
mysql>update emp
set sal=0
where ename='SCOTT';
그리고 rollback 하면 ok 는 뜨나 변경된 row 는 0 이다.
※설명
mysql 은 자동 commint 이 default 라서 rollback 이 안된다.
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 1 |
+--------------+
1은 True
0은 False
만약 이 기능이 싫다면
set autocommit = 0;
mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
| 0 |
+--------------+
문제148.
사원 테이블을 전체 delete 하시오
그리고 rollback 되는지 확인하시오
mysql> delete from emp;
Query OK, 15 rows affected (0.02 sec)
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)
문제149.
dept 테이블 생성 스크립트를 이용해서 dept2 테이블을 생성하고
dept2 테이블을 select 한 후에 rollback 을 하면
dept2 테이블이 어떻게 되는지 확인해보시오
dept 생성
CREATE TABLE dept2
(DEPTNO int,
DNAME VARCHAR(14),
LOC VARCHAR(13) );
INSERT INTO dept2 VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept2 VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO dept2 VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO dept2 VALUES (40, 'OPERATIONS', 'BOSTON');
CTAS 이용
create table dept_backup
as
select * from dept;
■ Mysql 에서 DDL 문
-오라클과의 차이점
external table 의 관리가 오라클과 다르다
터미널창 하나 더 켜서 root 계정에서 cd /home 가고 위치확인 pwd
vi emp2.csv 열고
7839,KING,PRESIDENT,0,1981-11-17,5000,0,10
7698,BLAKE,MANAGER,7839,1981-05-01,2850,0,30
7782,CLARK,MANAGER,7839,1981-05-09,2450,0,10
7566,JONES,MANAGER,7839,1981-04-01,2975,0,20
7654,MARTIN,SALESMAN,7698,1981-09-10,1250,1400,30
7499,ALLEN,SALESMAN,7698,1981-02-11,1600,300,30
7844,TURNER,SALESMAN,7698,1981-08-21,1500,0,30
7900,JAMES,CLERK,7698,1981-12-11,950,0,30
7521,WARD,SALESMAN,7698,1981-02-23,1250,500,30
7902,FORD,ANALYST,7566,1981-12-11,3000,0,20
7369,SMITH,CLERK,7902,1980-12-09,800,0,20
7788,SCOTT,ANALYST,7566,1982-12-22,3000,0,20
7876,ADAMS,CLERK,7788,1983-01-15,1100,0,20
7934,MILLER,CLERK,7782,1982-01-11,1300,0,10
저장하고
mysql 에서
CREATE TABLE emp2 (
EMPNO int NOT NULL,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR int,
HIREDATE DATE,
SAL int,
COMM int,
DEPTNO int );
load data local infile '/home/emp2.csv'
into table emp2 fields terminated by ',';
select * from emp2;
'hadoop' 카테고리의 다른 글
10. 맵리듀스를 java 로 수행하기 (0) | 2019.01.11 |
---|---|
9. sqoop 설치 , sqoop 으로 오라클, hive 연동 (0) | 2019.01.11 |
7. mongo db 설치, 설명 (0) | 2019.01.11 |
6. PIG설치, 설명 (0) | 2019.01.11 |
5. TAJO설치, 설명 (0) | 2019.01.11 |