🐸 사원번호가 7499인 사원의 이름, 입사일 부서번호 출력 SELECT ENAME, HIREDATE, DEPTNO FROM EMP WHERE EMPNO = 7499; 🐸 이름이 ALLEN인 사원의 모든 정보 출력 SELECT * FROM EMP WHERE ENAME = 'ALLEN'; 🐸 이름이 K보다 큰 글자로 시작하는 사원의 모든 정보 출력 SELECT * FROM EMP WHERE SUBSTR(ENAME,1,1) >= 'K'; 🐸 입사일이 81년 4월2일 보다 늦고, 82년 12월9일 보다 빠른 사원의 이름, 급여, 부서번호 출력 SELECT ENAME, SAL, DEPTNO, HIREDATE FROM EMP WHERE HIREDATE > '1981-04-02' AND HIREDATE < '198..
JOIN 두 개 이상의 테이블에서 데이터를 가져와서 연결하는데 사용되는 SQL 기능 테이블의 식별 값인 Primary Key와 테이블 간 공통 값인 Foreign Key 값을 사용하여 조인 INNTER JOIN : 두 테이블에서 일치하는 데이터만 선택 LEFT JOIN : 왼쪽 테이블의 모든 데이터와 오른쪽 데이터에서 일치하는 데이터를 선택 RIGHT JOIN : 오른쪽 테이블의 모든 데이터와 왼쪽 데이터에서 일치하는 데이터를 선택 ✅ 1대N, N대1, 1대1 등 어느 테이블을 기준으로 보느냐에 따라 부르는 말이 다름. 예) EMP 테이블의 DEPTNO 와 DEPT 테이블의 DEPTNO는 EMP 테이블을 기준으로 할 때에는 1대N ✅ Primary Key는 테이블에서 가장 중요한 값. 즉, 고유한 값이 ..
두 개 이상의 쿼리 결과를 하나로 결합하는 연산자 결과를 DB에서 볼 때는 유용하지만, 보통은 프론트엔드에서 보기 때문에 사용빈도 낮음 UNION (합집합) 중복 제거 SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 10 UNION SELECT EMPNO, ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO = 20 ORDER BY DEPTNO; UNION ALL (합집합) 중복을 제거하지 않음 INTERSECT (교집합) 두 개의 쿼리문에 모두 포함되어 있는 데이터를 표시 SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL > 1000 INTERSECT SELECT EMPNO, ENAME, SAL FR..
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 해당 문제는 시간복잡도가 O(1)이 아니면 시간초과로 틀린다. 따라서, 반드시 구간합 공식으로 풀어야 한다. 💡구간합 공식? S[ i ] = S[ i - 1 ] + A[ i ] 1. 배열 A에 Scanner를 통해 입력한 값..
문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. import java.util.Scanner; import java.util.TreeSet; public class Main { public static void main(String[] args) { TreeSet ti = new TreeSet(); Scanner sc = new Scanner(System.in); int n = sc.nextInt()..
오라클에서는 (1)내장함수와 사용자가 필요에 의해서 직접 정의한 (2)사용자 정의 함수로 나누어짐. 단일행 함수와 다중행 함수(집계 함수)로 나누어짐. SELECT ENAME, SUM(SAL) FROM EMP; ⚠️ 해당 커맨드는 오류가 난다. 왜? 📌 SUM(SAL)은 결과가 하나만 나오는데(SAL 항목에 대한 합계이므로) ENAME은 각 행이 다 나오기 때문 이것을 해결하기 위해선 GROUP BY를 이용해 그룹 단위로 묶어야 함! SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO; -- 급여에 대한 합계를 부서별로 묶어줌. 🐸 응용 예제. 직업별로 급여 합계, 급여 평균, 해당 직업군의 직원 숫자를 출력 SELECT JOB, SUM(SAL), TRUNC(AVG(S..
⚠️ 출력은 데이터 양이 많아서 일부만 올렸습니다. 🐸 EMPLOYEES 테이블에서 King의 정보를 소문자로 검색하고 사원번호, 성명, 담당업무(소문자로),부서번호 출력하라 SELECT EMPLOYEE_ID, FIRST_NAME || ' ' || LAST_NAME AS NAME, LOWER(JOB_ID), DEPARTMENT_ID FROM EMPLOYEES WHERE LOWER(LAST_NAME) = 'king'; 🐸 EMPLOYEES 테이블에서 King의 정보를 대문자로 검색하고 사원번호, 성명, 담당업무(대문자로),부서번호 출력하라 SELECT EMPLOYEE_ID, FIRST_NAME || ' ' || LAST_NAME AS NAME, UPPER(JOB_ID), DEPARTMENT_ID FROM ..
문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. import java...
오라클에서는 (1)내장 함수와 사용자가 필요에 의해서 직접 정의한 (2)사용자 정의 함수로 나누어짐. 단일행 함수와 다중행 함수(집계함수)로 나누어짐. DUAL 테이블 활용 SYS 계정에서 제공하는 테이블로 함수나 계산식을 테이블 참조 없이 실행하기 위한 DUMMY 테이블 즉, 가상의 테이블! 숫자함수 ABS (절대값) SELECT ABS(-10) FROM DUAL; -- 10 ROUND (반올림) SELECT ROUND(1234.5678) AS ROUND FROM DUAL; -- 반올림 자리를 지정하지 않으면 소수점 이하 첫번째 자리에서 반올림 SELECT ROUND(1234.5678, 0) AS ROUND_0, -- 1235 ROUND(1234.5678,1) AS ROUND_1, -- 1234.6 R..
일전에 Map을 이용해서 카페 메뉴 만들기 예제를 만들었었는데, 한 단계 업그레이드 하여 외부 파일에 저장하는 것을 추가(객체직렬화) 💡 객체 직렬화(Serializable) 하는 이유? 메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것 🐶 디스크에 저장/네트워크 통신에 사용하려면 객체 참조타입은 안되는건가? 디스크에 저장하거나 네트워크 통신에 사용하려면 기본 데이터 타입 즉, 값 형식 데이터만 가능함. 🐶 아, 참조 타입 데이터는 값이 아닌 메모리 주소를 가지고 있기 때문에 안되는거구나. 🐸 맞아. 이러한 참조 타입 데이터(객체)를 직렬화 하게 되면 값 형식 데이터로 변환해줌. 💡 한 줄 정리!! 사용하고 있는 데이터들을 파일 저장 혹은네트워크/데이터 통신에서 parsin..