본문 바로가기

BigQuery&SQL_

MySQL 예시 코드 및 실습 1

MySQL 테이블(Table) 생성

CREATE TABLE DEPT (     
    DEPTNO DECIMAL(2),  -- 부서 번호     
    DNAME VARCHAR(14),  -- 부서 이름   
    LOC VARCHAR(13),  -- 부서 위치
    CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO) -- 주요 키를 부서 번호로 지정
);

: 부서 데이터에 관한 테이블이며 PK는 부서 번호로 지정.

 

 

CREATE TABLE EMP (     
   EMPNO DECIMAL(4), -- 사원 번호
   ENAME VARCHAR(10),  -- 사원 이름   
   JOB VARCHAR(9),  -- 직군   
   MGR DECIMAL(4),  -- 관리자
   HIREDATE DATE,  -- 고용 일자   
   SAL DECIMAL(7,2),  -- 급여   
   COMM DECIMAL(7,2), -- 커미션    
   DEPTNO DECIMAL(2),  -- 부서번호   
   CONSTRAINT PK_EMP PRIMARY KEY (EMPNO), -- 주요 키를 사원 번호로 지정     
   CONSTRAINT FK_DEPTNO FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO)
    -- 부서 테이블의 부서 번호를 참조하는 외래 키 

);

: 사원에 관한 테이블이며 PK는 사원 번호로 지정

 

 

CREATE TABLE SALGRADE (     
  GRADE TINYINT,     -- 급여 등급
  LOSAL SMALLINT,   -- 급여 액수 범위(최소)
  HISAL SMALLINT -- 급여 액수 범위(최대)
);

: 급여 등급에 관한 테이블

 

 

 

 

테이블(Table) 내 데이터 삽입

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');
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,STR_TO_DATE('17-12-1980','%d-%m-%Y'),800,NULL,20); INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,STR_TO_DATE('20-2-1981','%d-%m-%Y'),1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,STR_TO_DATE('22-2-1981','%d-%m-%Y'),1250,500,30);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,STR_TO_DATE('2-4-1981','%d-%m-%Y'),2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,STR_TO_DATE('28-9-1981','%d-%m-%Y'),1250,1400,30);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,STR_TO_DATE('1-5-1981','%d-%m-%Y'),2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,STR_TO_DATE('9-6-1981','%d-%m-%Y'),2450,NULL,10);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,STR_TO_DATE('13-7-1987','%d-%m-%Y')-85,3000,NULL,20);
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,STR_TO_DATE('17-11-1981','%d-%m-%Y'),5000,NULL,10);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,STR_TO_DATE('8-9-1981','%d-%m-%Y'),1500,0,30); INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,STR_TO_DATE('13-7-1987', '%d-%m-%Y'),1100,NULL,20); INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,STR_TO_DATE('3-12-1981','%d-%m-%Y'),950,NULL,30); INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,STR_TO_DATE('3-12-1981','%d-%m-%Y'),3000,NULL,20); INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,STR_TO_DATE('23-1-1982','%d-%m-%Y'),1300,NULL,10); INSERT INTO SALGRADE VALUES (1,700,1200); INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000); INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);

 

: 각 테이블에 값을 삽입해준다.

 

 

 

 

테이블 생성(sqlexample)에서 실습

 

각 테이블 생성

 

 

 

 

 

테이블(Table) 내 데이터 추출 실습

 

1. 사원 테이블의 모든 레코드 조회

 

 

: SELECT * FROM EMP 

=> EMP 테이블 내에서 모든 열(Column)의 데이터를 조회한다.

 

 

 

 

2. 사원의 이름과 입사일 조회

 

 

: SELECT ENAME, HIREDATE FROM EMP;

=> EMP 테이블 내에서 사원 이름과 입사일에 관한 열(Column)을 가져온다.

 

 

 

 

 

3. 직책(Job) 목록 구하기

 

 

: SELECT DISTINCT JOB FROM EMP;

=> EMP 테이블 내에서 직책 목록을 가져오되 중복 레코드는 제외한다.

 

 

 

 

 

