사원(EMP)테이블과 급여등급(SALGRADE)테이블을 이용하여 아래와 같은 결과를 포함하는

EMP_GRADE 테이블을 생성하시오.

사용자 삽입 이미지
          ....
         14개 행이 선택되었습니다.

위와 같은 결과를 보여주는 EMP_GRADE 테이블을 SELECT문을 이용해서 생성하려면

생성방법
CREATE TABLE EMP_GRADE
AS
SELECT문

사용자 삽입 이미지

위와 같이 EMP테이블과 SALGRADE간의 NONEQUL JOIN을 이용해서 결과값이
나오는지 확인한 후 위의 생성방법의 형식에 따라서 구해주면 된다.

'컴퓨터 관련 무료강좌 > 오라클(ORACLE)' 카테고리의 다른 글

ORACLE-FUNCTION  (0) 2008.04.28
ORACLE-SP사용하기1  (0) 2008.04.28
ORACLE-서브쿼리사용하기  (0) 2008.04.22
ORACLE-SQLPLUS사용하기2  (0) 2008.04.22
ORACLE-SQLPLUS사용하기  (1) 2008.04.19
Posted by 원철연(체르니)
,

SQL*PLUS, iSQLPLUS, SQLGATE, ORANGE 같은 프로그램을 이용해서
SCOTT 계정으로 접속하면

SQL>_ 상태 혹은 쿼리문을 입력할 수 있는 상태가 된다.
 이 상태에서 SQL>SELECT * FROM TAB; 을 입력하고 실행시키면
아래와 같은 테이블들을 볼 수 있다.

사용자 삽입 이미지

오늘은 여기서 EMP 테이블을 가지고 쿼리문을 익혀보고자 한다.
물론 문제들은 MSSQL2005를 2틀 동안 배우다가 갑작스럽게 오라클로 변경한
K 모학원에서 오늘 연습문제로 내준 것임을 밝혀둔다.
사실 오라클에 관심이 많아서 내심 기다렸는데 잘된 일이라고 개인적으로 생각한다.

자 그럼  EMP테이블에 들어있는 모든 데이터를 보자.

[참고] SELECT 문의 기본형 
          SELECT 칼럼명 FROM 테이블;

          SELECT 문의 확장
          SELECT 칼럼명 FROM 테이블 조건절(WHERE)

         
물론 공부하다보면 SELECT문을 써서도 데이터를 저장할 수 있다.
 그것은 개인적으로 찾아보는 것도 실력향상에 도움이 될 듯..

자. 다시 돌아와서 SELECT * FROM EMP를 하면 알 수 있다.
사용자 삽입 이미지

예제들을 풀어보자.

EMP 테이블에서 급여가 3000이상인 사원의 정보를 사원번호, 이름, 담당업무, 급여를 출력하시오.
SELECT EMPNO 사원번호, ENAME 이름, JOB 담당업무, SAL 급여
FROM EMP WHERE SAL >=3000;

사용자 삽입 이미지

EMP 테이블에서 사원번호가 7788인 사원의 이름과 부서번호를 출력하는 SELECT 문장을
작성하시오.

SELECT ENAME, DEPTNO FROM EMP WHERE EMPNO='7788';

사용자 삽입 이미지

테이블에서 입사일이 February 20,1981과 May 1, 1981 사이에 입사한 사원의 이름, 업무, 입사일을 출력하는 SELECT 문은? 단, 입사일 순으로 출력하시요.
SELECT ENAME, JOB, HIREDATE FROM EMP
WHERE HIREDATE BETWEEN '1981/02/20' AND '1981/05/01';
사용자 삽입 이미지

EMP 테이블에서 부서번호가 10, 20인 사원의 정보를 출력하시오. 단, 이름순으로
정렬하시오.

SELECT * FROM EMP WHERE DEPTNO=10 OR DEPTNO=20;
SELECT * FROM EMP WHERE DEPTNO IN(10,20);
사용자 삽입 이미지

EMP 테이블에서 급여가 1500이상이고 부서번호가 10,30인 사원의 이름과 급여를 출력하되
표시를 Employee와 Monthly Salary로 표시되게 하시오.

SELECT ENAME AS Employee, SAL As "Monthly Salary" FROM EMP
WHERE SAL>=1500 AND (DEPTNO=10 OR DEPTNO=30);

사용자 삽입 이미지

EMP 테이블에서 1982년에 입사한 사원의 모든 정보를 출력하도록 하세요.
SELECT * FROM EMP WHERE HIREDATE BETWEEN '1982/01/01' AND '1982/12/31';

사용자 삽입 이미지


EMP 테이블에서 COMM이 NULL이 아닌 사원의 모든 정보를 출력하세요.
SELECT * FROM EMP WHERE COMM IS NOT NULL;
사용자 삽입 이미지

EMP 테이블에서 보너스가 급여보다 10%가 많은 모든 종업원에
대해서 이름, 급여, 보너스를 출력하도록 하세요.

SELECT ENAME AS 이름, SAL AS 급여, COMM AS 보너스 FROM EMP
WHERE COMM > (SAL*1.1) ;
사용자 삽입 이미지

EMP 테이블에서 업무가 CLERK 이거나 ANALYST이고 급여가 1000,3000,5000이 아닌 모든 사원으리 정보를 출력하시오.
SELECT * FROM EMP WHERE (JOB='CLERK' OR JOB='ANALYST') AND SAL NOT IN (1000,3000,5000);
사용자 삽입 이미지

