목록Java (116)
오늘은 몰랐으면 내일은 알면 된다
SELECT employee_id, MAX(salary) FROM employees; 위의 max는 모든 행을 탐색하고 난 다음에 최대값을 결정하는데, 최대값이 결정될 때에는 employee_id가 없기 때문에 논리적 위배로 오류가 발생한다. 위의 SQL문은 다음의 과정을 거친다. 1) 최대급여를 계산한다. SELECT MAX(salary) FROM employees 2) 최대급여와 같은 급여를 받는 사원을 다시 행을 탐색하며 검색한다. SELECT employee_id, salary FROM employees WHERE salary = 1) 에서 나온 값 이 둘을 합칠수도 있지 않을까? SELECT employee_id, salary FROM employees WHERE salary = (SELECT ..
[집합 연산자 vs 조인] : 집합 연산자를 사용한 결과는 두 개 이상의 select 문의 결과 값을 세로로 연결한 것이고, 조인을 사용한 결과는 두 개 이상의 테이블 데이터를 가로로 연결한 것이다. 여러 테이블을 단순히 나열만 하게 되면 데카르트 곱(카테시안 곱: Cartesian product, 크로스 조인(cross join), 교차 조인 : 각 집합을 이루는 모든 원소의 순서쌍)이 발생한다. [등가 조인 equi join] : 테이블을 연결한 후에 출력 행을 각 테이블의 특정 열에 일치한 데이터를 기준으로 선정하는 방식이다. 내부조인(inner join) 또는 단순 조인(simple join)으로 부르기도 한다. 조인 조건을 제대로 지정하지 않으면 데카르트 곱이 일어날 수 있는데, 이를 방지하기 ..
함수 설명 SUM 지정한 데이터의 합 반환 COUNT 지정한 데이터의 개수 반환 COUNT() - NULL 제외하고 카운트 COUNT(*) - NULL 포함하고 카운트 MAX 지정한 데이터 중 최댓값 반환 MIN 지정한 데이터 중 최솟값 반환 AVG 지정한 데이터의 평균값 반환 SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; ALL을 사용한 것과 아무것도 붙이지 않은 것의 결과는 같다. 그러나 DISTINCT를 붙이면, 같은 결과 값을 가진 데이터는 한번만 사용된다.(자주 사용되지 않음) [GROUP BY] SELECT [조회할 열1 이름], [열2 이름], ..., [열N이름] FROM [조회할 테이블 이름] WHERE [조회할 행을 선별하는 조..
[함수형 프로그래밍 Functional Programming] : 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법을 의미한다. 데이터는 데이터를 가지고만 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존한다. 데이터 처리부에서는 제공된 함수의 입력값으로 데이터를 넣고, 함수에 정의된 처리 내용을 실행한다. 동일한 데이터라도 함수A를 제공해서 처리하는 결과와 함수B를 제공해서 처리하는 결과는 다를 수 있다. 일종의 데이터 처리 다형성인 것이다. [람다식 Lambda Expression] : 람다식은 위의 그림과 같이, 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이다. 데이터 처리부는 람다식을 받아 매개변수에 데이터를 대입하고 중괄호를 실..
표현 및 기호 설명 [ ] 한개의 문자 [abc] a,b,c 중 하나의 문자 [^abc] a,b,c 이외의 하나의 문자 [a-zA-Z] a~z, A~Z 중 하나의 문자 \d 한 개의 숫자, [0-9]와 동일 \s 공백 \w 한 개의 알파벳, 언더바 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일 \. . (문자로서의 점을 의미함) . 모든 문자 중 한 개의 문자 ? 없음 또는 한 개 * 없음 또는 한 개 이상 + 한 개 이상 {n} 정확히 n개 {n,} 최소한 n개 {n,m} n개부터 m개까지 a | b a 또는 b () 그룹핑 외우려고 들지말고 보고 이해할 수 있으면 충분한 것 같다. 그조차도 어렵다면 가장 많이 사용하는 휴대폰번호, 이메일 정도만 알아도 괜찮을 듯 하다. 그 외에는 검색하자. [P..
[형 변환 함수] 명시적 형 변환을 수행한다. 문자를 중심으로 숫자 또는 날짜 데이터의 변환이 가능하다. [날짜, 숫자를 문자로 변환 TO_CHAR] : 주로 날짜를 문자로 변환하는데 많이 사용한다. TO_CHAR([날짜데이터(필수)], '[출력되길 원하는 문자 형태(필수)]', 'NLS_DATE_LANGUAGE = language'(선택)]) SELECT TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') FROM DUAL; 출력되길 원하는 문자 형태를 표현하기 위해 사용하는 형식(fmt:format)은 다음과 같다. 형식 설명 CC 세기 YYYY, RRRR 연(4자리) YY, RR 연(2자리) MM 월(2자리) MON 월(언어별 월 이름 약자) MONTH 월(언어별 월 이름 전..
[숫자 함수] [특정 위치에서 반올림 ROUND] ROUND([숫자(필수)], [반올림 위치(선택)]) 반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 반올림한다. SELECT ROUND(1234.5678), ROUND(1234.5678, 0), ROUND(1234.5678,1), ROUND(1234.5678,2), ROUND(1234.5678,-1), ROUND(1234.5678, -2) FROM DUAL; [특정 위치에서 버림 TRUNC] TRUNC([숫자(필수)], [반올림 위치(선택)]) 반올림 위치를 지정하지 않으면 소수점 첫 번째 자리에서 버린다. SELECT TRUNC(1234.5678), TRUNC(1234.5678, 0), TRUNC(1234.5678,1), TRUNC(1234.5..
[문자 함수] [대소문자 변환 UPPER / LOWER / INITCAP] 함수 설명 UPPER(문자열) 문자열을 모두 대문자로 변환하여 반환 LOWER(문자열) 문자열을 모두 소문자로 변환하여 반환 INITCAP(문자열) 문자열의 첫 글자는 대문자로, 나머지 문자를 소문자로 변환 후 반환 언제 쓰냐? 예를들어 대소문자 구분없이 Scott을 찾는다고 치자. 단순히 where (column) LIKE '%Scott%'이라고 조건을 주게 되면 SCOTT, scott, ScOtT 등 대소문자가 혼합된 경우에는 검색 결과에 걸리지 않는다. 그러나 문자를 전부 대문자로 바꾸거나 소문자로 바꾸어 비교하게 된다면, 대소문자 여부와 상관없이 검색 단어와 일치하는 문자열을 포함한 데이터를 찾아낼 수 있을 것이다. --이..
select employee_id as 사원 번호, first_name, salary --오류 발생 위와 같이 작성하면 사원까지는 인식하나, 번호를 인식하지 못해 오류가 생긴다. 공백을 포함하고 싶으면 ""를 사용해야 한다. select employee_id as "사원 번호",--공백포함별칭 first_name "first name",--소문자헤딩 salary 급여,--AS절 생략 salary as 급여2 from employees where salary >= 5000; --문자열 표기법: '' select employee_id, first_name, last_name, first_name || last_name as 풀네임, first_name || '~' || last_name 풀네임2, emplo..
클래스 설명 String 문자열을 저장하고 조작할 때 사용 StringBuilder 효율적인 문자열 조작 기능이 필요할 때 사용 StringTokenizer 구분자로 연결된 문자열을 분리할 때 사용 [String] : 문자열 리터럴은 자동으로 String 객체로 생성되지만, 생성자를 이용해서 직접 객체를 생성할 수도 있다. 네트워크 통신으로 얻은 byte 배열을 문자열로 변경할때와 같이, byte 배열을 문자열로 변환해야 할때가 있다. 이럴 때 다음의 생성자를 통해 String 객체를 생성한다. String str = new String(byte[] bytes); //기본 문자셋으로 배열 디코딩 String str = new String(byte[] bytes, String charsetName); //..