no image
[MySQL] 10. 프로시저, 펑션
프로시저 프로시저 (Stored Procedures)는 데이터베이스를 활용한 프로그래밍으로 일련의 쿼리를 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 자바에서 메서드를 만드는 것과 비슷하다고 생각하면 된다. 프로시저 형식 DELIMITER $$ CREATE PROCEDURE 프로시저이름(파라미터) BEGIN 프로그래밍 코딩; .... END$$ DELIMITER ; -- 한칸 띄우고 ; 해야함 띄어쓰기, 오타를 조심해야한다.. $$를 쓰는 이유는 프로시저 생성(CREATE PROCEDURE)이 프로그래밍 코딩부분에서 끝나는걸 막기 위해서다. 만약 $$가 없다면 CREATE PROCEDURE는 프로그래밍 코딩 첫 부분에서 끝나버릴 것이다. 이를 방지하고자 $$를 써주고 마무리는 DELIMITER ; 를..
2024.04.08
no image
[MySQL] 8. 뷰(View) - 가상 테이블
뷰(View)는 원본테이블을 참조하여 원하는 데이터를 쉽게 조회하는 용도로 사용된다. 뷰(View)를 생성하면 다른 테이블처럼 쿼리에서 사용할 수 있는데, 실제 테이블이 아니고 가상의 쿼리로만 존재한다. VIEW 형식 CREATE VIEW 만들 뷰 이름 AS 뷰로 만들 테이블 쿼리 예를 들어 empcopy테이블에서 직업이 'salesman'인 사원의 사원번호, 이름, 부서번호, 직업 컬럼을 가져와 v_emp란 이름으로 뷰를 만들어보자 create view v_emp as select eno, ename, dno, job from empcopy where job='salesman'; 이제 'salesman'의 eno, ename, dno, job을 조회하기 위해 긴 쿼리를 작성하지 않아도 된다. 긴 쿼리 ..
2024.04.03
no image
[MySQL] 7. 제약조건 + 테이블 생성
SQL분류(다시 복습) SQL(Structured Query Language): 데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어. 1. DML(Data Manipulation Language 데이터 조작어) select 데이터 조회 insert 데이터 추가 update 데이터 수정 delete 데이터 삭제(컬럼구조는 살아있다) 2. DDL(Data Definition Language 데이터 정의어) create 테이블 생성 drop 테이블 삭제 alter 테이블 수정(구조변경) 3. DCL(Data Control Language 데이터 제어 언어) grant, revoke는 아직 안배움 테이블 생성 *제약조건하기 전에 테이블 생성부터함 1. 직접 코딩으로 생성 테이블 생성 형식..
2024.04.02
no image
[MySQL] 6. 비교연산자(IN, ANY, ALL)문제
1. IN연산자 MySQL에선 AND를 BETWEEN로 써도 되는 것처럼 OR는 IN으로 써도 된다. 예를 들어 급여가 1000~1500 사이의 직원들을 보려고 할 때 between으로 간단하게 쓸 수 있다 and(between) select * from employee where salary >= 1000 and salary select * from employee where salary between 1000 and 1500; 직업이 영업사원이거나 사원인 직원들 or(in) select * from employee where job = 'salesman' or job = 'clerk'; =>select * from employee where job in ('salesman','clerk'); 문제) ..
2024.03.31
no image
[MySQL] 5. 조인 (내부조인/외부조인/셀프조인/상호조인)
조인은 여러 테이블의 데이터들을 한번에 조회하고 싶을 때 사용한다. 내부조인, 외부조인, 셀프조인, 상호조인이 있으며 내부조인이 가장 많이 쓰인다. 1. 내부조인(INNER JOIN) EX) 사원번호가 7788인 사원은 어느 부서(이름)에서 근무하는가? 7788사원이 누구인지는 금방 찾을 수 있다.(select ename from employee where eno = 7788;) 그런데 부서이름 dname은 employee가 아닌 department테이블에 있다. 만약 department뿐만 아니라 employee에도 부서정보를 저장하면 안되는걸까? 그렇게 해버리면 데이터가 중복되고 무결성이 깨지게 된다. 무결성이란 데이터의 정확성과 일관성을 유지하고 보증하는 것을 가리키는데 자세한건 다음에 정리하자....
2024.03.31
no image
[MySQL] 4. 그룹함수(+ 서브쿼리)
그룹함수 (sum, avg, max, min, count / group by, having ) 하나 이상의 행을 그룹으로 묶어 연산하여 총합(SUM), 평균(AVG) 등 하나의 결과로 나타냄 1. sum(), avg(), max(), min(), count() sum() : 해당 컬럼 값들에 대한 총합을 구하는 함수 avg(): 해당 컬럼 값들에 대한 평균을 구하는 함수 max(), min(): max는 해당 컬럼 값들에 대한 최대값, min은 최소값을 구하는 함수 count(): 테이블에서 조건을 만족하는 행(ROW)의 개수를 반환하는 함수 select sum(salary) as 급여총액 from employee; -- 직원들 급여총액 EX) employee테이블에서 직원들의 모든 급여총액(수당포함)구..
2024.03.31