4. 총 사원 수

 

 

: SELECT COUNT(EMPNO) FROM EMP;

=> COUNT는 레코드 수를 반환하며, NULL이 아닌 수를 반환한다.

 

 

 

 

 

 

 

WHRER 조건을 이용한 테이블(Table) 데이터 추출

 

 

1. 부서 번호가 10인 부서에 근무하는 사원

 

 

: SELECT * FROM EMP WHERE DEPTNO = 10; 

=> EMP 테이블 내에서 부서 번호(DEPTNO)가 10인 데이터 추출.

 

 

 

2. 급여가 2500 이상 되는 사원

 

 

: SELECT * FROM EMP WHERE SAL >= 2500;

=> EMP 테이블 내에서 급여(SAL)가 2500 이상 되는 사원 데이터 추출.

 

 

 

 

 

3. 사원 이름이 'S'를 포함하는 사원의 이름과 사원 번호 

 

 

: SELECT EMPNO, ENAME FROM EMP WERE ENAME LIKE '% S%';

=> 사원 이름(ENAME)에서 S를 포함하는 사원의 이름(ENAME)과 사원 번호(EMPNO)

 

 

 

 

 

4. 커미션이 300, 500, 1400인 사원의 사원 번호, 이름, 커미션

 

 

: SELECT EMPNO, ENAME, COMM FROM EMP WHRER COMM=300 OR COMM=500 OR COMM=1400;

=> 커미션(COMM)이 300 또는 500 또는 1400인 사원의 사원 번호(EMPNO), 이름(ENAME), 커미션(COMM) 데이터 추출

 

 

 

 

 

 

5. 급여가 1200에서 3500 사이인 사원의 사원 번호, 이름, 급여

 

 

: SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1200 AND 3500;

=> BETWEEN A AND B를 사용함으로써 급여의 범위를 설정할 수 있음.

 

 

 

 

 

 

6. 직급이 매니저이고 부서 번호가 30번인 부서에 근무하는 사원 이름, 사원 번호, 직급, 부서 번호

 

 

: SELECT ENAME, EMPNO, JOB, DEPTNO FROM EMP WHERE JOB = 'MANAGER' AND DEPTNO = 30;

=> WHERE 조건 뒤에 직급이 매니저이면서 부서 번호가 30인 조건을 설정

 

 

 

 

 

7.  커미션이 300, 500, 1400이 모두 아닌 사원의 사원 번호, 이름, 커미션

 

 

: SELECT EMPNO, ENAME, COMM FROM EMP WHERE NOT COMM IN(300, 500, 1400);

=> NOT을 사용함으로써 '아닌'이라는 조건을 설정할 수 있음.

 

 

 

 

 

 

8. 이름에 'S'가 포함되지 않는 사원의 사원 번호, 이름

 

 

: SELECT EMPNO, ENAME FROM EMP WHRE NOT ENAME LIKE '% S%';

=> 이름에 S가 포함되는 조건 앞에 NOT을 붙여서 제외 조건으로 변경

 

 

 

 

 

9. 매니저가 NULL인 사원의 이름과 직급

 

 

: SELECT ENAME, JOB FROM EMP WHERE MGR IS NULL;

=> 열(Column)이 NULL인지 판단하려면 IS NULL 또는 IS NOT NULL을 사용할 수 있다.

 

 

 

 


 

 

 

참조 사이트 

 

Select

Select SQL도 역시 표준이 존재한다. 여기서는 오라클을 사용하지만 표준 SQL 위주로 실습한다. SELECT 문장은 순서가 중요하다. SELECT 칼럼,칼럼... FROM 테이블명 WHERE 조건 GROUP BY 구문 UNION/UNION ALL/INTERS

java-school.net

 

'BigQuery&SQL_' 카테고리의 다른 글

BigQuery 강의 1  (0) 2024.12.09
MySQL 예시 코드 및 실습 2  (0) 2022.04.25
MySQL 데이터 베이스(Database) 정리  (0) 2022.04.19