|
한화 넷크루트 - 취업 준비 안내
Posted in Information by
Posted in Information by
|
Posted in 카테고리 없음 by
| |
* JOIN의 개념 * - JOIN은 두 개의 릴레이션에 대해 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다. - JOIN은 크게 INNER JOIN과 OUTER JOIN으로 구분된다. - JOIN은 일반적으로 FROM절에 기술하지만, 릴레이션이 사용되는 어느 곳에서나 사용할 수 있다. * INNER JOIN * - INNER JOIN은 일반적으로 EQUI JOIN과 NON EQUI JOIN으로 구분된다. - EQUI JOIN은 JOIN 대상 테이블에서 공콩 속성을 기준으로 '='(equal)비교를 통해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN방법이다. - EQUI JOIN에서 JOIN조건이 '='일 때 동일한 속성이 두 번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATURAL JOIN이라 한다. - EQUI JOIN에서 연결 고리가 되는 공통 속성을 JOIN속성이라고 한다. = WHERE 절을 이용한 EQUI JOIN 표기 형식 = SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1, 테이블명2, .. WHERE 테이블명1.속성명 = 테이블명2.속성명; = NATURAL JOIN을 이용한 EQUI JOIN의 표기 형식 = SELECT [테이블명1.], [테이블명2.]속성명, .. FROM 테이블명1 NATURAL JOIN 테이블명2; = JOIN ~ USING 절을 이용한 EQUI JOIN의 표기 형식 = SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1 JOIN 테이블명2 USING(속성명); 예) <학생> 테이블과 <학과> 테이블에서 학과코드 값이 같은 튜플을 JOIN하여 학번, 이름, 학과코드, 학과명을 출력하는 SQL문 - WHERE절 이용 - SELECT 학번,이름,학과코드,학과명 FROM 학생,학과 WHERE 학생.학과코드 = 학과.학과코드; - NATURAL JOIN - SELECT 학번,이름,학과코드,학과명 FROM 학생 NATURAL JOIN 학과; - JOIN ~ USING - SELECT 학번,이름,학과코드,학과명 FROM 학생 JOIN 학과 USING(학과코드); * OUTER JOIN * OUTER JOIN은 릴레이션에서 JOIN조건에 만족하지 않더라도 결과로 출력하기 위한 JOIN방법으로, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN이 있다. - LEFT OUTER JOIN - -INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다. = 표기 형식 = <1> SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1 LEFT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; <2> SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명 = 테이블명2.속성명(+); - RIGHT OUTER JOIN - - INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우축 항의 릴레이션에 있는 튜플들에 JULL값을 붙여서 INNER JOIN의 결과에 추가한다. = 표기 형식 = <1> SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1 RIGHT OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; <2> SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1, 테이블명2 WHERE 테이블명1.속성명(+) = 테이블명2.속성명; - FULL OUTER JOIN - - LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합쳐 놓은 것이다. - INNER JOIN의 결과를 구한 후, 좌측 항의 릴레이션의 튜플들에 대해서 우측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다. 그리고 유사하게 우측항의 릴레이션의 튜플들에 대해 좌측 항의 릴레이션의 어떤 퓨플과도 맞지 않는 튜플들에 NULL값을 붙여서 INNER JOIN의 결과에 추가한다. = 표기 형식 = SELECT [테이블명1.]속성명, [테이블명2.]속성명, .. FROM 테이블명1 FULL OUTER JOIN 테이블명2 ON 테이블명1.속성명 = 테이블명2.속성명; 예) <학생> 테이블과 <학과>테이블에서 학과코드 값이 같은 튜플을 JOIN하여 학번,이름,학과코드,학과명을 출력하는 SQL문 (학과코드가 입력되지 않은 학생도 출력) <1> SELECT 학번,이름,학과코드,학과명 FROM 학생 LEFT OUTER JOIN 학과 ON 학생.학과코드 = 학과.학과코드; <2> SELECT 학번,이름,학과코드,학과명 FROM 학생, 학과 WHERE 학생.학과코드 = 학과.학과코드(+); * SELF JOIN * SELF JOIN은 같은 테이블에서 두 개의 속성을 연결하여 EQUI JOIN을 하는 JOIN방법이다. = 표기 형식 = <1> SELECT [별칭1.]속성명, [별칭1.]속성명, .. FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2 ON 별칭1.속성명 = 별칭2.속성명; <2> SELECT [별칭1.]속성명, [별칭1.]속성명, .. FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2 WHERE 별칭1.속성명 = 별칭2.속성명; 예) 학생 테이블을 SELF JOIN하여 선배가 있는 학생과 선배의 이름을 구하는 SQL문 <1> SELECT A.학번, A.이름, B.이름 AS 선배 FROM 학생 A JOIN 학생 B ON A.선배=B.학번; <2> SELECT A.학번, A.이름, B.이름 AS 선배 FROM 학생 A ,학생 B WHERE A.선배=B.학번; - 자료참고 : 기사친구(www.gisa79.com) - |
Posted in 단체/ㄴ대학 전공 수업 by
1. VC++ 컴파일러 환경에서 랜덤 값을 발생시키기 위한 함수로 rand()를 제공한다.
rand()함수는 0부터 RAND_MAX(32767로 정의)까지의 숫자 중에서 임의의 숫자를
돌려준다.
2. RAND_MAX는 헤더 파일 <stdlib.h>에 아래와 같이 상수로 정의되어 있다.
#define RAND_MAX 0x7FFF
3. rand() 함수를 초기화해주지 않으면 매번 실행할 때마다 똑같은 순서의 숫자들이
생성된다. 따라서 rnad() 함수를 사용하기 전에 srand() 함수를 이용해서 초기화를
해야 한다. srand() 함수는 seed로 임의의 정수를 지정할 수 있는데, time() 함수로
시스템의 시간을 구한 후 이를 seed 값으로 사용하면 항상 seed가 달라지기
때문에 일반적으로 아래와 같이 사용한다.
seed = time(NULL);
srand(seed);
== srand(time(NULL)); 위의 2개를 이와 같이 써도 무방하다.
4. rand(), srand() 함수를 사용하기 위해서는 반드시 <stdlib.h> 파일을 헤더 파일로
삽입해야 한다. 또한 time() 함수를 사용하기 위해서는 반드시 <time.h> 파일을
헤더 파일로 삽입해야 한다.
5. 특정 범위의 랜덤 값을 발생시키기 위해서는 나머지 연산자와 덧셈을 이용한다.
- 0부터 9까지의 숫자를 발생 : rand() % 10 // 0~9
- 1부터 10까지의 숫자를 발생 : (rand() % 10) + 1 // (0~9)+1 => 1~10
- a부터 b까지의 숫자를 발생 : (rand() % (b-a+1)) + a // (0~b-a)+a => a~b