목록Programming (138)
C#,Delphi,Oracle,MSSQL 개발자블로그
SQL SQL (Structured Query Language) 은 구조적인 질의 언어라는 것이다. 이 SQL 이라는 질의 언어를 통해서 데이터베이스를 제어, 관리한다. SQL 은 다음 언어로 나눌 수 있다. ⒜ DDL : 데이터 정의 언어 ⒝ DML : 데이터 조작 언어 ⒞ DCL : 데이터 제어 언어 DDL DDL (Data Definition Language) 는 데이터 베이스 스키마를 정의 하거나 조작하기 위해 사용한다. SCHEMA, DOMAIN, TABLE, VIEW, INDEX 를 다음 명령어로 정의, 변경, 삭제한다. ⒜ CREATE : 정의 ⒝ ALTER: 수정 ⒞ DROP : 삭제 ⒟ TRUNCATE : DROP 후 CREATE * Oracle 11g 이전 버전과 MySQL은 DDL에 ..
● 다중열 서브 쿼리 여러개의 컬럼을 검색하는 서브 쿼리 - 서브 쿼리의 SELECT 문에 여러 개의 컬럼을 검색한다. - 반드시 비교 대상 컬럼과 1:1 대응돼야 한다. - 다중 열 서브쿼리는 주로 IN을 사용하지만 '='사용도 가능하다. IN의 사용이 권장된다. Ex. 각 부서별로 최소 급여를 받는 사원의 정보를 검색. (Pairwise 방식) SELECT dept_ID, employeeID, first_name, salary FROM emp WHERE (dept_ID, salary) IN (SELECT dept_ID, MIN(salary) FROM emp GROUP BY dept_ID) ● 다중 열 서브쿼리에서의 열 비교 - Pairwise 방식. SELECT empno, sal, deptno FR..
- 서브쿼리를 작성할 수 있는 부분 1. WHERE 절 2. HAVING 절 3. FROM 절 서브쿼리 = 중첩SELECT = 부속 SELECT = 내부SELECT - 서브쿼리는 괄호로 둘러싸야 한다. - 서브쿼리는 비교연산자의 오른쪽에 있어야 한다. - 서브쿼리에 ORDER BY 절을 포함하면 안된다. (SELECT문장에 대해서는 오직 하나의 ORDER BY를 가질 수 있으며, SELECT문장의 제일 마지막에 있어야 한다.) ● 서브쿼리의 유형 1. 단일 행 서브쿼리 : 내부 SELECT 문장으로부터, 오직 하나의 행만을 리턴하는 질의이다. 단일 행 비교연산자(비교대상이 1개의 결과 리턴)를 사용한다. =, >, >=, SELECT ename, sal, deptno FROM emp WHERE sal I..
DISTINCT와 GROUP BY절 - DISTINCT와 GROUP BY 개념에 대해서 좀 더 이해를 해보자. - DISTINCT는 주로 UNIQUE(중복을 제거)한 컬럼이나 레코드를 조회하는 경우 사용한다. - GROUP BY는 데이터를 그룹핑해서 그 결과를 가져오는 경우 사용한다. - 하지만 두 작업은 조금만 생각해보면 동일한 형태의 작업이라는 것을 쉽게 알 수 있으며, 일부 작업의 경우 DISTINCT로 동시에 GROUP BY로도 처리될 수 있는 쿼리들이 있다. - 두 기능 모두 Oracle9i까지는 sort를 이용하여 데이터를 만들었지만, Oracle10g 부터는 모두 Hash를 이용하여 처리한다. - 그래서 DISTINCT를 사용해야 할지, GROUP BY를 사용해서 데이터를 조회하는 것이 좋을..
● 그룹함수(집계함수)란? 단일 행 함수와는 달리 그룹 함수는 그룹 당 하나의 결과가 주어지도록 행의 집합에 대해 연산한다. 이러한 집합은 전체 테이블이거나 특정 그룹일 수 있다. 그룹함수는 열에 있는 null값을 무시한다. null값을 포함하게 하고 싶으면, NVL함수를 쓰면 된다. (AVG그룹함수 설명에서 참고.) - AVG 입력된 데이터의 평균을 구하는 함수. Ex. AVG(sal) sal 컬럼의 평균을 구한다. (NULL값 미포함) AVG(NVL(sal, 0)) sal 컬럼의 평균을 NULL값의 경우 0으로 치환하여 구한다. - MIN(sal), MAX(sal) 모든 데이터형에 대해서 MIN과 MAX가 가능하다. ☞ sal이 Date형일 경우 최근 날짜 : MAX 이전 날짜 : MIN ☞ sal이..
● JOIN - 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 이다. - 보통 둘 이상의 행들의 공통된 값 Primary Key 및 Foreign Key 값을 사용하여 조인 한다. - 두 개의 테이블을 SELECT문장 안에서 조인 하려면 적어도 하나의 컬럼이 그 두 테이블 사이에서 공유 되어야 한다. 1. SELECT문을 작성할 때, 명확성을 위해서 그리고 데이터베이스 엑세스를 향상시키기 위해서 열 이름 앞에 테이블 명을 붙인다. 2. 똑같은 열 이름이 하나 이상의 테이블에 있으면, 열 이름 앞에 테이블 명이 있어야 한다. 3. n개의 테이블을 함께 조인하려면 최소 (n-1)개의 조인 조건문이 필요하다. 이 규칙은 테이블이 연결된 primary key를 가진다면 적용될 수 없다. - Cartesia..
rrrr 과 yyyy 는 어차피 연도 4자리 꽉 채웠으므로 차이 없다고 봐도 무방합니다. 단, 2자리 표시형식인 rr 과 yy 는 연도 앞 두자리가 생략되어 그 의미가 다릅니다. R은 ROUND 의 의미를 가지고 있습니다. 연도를 반올림하는데 100년 단위로 계산합니다. - 50년 이상이면 1950 ==> 2000 - 50년 미만이면 1949 ==> 1900 현재년도가 2014년이므로 반올림한 2000 년이 기준이 됩니다. 이 때 입력되는 두자리 연도값이 - 50 미만이면 TO_DATE('140101', 'rrmmdd') ==> 2014-01-01 (기준년도) - 50 이상이면 TO_DATE('940101', 'rrmmdd') ==> 1994-01-01 (기준년도 전년도) 현재년도가 2014년이 아닌 2..
1. sysdate sysdate의 경우 년월일시분초 까지 표시 가능 예) select sysdate from dual; 날짜에 포맷을 적용해 문자열로 변환할 때 예)select to_char(sysdate, 'YYYY-MM-DD HH:MI:SS') from dual; 문자열에 포맷을 적용해 날짜로 변환할 때 예)select to_date('2013-09-06','YYYY-MM-DD') from dual; 예)select to_date('2013-09-06 13:15:24','YYYY-MM-DD HH24:MI:SS') from dual; 예)select to_date('20130906132945','YYYYMMDDHH24MISS') from dual; 2. systimestamp systimestamp의..
● SQL 함수의 분류 - 단일 행 함수 : 오직 단일 행에서만 적용 행별로 하나의 결과를 리턴 데이터 값을 조작하는데 사용 중첩가능, SELECT, WHERE, ORDER BY 절에 사용 가능하다. - 다중 행 함수 : 복수의 행을 조각하여 행의 그룹당 하나의 결과를 리턴 ● 함수의 종류 ☞ 문자함수 - LOWER('SQL Course') → sql course - UPPER('SQL Course') → SQL COURSE - INITCAP('SQL Course') → Sql Course 알파벳 문자 값을 각 단어의 첫 번째 문자는 대문자로, 나머지 문자는 소문자로 변환한다. - CONCAT('A','B') → AB 또는 CONCAT(컬럼명,컬럼명) || 와 같은 기능이다. 단 2개밖에 연결하지 못한다..
2-Tier와 3-Tier의 비교 2-Tier와 3-Tier를 분류하고자 하는 구분은 크게 H/W관점과 S/W 관점에서 나눌 수가 있다. S/W 관점에서 보면, 1장에서 설명한 미들웨어 중에서 데이터베이스 미들웨어를 사용한 아키텍쳐를 '2-Tier' 라 하고, 그 외의 미들웨어를 사용하면 '3-Tier' 아키텍쳐라고 볼 수 있다. ㅇ 2-Tier와 3-Tier의 설명 티어를 구분할 때, H/W 관점에서도 볼 수 있으나, 아래는 S/W 관점에서의 2-Tier와 3-Tier를 비교 설명한 것이다. (1) 2-Tier : 클라이언트 사이드에 프리젠테이션/비즈니스 로직을 작성하고, 서버 사이드에는 데이터베이스가 위치한다. - 예: 4GL 툴(파워빌더, 비쥬얼 베이직, 델파이 등)에서 SqlNet(Oracle),..