본문 바로가기

SQL/MySQL10

[MySQL] 트리거(Trigger) 트리거(Trigger) DBMS에서 특정 사건 발생 시 자동으로 일련의 과정이 수행되는 프로시저로 사용자가 따로 호출할 필요가 없음 데이터 변경 시 무결성에 문제가 생길 때, 이를 보완할 수 있도록 트리거를 설정하면 무결성을 유지시킬 수 있음 장점 : 프로시저와 더불어 데이터베이스 내의 업무규칙을 구현 가능 단점: 테이블 선언 시 정의한 제약조건에 비해 성능이 저하 문법 DELIMITER // CREATE TRIGGER 트리거명 BEFORE / AFTER (실행시점) 실행로직# 실행로직은 어떤 구문이 들어오면 처리할 것인가 ON 트리거적용테이블 FOR EACH ROW BEGIN 트리거 실행시 작동될 코드 END // DELIMITER ; 예제) 회원이 탈퇴를 진행하면 회원 관리 테이블에서 탈퇴 회원 관리.. 2021. 7. 24.
[MySQL] 프로시저 매개변수 값 입력 프로시저 실행 시 조건 값 변경 저장된 프로시저 수행 시 수행 질의문에 특정 값을 매개변수로 전달할 수 있도록 하여 다양한 조건을 하나의 질의문으로 수행할 수 있게 지원해줌 MySQL의 샘플 데이터베이스 employees를 활용한 예제 https://github.com/datacharmer/test_db GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, used to test your applications and database A sample MySQL database with an integrated test suite, used to test your applications and database.. 2021. 7. 21.
[MySQL] 프로시저(Procedure) Procedure(프로시저) 자주 사용되는 질의문들을 하나로 묶어 저장하고 필요할 때마다 명령문처럼 실행할 수 있게 해줌 함수와 유사한 개념이지만, 함수는 매개변수와 반환값이 존재하는 반면, 프로시저는 매개변수는 존재하지만 반환값이 없고 특정 로직만 처리하면 종료 문법 DELIMITER $$ CREATE PROCEDURE 선언할 프로시저명() BEGIN 실행 코드 END $$ DELIMITER ; 선언한 프로시저 호출 CALL 프로시저명(); 예제 1) IF ~ ELSEIF ~ THEN 구문을 활용하여 두 개 이상의 조건을 입력할 수 있는 프로시저를 생성 점수에 따른 학점을 반환하는 프로시저 90점 이상 - A, 80점 이상 - B, 70점 이상 - C, 60점 이상 - D, 그 외 - F '취득점수: .. 2021. 7. 20.
[MySQL] WHERE 구문을 이용한 데이터 조건 반환 데이터 조건 반환 SELECT 컬럼명1, 컬럼명2, ... FROM 테이블명 WHERE 컬럼명 조건식; 관계 연산자를 활용하여 대소비교를 하거나 AND 나 OR 를 이용해 조건을 여러개 연결할 수 있음 예시) 1990년도 이후에 출생한 키가 185 이상인 사람의 아이디와 이름을 반환 SELECT id, name FROM exampleTbl WHERE (birthYear > 1990) AND (height >= 185); BETWEEN ~ AND 를 이용해 범위지정(이상 ~ 이하) 가능 예시) 1990년도 이후 2000년도 이전 출생한 사람들의 아이디와 이름 반환 SELECT id, name FROM exampleTbl WHERE birthYear BETWEEN 1990 AND 2000; IN을 이용해 특.. 2021. 7. 18.
[MySQL] 기초 문법 데이터 베이스 생성 CREATE DATABASE 데이터베이스명 DEFAULT CHARACTER SET UTF-8; DEFAULT CHARACTER SET : 데이터 베이스 생성 시 기본으로 세팅된 언어셋을 변경하여 UTF-8 문자 입력에도 반응 데이터 베이스 초기화하고 재생성 DROP DATABASE IF EXISTS 데이터베이스명; CREATE DATAVASE 데이터베이스명; IF EXISTS: 해당 데이터베이스가 '존재한다면' 삭제 테이블 생성 CREATE TABLE 테이블명 ( 컬럼명1 데이터타입 제약조건, 컬럼명2 데이터타입 제약조건, ... ) 주요 제약조건: PRIMARY KEY : 컬럼의 주요키, 중복 값과 NULL값이 들어오는 것을 방지 - 하나의 컬럼은 반드시 PRIMARY KEY 속성을.. 2021. 7. 18.
[MySQL] JOIN 구문 2개 이상의 테이블을 결합 여러 테이블에 나눠져 삽입된 연관된 데이터를 결합해주는 기능으로 같은 내용의 컬럼이 존재해야만 사용할 수 있음 SELECT 테이블1.컬럼1, 테이블1.컬럼2, ..., 테이블2.컬럼1, 테이블2.컬럼2, ... FROM 테이블1 JOIN구문 테이블2 ON 테이블1.공통컬럼 = 테이블2.공통컬럼; WHERE 절로 조건을 만들 수 있음, 앞에 JOIN 구문이 실행되고 나면 실행된 내용에 조건을 적용 예시 이름(기본키), 나이 컬럼을 갖는 infoTbl1 CREATE TABLE infoTbl1( name char(3) PRIMARY KEY, age int NOT NULL ); INSERT INTO infoTbl1 VALUES ('김가나', 30), ('박다라', 34), ('최마바'.. 2021. 7. 17.