실습: MySQL 8.0을 이용한 쿼리 모음

SQL 명령문이 저장된 파일
(C:\Program Files\MySQL\MySQL Server 8.0\bin에 복사)

데이터베이스 생성: CREATE DATABASE dbplus;
데이터베이스 사용하기: USE dbplus;
외부에 저장된 SQL 명령문 파일을 읽어서 실행: SOURCE dbdata.sql;
테이블 구조(스키마) 보기: desc 테이블명, show columns from 테이블명;
현재 데이터베이스 보기: SELECT DATABASE();
데이터베이스 목록 확인: SHOW DATABASES;
데이터베이스 삭제: DROP DATABASE dbplus;


테이블 생성 (t_dept)

P.s.
테이블 이름 변경: alter table t_dept rename t_dept2;
테이블 삭제: drop table t_dept;


테이블 생성 (t_emp)

t_emp 테이블에 AGE 컬럼 추가

P.s.
컬럼명 변경: alter table t_emp change emp_name emp_name2 varchar(30);
컬럼 타입 변경: alter table t_emp change emp_name varchar(60);
컬럼 삭제: alter table t_emp drop column emp_name;


AGE 컬럼에 제약 조건 추가

-> 제약 조건 이름은 emp_ck_age, 범위 19이상 60미만

P.s.
제약 조건 종류: not null, unique, check, primary key, foreign key
not null 조건 주기: alter table t_emp modify emp_num char(5) not null;
적용한 제약 조건 확인: select constraint_name,constraint_type, enforced from information_schema.table_constraints where table_name=”t_emp”;
제약 조건 삭제: alter table t_emp drop constraint emp_ck_age;
기본키 제약 조건 삭제: alter table t_emp drop primary key;


t_dept 테이블에 부서번호가 10이고 부서명이 payroll인 데이터 삽입

t_dept 테이블에 부서번호가 50이고 부서명이 planning인 데이터 삽입

DEPT 테이블에서 부서번호가 10보다 큰 부서의 부서번호와 부서명을 조회하여 T_DEPT 테이블에 복사

t_emp 테이블의 컬럼을 고려하여 emp테이블의 모든 데이터를 t_emp테이블에 복사

t_emp 테이블에서 사원번호가 7839인 사원의 나이를 29로 수정

P.s.
테이블에서 데이터 삭제: delete from t_emp where age=29;


emp,salgrade 테이블을 조인하여 사원의 이름(ename), 급여(sal), 급여 등급(grade) 출력

P.s.
오름차순 출력: select ename from emp order by sal;
내림차순 출력: select ename from emp order by sal desc;
복수개의 열 정렬: select ename, job from emp order by ename asc, job asc;
(ename 기준으로 오름차순 정렬, 같으면 job 기준으로 오름차순 정렬)


사원이 속한 부서의 평균 급여보다 SAL이 더 높은 JOB별 사원 수 출력 (JOIN/GROUP BY)

empno를 입력받아 해당 사번인 사원의 empno, sal, grade를 출력하는 sal_stp stored procedure 작성

sal을 입력받아 세금 공제 후 받을 월급을 반환하는 sal_aftertax stored function 작성
(세금은 sal의 10%)

데이터를 수정했을 때 작동하는 dept_up_trg 트리거 (OLD 테이블을 이용한 백업)

데이터를 삽입하기 전 작동하는 sal_in_trg 트리거 (NEW 테이블을 이용한 데이터 수정)

-> 값이 800 미만이면 0, 4500 초과면 4500 저장

Leave a Reply

Your email address will not be published. Required fields are marked *