EMP 테이블에서 이름에 L 자가 2 자가 있고 부서가 30이거나 또는 관리자가 7782인
사원의 모든 정보를 출력하시오.

SELECT * FROM EMP WHERE ENAME LIKE '%L%L%' AND (DEPTNO=30 OR MGR='7782');
사용자 삽입 이미지

정리하자면 조건절에서 LIKE, %, IN  등을 이용하여 SELECT 쿼리문을 알아보았다.
추가적으로 ENAME이 A로 시작하는 것만 검색할 경우에는
조건절에 WHERE ENAME LIKE 'A' 으로 하면 A로 시작하는 이름을 검색할 수 있다.
또한 이름이 총 5자이며 A로 시작하는 이름이 있는지 알고자 할 경우에는
WHERE ENAME LIKE 'A____' 이런식으로 _(언더바) 4개를 지정해주고 실행하면 검색이 가능하다.

그럼 즐 공부들 하시길..

'컴퓨터 관련 무료강좌 > 오라클(ORACLE)' 카테고리의 다른 글

ORACLE-SQLPLUS사용하기  (1) 2008.04.19
ORACLE-JOIN 알아보기  (4) 2008.04.19
ORACLE-To_CHAR, CASE 배우기  (0) 2008.04.18
ORACLE-여러가지 함수들  (0) 2008.04.17
ORACLE-웹접속하기  (0) 2008.04.16
Posted by 원철연(체르니)
,

Select
Select
문은 하나의 식을 검사하여 여러 개의 실행 블록 중 하나를 선택하여 분기한다.

1.1 형식

Select Case 비교대상

Case 비교값 1

  처리코드 1

Case 비교값 2

  처리코드 2

Case Else

  처리코드

           End Select



1.2 예제

Select Case Val(TextBox1.Text)

 

                Case 91 To 100

                    MsgBox("아주 영어를 잘하는군요..")

                Case 81 To 90

                    MsgBox("영어를 잘하는군요..")

                Case 71 To 80

                    MsgBox("영어가 조금 부족합니다..")

                Case 61 To 70

                    MsgBox("영어가 많이 부족하군요..")

                Case Else

                    MsgBox("영어를 너무 못하는군요..")

 

      End Select

이번에는 실제 예제를 볼까요?

사용자 삽입 이미지
                                                 폼 디자인

사용자 삽입 이미지
                                       값이 입력되지 않았을 때

사용자 삽입 이미지
                                  숫자가 아닌 값이 입력되었을 때


사용된 함수 및 기능
Public Function IsNumeric(ByVal Expression As Object) As Boolean

Expression이 숫자형이면 참(True)을 숫자형이 아니면 거짓(False)을 나타낸다.

 

TextBox.Focus
텍스트박스의 입력창에 입력이 가능하도록 포인터를 위치시킨다.


If
문 테스트 클릭시 코딩된 부분
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

        'TextBox1 값이 입력되어 있지 않으면 표시해주는 부분

        If TextBox1.Text = "" Then

            MsgBox("TextBox 값이 입력되지 않았습니다. 값을 입력해주세요.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)

            TextBox1.Focus()

 

            '입력된 값이 숫자형인지 파악해서 숫자입력 요청

        ElseIf IsNumeric(TextBox1.Text) = False Then

            MsgBox("TextBox 0~100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

            'TextBox1 0 ~ 100 사이의 값을 입력 요청 조건문

        ElseIf Val(TextBox1.Text) < 0 Or Val(TextBox1.Text) > 100 Then

            MsgBox("0에서 100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

        ElseIf Val(TextBox1.Text) < 90 Then

            MsgBox("당신은 공부를 열심히 해야겠군요.!!")

        End If

 

End Sub


Select
문 테스트 클릭시 코딩된 부분
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click

 

        'TextBox1 값이 입력되어 있지 않으면 표시해주는 부분

        If TextBox1.Text = "" Then

            MsgBox("TextBox 값이 입력되지 않았습니다. 값을 입력해주세요.", MsgBoxStyle.Information + MsgBoxStyle.OkOnly)

            TextBox1.Focus()

 

            '입력된 값이 숫자형인지 파악해서 숫자입력 요청

        ElseIf IsNumeric(TextBox1.Text) = False Then

            MsgBox("TextBox 0~100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

 

            'TextBox1 0 ~ 100 사이의 값을 입력 요청 조건문

        ElseIf Val(TextBox1.Text) < 0 Or Val(TextBox1.Text) > 100 Then

            MsgBox("0에서 100 사이의 정수값을 입력해주세요.")

            TextBox1.Text = ""

            TextBox1.Focus()

        End If

 

 

        If TextBox1.Text <> "" Then

            Select Case Val(TextBox1.Text)

 

                Case 91 To 100

                    MsgBox("아주 영어를 잘하는군요..")

                Case 81 To 90

                    MsgBox("영어를 잘하는군요..")

                Case 71 To 80

                    MsgBox("영어가 조금 부족합니다..")

                Case 61 To 70

                    MsgBox("영어가 많이 부족하군요..")

                Case Else

                    MsgBox("영어를 너무 못하는군요. ")

 

            End Select

        End If

 

End Sub

Posted by 원철연(체르니)
,