혼공SQL

    (혼공MySQL)20.자동으로 실행되는 트리거(trigger)의 개념과 트리거를 활용하여 데이터 백업하는 방법

    트리거는 자동으로 수행하여 사용자가 추가 작업을 잊어버리는 실수를 방지해준다. ex) 탈퇴시 탈퇴 회원의 테이블에 갔다가 삭제해야하는데 까먹고 삭제 안했을 경우 무결성 훼손. 그래서 트리거를 걸어두면 된다. 트리거는 테이블에 부착한다고 한다. 매개변수 개념도 없고, 따로 실행도 어렵다. CREATE TRIGGER [트리거 이름]

    (혼공MySQL)19.스토어드 함수와 커서의 개념, 커서(cursor)의 단계별 실습 방법

    스토어드 함수를 사용자가 직접 만들어서 사용할 수 있다. DELIMITER $$ CREATE FUNCTION 스토어드_함수_이름(매개변수) RETURNS 반환 형식 BEGIN 이 부분에 SQL 프로그래밍 코드를 작성 RETURN 반환값; END $$ DELIMITER; SELECT 스토어드_함수_이름(); 스토어드 프로시저가 CALL로 호출하는 반면 스토어드 함수는 SELECT로 호출한다. 커서는 테이블에서 한 행씩 처리하기 위한 방식이다. 사용할 변수 준비 DECLARE memNumber INT; DECLARE cnt INT DEFAULT 0; DECLARE totNumber INT DEFAULT 0; DECLARE endOfRow BOOLEAN DEFAULT FALSE; 커서 선언 DECLARE me..

    (혼공MySQL)18.스토어드 프로시저(stored procedure)의 개념과 사용 방법(입출력 매개변수의 활용 방법)

    SQL + 프로그래밍 기능이 합쳐진 것이 스토어드 프로시저이다. DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름( IN 또는 OUT 매개변수) BEGIN 이 부분에 SQL 프로그래밍 코드를 작성 END $$ DELIMITER; CALL 스토어드_프로시저_이름(); 으로 불러내야한다. 매개변수를 사용할 때 어떤 값을 전달한다. IN 입력_매개변수_이름 데이터_형식 CALL_ 프로시저_이름(전달_값); OUT 출력_매개변수_이름 데이터_형식 CALL 프로시저_이름(@변수명); SELECT @변수명;

    (혼공MySQL)16.인덱스의 내부 작동 원리와 구조, 인덱스에서 데이터 검색하기

    인덱스의 내부 작동 원리 균형 트리 구조 균형 트리 구조에서 데이터가 저장되는 공간을 노드(node)라고 한다. 인덱스가 없는 상태에서 SELECT로 자료 검색 인덱스가 있는 상태에서 SELECT로 자료 검색 인덱스가 있나 없나 결과가 바뀌진 않는다. 빠르냐 느리나 속도 차이가 있다. SELECT가 빨라지지만 INSERT, UPDATE, DELETE가 느려질 수 있다. 클러스터형 인덱스의 구조 보조 인덱스형의 구조 데이터 검색시 어떤 것이 더 효율적인가? 클러스터 데이터 검색이 조금 더 빠르다.

    (혼공MySQL)15.인덱스의 개념과 장단점, 클러스터형 인덱스와 보조 인덱스

    인덱스(Index)는 SELECT를 사용해서 테이블을 조회할 때 결과를 빠르게 추출하도록 도와주는 기능이다. 꼭 있어야하는건아니다만, 실무의 많은 데이터를 검색시 활용도가 높다. 인덱스는 비타민과 비슷해 적당히 먹으면 괜찮지만 과다 복용하면 안좋다. 찾아보는게 많으면 오히려 안좋아서 안만들기도한다. 인덱스(Index)의 장점 - SELECT문으로 검색하는 속도가 매우 빨라진다. - 그 결과 컴퓨터의 부담이 줄어들어 결국 전체 시스템 성능이 향상된다. 인덱스(Index)의 단점 - 인덱스도 공간을 차지해 데이터 베이스 안에 추가적인 공간 필요 (테이블 크기 약 10% 정도 공간 추가 필요) - 처음 인덱스를 만드는데 시간이 오래걸릴 수 있다. (찾아보기가 없는 책에 새로 찾아보기를 만드는 것과 마찬가지로 ..

    (혼공MySQL)13. SQL 테이블 제약조건(기본키, 외래키, 고유키)

    제약 조건으로 테이블을 견고하게 할 수 있다. 데이터의 오류를 줄여 완전 무결한 코드를 만들 수 있다. 제약 조건은 데이터의 무결성을 지키기 위해 제한하는 조건이다. 종류들 PRIMARY KEY 제약조건 FOREIGN KEY 제약조건 UNIQUE 제약조건 CHECK 제약조건 DEFAULT 정의 NULL 값 허용 기본 키 제약조건 PRIMARY KEY 제약조건 1개 열에 기본키 제약 조건을 설정할 수 있다. 이 것으로 구분할 수 있다. 중복 X NULL허용 X 기본키로 하면 클러스터형 인덱스가 생성된다. 외래 키 제약 조건 UNIQUE 제약조건 두 테이블 사이의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할을 하고 외래 키가 설정된 열은 꼭 다른 테이블의 기본 키와 연결이 된다. 고유 키..

    (혼공MySQL)11.SQL 프로그래밍(IF문, CASE문, WHILE문, 동적SQL)

    SQL 프로그래밍 : 스토어드 프로시저는 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터 베이스 개체이다. SQL프로그래밍은 기본적으로 스토어드 프로시저 안에 만들어야한다. 스토어드 프로시저 구조 DELIMITER $$ --스토어드 프로시저의 코딩파트 시작 CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN -- 이 부분에 SQL 프로그래밍 코딩 END $$ --스토어드 프로시저의 코딩파트 종료 DELIMITER; -- 종료 문자를 다시 세미클론(;)으로 변경 CALL 스토어드_프로시저_이름(); -- 스토어드 프로시저 실행 IF문 IF THEN SQL 문장들 END IF; CASE문 CASE WHEN 조건1 THEN SQL문장들1 WHEN 조건2 THEN SQL문장들2 WHE..

    (혼공MySQL)10. 두 테이블을 묶는 JOIN(INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN)

    Join : 두개의 테이블을 묶어서 하나의 결과를 만들어 내는 것. ex) 회원 테이블 + 구매 테이블 Join 내부 조인 Inner Join -일반적인 조인 회원 테이블의 ID PK 지정이 가능하나 구매 테이블의 ID는 PK 지정은 안된다. PK는 중복이 불가하기때문에 한번 사고 다시 못산다. FK로 가져온다. 1대 다 관계이기때문이다. SELECT FROM INNER JOIN ON [WHERE 검색 조건] ; INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식한다. -------------------- 외부 조인 Outer Join 내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만 외부 조인은 한 쪽에만 데이터가 있어도 결과가 나온다. SELECT FROM OUTER..

    (혼공MySQL)9. MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형)과 형 변환

    테이블을 만들 때 데이터의 형식을 설정해야한다. 데이터 타입 정수형 : 소수점이 없는 숫자 EX) 인원, 가격, 수량 등 TINYINT 1바이트 -128 ~ 127 SMALLINT 2바이트 -32,768 ~ 32,767 INT 4바이트 약 -21억 ~ + 21억 BIGINT 8바이트 약 -900경 ~ + 900경 TINYINT는 아래와 같은 형식으로 양수만 지정하여 범위를 조정할 수 있다. CHAR 데이터 타입류는 문자를 의미하는 Character의 약자 CHAR : 정길이 문자형이라고 부름. 자릿수가 고정되어 있다. VARCHAR : 가변길이 문자형 실수형 소수점 있는 숫자를 저장할 때 사용 FLOAT 4바이트 소주점 아래 7자리까지 표현 DOUBLE 8바이트 소수점 아래 15자리까지 표현 날짜형 날짜..

    (혼공MySql)7. SQL SELECT 절의 형식(ORDER BY 절과 GROUP BY 절)

    SELECT 형식 SELECT 열_이름 FROM 테이블_이름 WHERE 조건식 GROUP BY 열_이름 HAVING 조건식 (GROUP내 조건식) ORDER BY 열_이름 LIMIT 숫자 GROUP BY는 그룹으로 묶어준다. 집계 함수 사용. SUM(), AVG(), MIN(), MAX(), COUNT(), COUNT(DISTINCT) 등 ORDER BY는 결과 값이나 개수에 대해서 영향을 미치지 않고, 결과가 출력되는 순서를 관장한다.

    (혼공MySQL)6. SQL 기본 문법(SELECT ~ FROM ~ WHERE)

    SELECT : 구축이 완료된 테이블에서 데이터를 추출하는 기능. SELECT를 많이 사용해도 기존 데이터 변경 X FROM : 가져올 테이블 이름 WHERE : 조건식

    (혼공MySQL)4. 데이터베이스 만들기

    schemas = 데이터베이스 같은 용어라고 보면 됨. db명을 대문자로 하더라도 소문자로 저장되기때문에 소문자로 저장 member, product 테이블 생성 - 본 자료는 혼자공부하는SQL의 강의 내용을 기반으로 학습하며 정리한 것입니다.