DB 42

[DB] 프로시저, 트리거, 사용자 정의 함수

프로시저 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합이다. 특정 기능을 수행하는 일종의 트랜젝션 언어로, 호출을 통해 실행되어 미리 저장해 놓은 SQL작업을 수행한다. 프로시저 구성 DECLARE : 프로시저의 명칭, 변수, 인수, 데이터 타입을 정 의하는 선언부 (필수) BEGIN / END : 프로시저의 시작과 종료를 의미 (필수) CONTROL : 조건문 또는 반복문이 삽입, 순차적 처리 SQL : DML, DCL이 삽입돼, 조회, 추가, 수정, 삭제 작업을 수행 EXCEPTION : 구문 실행 중 예외 발생 시 처리 방법 정의 TRANSACTION : 작업들을 DB에 적용할지 취소할지 결정 하는 처리부 프로시저 생성 CREATE PROCEDURE 프로시저명(파라미터) BEGIN ..

DB 2024.01.31

[DB] 데이터베이스 키(Key)의 개념 / 종류

관계형 데이터베이스에서 키(key)는 데이터베이스 테이블에서 각 행을 유일하게 식별하는 데 사용되는 필드나 필드의 조합을 말한다. 기본키(Primary key) 유일성과 최소성을 만족하는 키이다. 중복된 값을 가질 수 없다. Null 값을 가질 수 없다. 유일성: 하나의 키 값으로 하나의 튜플만을 유일하게 식별 최소성: 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성으로만 구성 ex) 사용자 테이블에서의 사용자 ID 후보키(Candidate key) 기본키가 될 수 있는 후보들이며 유일성과 최소성을 모두 만족해야 한다. 후보키의 조합 중에 기본키를 선택한다. ex) 사용자 테이블의 이메일 주소, 전화번호 대체키(Alternate key) 후보키가 둘 이상일 때 기본키로 선택되지 않고 남은 키이다. e..

DB 2024.01.31

[DB] 데이터베이스 용어 정리

데이터베이스 : 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음 DBMS(DataBase Management System) : 데이터베이스를 제어, 관리하는 통합 시스템 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 query를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 또한 데이터베이스는 실시간 접근과 동시 공유가 가능하다. DataBase 용어 Entity : 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사 : 현실 세계에서 구별할 수 있는 실제 객체나 사물을 나타내는 개념 일반적으로 엔티티는 데이터베이스의 테이블에 대응되며, 테이블에 저장된 각각의 레코드는 엔티티의 하나의 인스턴스에 해당한다. Relation : 데이터베이스에서 정보를 구..

DB 2024.01.31

[MySQL] 프로시저, 이벤트 스케줄러 만들기

// 테이블 생성 CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50), age INT ); insert into users values (1, 'name', 20), (2, 'name2', 21); select * from users; // 프로시저 생성 DELIMITER // CREATE PROCEDURE update_user_age ( IN p_id INT, IN p_age INT ) BEGIN UPDATE users SET age = p_age WHERE id = p_id; END // DELIMITER ; // 프로시저 목록 조회 show procedure status; // 호출 CALL update_user_age(2, 40); // ..

DB 2023.10.06

[MySQL] CMD이용해 CRUD 하기

-MySQL 셸에 액세스 mysql -u root -p 명령어 입력 후 MySQL 루트 사용자 암호를 입력한다. -데이터베이스 생성 CREATE DATABASE [데이터베이스 이름] -데이터베이스 삭제 DROP DATABASE [데이터베이스 이름] -모든 데이터베이스 보기 SHOW DATABASES; -데이터베이스 선택 USE [데이터베이스 이름] -테이블 생성 CREATE TABLE [테이블 이름]( 컬럼명 데이터타입 조건, 컬럼명 데이터타입 조건, ... ); 테이블 구조 확인 DESC [테이블 명] create -데이터 삽입 INSERT INTO [테이블 명] ([칼럼1], [칼럼2], [칼럼3]) VALUES ([값1], [값2], [값3]....) read -테이블 전체 데이터 확인 SELECT..

DB 2023.05.04

[MySQL] 문자열 관련 함수

MySQL 문자열 관련 함수를 정리해보았다. 찾으면 찾을 수록 정말 다양한 함수들을 제공해주는것 같다. LENGTH(str) 문자열의 길이 찾기 SELECT LENGTH('HELLO') -- 5 CONCAT(str, str) 여러 문자열 합치기 SELECT CONCAT('안녕','하','세요'); --'안녕하세요' INSTR(str, substr) 문자열에서 찾는 문자열이 몇번째 위치에 있는지 알아내기 찾는 문자열이 없을 경우 0 리턴, 1개 이상 있는 경우 첫번째 문자열의 시작 자리수 리턴 SELECT INSTR('ABCDE', 'BC') -- 2 REPLACE(str, from_str, to_str) 문자열에서 특정 문자열을 찾아 원하는 문자열로 모두 치환한다. SELECT REPLACE('www.n..

DB 2023.03.04

[MySQL] 자주 나오는 문법 정리

프로그래머스 고득점 KIT 문제를 풀어보면서, 자주 나오는 MySQL 문법들을 정리해보았다. LIMIIT 결과 개수 제한 ORDER BY ID LIMIT 1 # 가장 상위 1개만을 조회한다. * LIMIT 0, 3: 상위 0번째부터 3번째까지의 정보 조회 정렬 우선순위 별 다중 정렬 ORDER BY NAME, ID DESC 이름 오름차순 정렬, 이름이 같으면 ID 내림차순 정렬 LIKE 부분 일치 WHERE NAME LIKE 'A%' # A로 시작하는 NAME WHERE NAME LIKE '%A' # A로 끝나는 NAME WHERE NAME LIKE '%A%' # A가 포함된 NAME DATE_FORMAT 날짜 형식 지정 SELECT DATE_FORMAT(DATE_TIME, '%Y-%m-%d') 날짜를 ..

DB 2023.02.25

[MySQL] 프로그래머스 - 상품을 구매한 회원 비율 구하기(JOIN, DISTINCT)

https://school.programmers.co.kr/learn/courses/30/lessons/131534 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, COUNT(DISTINCT O.USER_ID) PUCHASED_USERS, ROUND(COUNT(DISTINCT O.USER_ID) / ( #2021에 가입한 전체 회원수 SELECT COUNT(USER_ID) FROM USER_INFO WHERE YEAR(JOINED) = 2021 ), 1) AS..

DB 2023.02.23

[MySQL] 프로그래머스 - 년, 월, 성별 별 상품 구매 회원 수 구하기

https://school.programmers.co.kr/learn/courses/30/lessons/131532 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 코드를 입력하세요 SELECT YEAR(SALES_DATE) YEAR, MONTH(SALES_DATE) MONTH, GENDER, COUNT(DISTINCT U.USER_ID) AS USERS FROM USER_INFO U JOIN ONLINE_SALE O ON U.USER_ID = O.USER_ID GROUP BY YEAR(SALES_DATE), MONTH(SALES_DATE), GEND..

DB 2023.02.23