DataBase

    Every derived table must have its own alias

    공부하다가 머리 식힐겸 프로그래머스 에서 풀었던 SQL 테스트들을 MySQL로 풀던 도중 재미있던 점을 공유하고자 한다. 바로 서브쿼리를 사용하는데 기존 Oracle로 작성했다가 Every derived table must have its own alias 라는 오류가 나왔다. 서브쿼리에 alias(이름)이 지정되지 않았기 때문. 해결 방법은 간단하다. 💡 서브쿼리에 alias(이름)을 지정해주면 된다. ERROR SELECT COUNT(*) FROM (SELECT DISTINCT NAME FROM ANIMAL_INS WHERE NAME IS NOT NULL); SOLUTION SELECT COUNT(*) FROM (SELECT DISTINCT NAME FROM ANIMAL_INS WHERE NAME I..

    트랜잭션(Transaction) 이란?

    트랜잭션(Transaction) 하나의 단위로 수행되길 바라는 쿼리의 묶음 논리적인 작업 단위 여러 가지 DML작업들을 하나의 단위로 묶어 둔 것 해당 트랜잭션 내에 있는 모든 DML이 성공해야 해당 트랜잭션이 성공하는 것이고 만약 1개의 DML이라도 실패하면 전체가 실패하게 된다. ✅ 은행에서 계좌 입,출금(송금)과 같은 개념 은행에서는 송금 자체를 하나의 트랜잭션(거래)로 보고 A통장에서 출금한 돈이 B통장에 정확히 입금히 확인되면 그 때 거래를 성사시키고(commit) 네트워크 장애로 인해 출금만 발생하고 입금이 되지 않았을 경우에는 이를 모두 취소(rollback)하게 된다. 💡 Commit 트랜잭션 내의 작업의 결과를 확정하는 명령어 메모리 상에서 변경된 내용을 데이터 파일에 반영. 💡 Roll..

    [Oracle] 프로그래머스 - 입양 시각 구하기(2)

    programmers.co.kr/learn/challenges 입양 시각 구하기(2) 문제설명 ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE NAME VARCHAR(N) TRUE SEX_UPON_OUTCOME VARCHAR(N) FALSE 보호소에서는..

    PL/SQL (3) 트리거

    본 포스팅은 Oracle 11g를 이용하고있으며, Tool은 Toad for Oracle 13.4 를 이용했습니다. 트리거 🔎 insert, update, delete의 DML문이나 DDL문의 실행을 데이터베이스에서는 특정 이벤트가 발생되었다고 하는데, 이런 이벤트가 발생하면 자동으로 정해진 동작 을 실행하는 데이터베이스 객체를 트리거라고 함 서브 프로그램 단위의 하나인 트리거는 테이블, 뷰, 스키마 또는 데이터베이스에 관련된 PL/SQL 블록(또는 프로시저)으로 관련된 특정 사건(event)이 발생될 때마다 자동으로 해당 PL/SQL 블록이 실행 된다. 사전적인 의미로 보자면 방아쇠 를 뜻하는데, 방아쇠를 당기는 이벤트가 발생하면 총알이 발사된다는 의미처럼 오라클에서도 어떤 이벤트가 발생할 경우 연관된..

    PL/SQL (2) 저장프로시저, 커서, 함수

    본 포스팅은 Oracle 11g를 이용하고있으며, Tool은 Toad for Oracle 13.4 를 이용했습니다. PL/SQL 서브 프로그램 💡 데이터베이스 객체로 저장해서 필요할 때마다 호출하여 사용할 수 있는 PL/SQL 블록 익명블록과 달리 저장하여 공유할 수 있으므로 메모리, 성능, 재사용성 등의 장점이 있다. 프로시저 : 결과값을 반환하지 않는다. SQL문에서 사용 할 수 없다. 함수 : 리턴 값을 반드시 반환해야 하는 프로그램, SQL문에서 사용 가능 하다. 패키지 : 하나 이상의 프로시저, 함수, 변수, 예외 등의 묶음 트리거 : 지정된 이벤트가 발생하면 자동으로 실행되는 PL/SQL 블록 저장 프로시저 매개 변수를 받을 수 있고, 반복해서 사용할 수 있는 이름이 있는 PL/SQL 블록 연..

    PL/SQL (1) 개요, 조건문, 반복문, 예제

    본 포스팅은 Oracle 11g를 이용하고있으며, Tool은 Toad for Oracle을 이용했습니다. Procedural Language extension to Structured Query Language SQL과 일반 프로그래밍 언어의 특성을 결합한 언어 변수, 상수 선언 가능 조건문, 반복문 사용 가능 DBMS의 역할이 커지면서 SQL을 넘어서는 일반 프로그래밍 언어가 처리할 수 있는 기능들이 필요하게되었는데, 1989년 Oracle 6 버전부터 PL/SQL 이 등장 하게 되었다. 💡 변수가 없으며, 한번에 하나의 명령문만 사용 가능 (트래픽 증가) 그리고 제어문이 없으며 (IF, LOOP) , 예외처리가 없었던 SQL의 단점들을 개선해준다. ✅ 왜 PL/SQL을 써야 할까? C나 JAVA에 비..

    CRUD - (3) Update, Delete, MySQL AutoCommit 해제

    본 포스팅은 MySQL 8.0.23 버전을 사용중이며, 툴은 Toad for MySQL 8.0 사용 중 입니다. CRUD - (3) Update, Delete 이제 CRUD 중 Update와 Delete에 대해 이야기를 해볼것이다. 이전에 포스팅 했던 Create, Read와는 다르게 매우 심플하다. 주의 할 점이 있다면, 조건(WHERE) 을 항상 명시해야 한다는것. 조건을 명시하지않고, update 혹은 delete 를 하게 된다면, 모든 행이 전부 update 혹은 delete가 되므로 주의하자. Update UPDATE 테이블명 SET 변경 할 컬럼1=변경값, 변경 할 컬럼2=변경값, ... WHERE 조건문; Delete DELETE FROM 테이블명 WHERE 조건문; ❗ 이때, 만약 수정 혹..

    MySQL 내장함수 정리

    MySQL 내장함수 정리 1. 숫자 관련 함수 ABS(숫자) - 절대값 출력  CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수  FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버 림(음수일 경우는 제외)]  ROUND(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 반올 림.(자릿수는 양수,0,음수)  TRUNCATE(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 버림  POW(X,Y) or POWER(X,Y) - X의 Y승  MOD (분자, 분모) - 분자를 분모로 나눈 나머지를 구한다.(연산 자 %와 같다)  GREATEST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 큰 수 리턴  LEAST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일..