※ SQL Plus창의 속성창에 들어가서 관리자 모드로 실행할 수 있도록 설정 크기, 글자색변경 ● 옵션탭->빠른 편집 모드 체크(편집이 가능하다)
● 글꼴탭->크기->12×27로 설정
● 색탭->화면텍스트->검정, 화면 배경->하얀색설정
● 호환성탭->관리자 권한으로 이 프로그램 실행
● 컴퓨터->관리->서비스 및 응용 프로그램 OracleOraDb11g_home1TNSListener ->자동에서 수동으로
● OracleServiceORCL ->자동에서 수동으로
<문제1>현재 오라클에서 어떠한 계정명으로 로그인하고있는지 확인? SQL> show user USER은 “SCOTT”입니다 ================== <문제2>현재 계정으로 로그인했을때 지금까지 작업한 내용을 확인? SQL> select * from tab; TNAME TABTYPE CLUSTERID ——————— ————— ————– BONUS TABLE DEPT TABLE EMP TABLE SALGRADE TABLE
================================ <문제3>p428 사용자 관리 실습시나리오->관리자->계정을 발급->오라클에 접속->특정 테이블 작성->데이터를 저장? ♦ DDL(데이터정의어) ● create ~ 관리자에서 사용자계정을 만드는 방법 형식)create user 계정명 identified by 암호명; SQL> create user test1 identified by 1234; identified by 1234 * 2행에 오류:-오류발생- ORA-01031: 권한이 불충분합니다(아무나 만들수 없다)
====================================== <문제4>관리자로 로그인 형식)connect 계정명/암호(일반유저) SQL> connect sys/sys12345; ERROR:-오류발생- ORA-28009: connection as SYS should be as SYSDBA or SYSOPER 경고: 이제는 ORACLE에 연결되어 있지 않습니다.(일반유저는 이렇게 하면 안됨) SQL> create user test01 identified by oracle; 사용자가 생성되었습니다. SQL> conn test01/oracle ERROR:-오류발생- ORA-01045: user TEST01 lacks CREATE SESSION privilege; logon denied 경고: 이제는 ORACLE에 연결되어 있지 않습니다.
==================================== <문제5>권한을 부여하기 grant 권한종류,,, to 계정명, 계정명2,,, grant 권한종류 to public => 모든 계정한테 형식)connect 관리자/암호 as sysdba SQL> conn sys/sys12345 as sysdba 연결되었습니다. ♦ DCL(Data Control Language) SQL> grant connect,resource to test01; 권한이 부여되었습니다. connect-> DB에 접속 resource-> 테이블생성->데이터저장 SQL> conn test01/oracle 연결되었습니다. SQL> select * from tab; 선택된 레코드가 없습니다.
=================== <문제6>테이블을 생성->p412 형식)create table 생성할 테이블명( 필드명(=컬럼명) 자료형(number(숫자) varchar2(자릿수) ) SQL> create table prtest( id varchar2(10), name varchar2(10)); 테이블이 생성되었습니다. ※오라클 명령어->편집모드⇓ SQL> ed(it) SQL>수정을 다하고나서 실행->/ 또는 r(un)을 사용하면 된다.
※ 테이블 저장=> 문자저장, 숫자저장 Ex) 고객번호(varchar2),사원번호(varchar2), 주민등록번호(varchar2), 나이(number) 우편번호(varchar2)=>계산이 되면 number
==================================== <문제7>데이터를 입력?문자 또는 날짜(‘2015-03-09′) ◆ insert명령어(♦ DML(종류-update,delete)) 형식)insert into 테이블명 values(‘문자’, 숫자,,,);
SQL> insert into prtest value(‘001′,’홍길동’); SP2-0734: “SQL> inser…”(으)로 시작되는 알 수 없는 명령 – 나머지 줄은 무시되었습니다.-오류발생- SQL> ed file afiedt.buf(이)가 기록되었습니다 1* insert into prtest values(‘001′,’홍길동’) SQL> r 1* insert into prtest values(‘001′,’홍길동’) 1 개의 행이 만들어졌습니다.
==================================== ※ 오라클의 데이터형(p380)
○ 숫자저장->number(3)->나이 53.7kg->number(3(전체자릿수),2(소수점자릿수)) ○ 문자->char(자릿수)->고정길이 varchar,varchar2->유동성데이터(동적길이) =>주소 ○ 날짜->Date(회원가입날짜),생일
==================================== <문제8>테이블 데이터를 조회하는 경우? =>Select~from구문 형식)select 필드명,,,,(*) from 테이블명; SQL> select * from prtest;(실무에서 쓰면 안됨) ID NAME ———- ———- 001 홍길동 =========== ◆ update(p407) <문제9>데이터를 잘못 입력->저장 =>수정? 형식)update 수정할 테이블명 set 수정할필드명=수정할값, 수정할필드명2=값2,,,,(=>모든데이터가 다변경됨) 형식)update 수정할 테이블명 set 수정할필드명=수정할값,,, where 조건식(찾고자하는 필드명 연산자 찾을값) Ex) 홍길동->김길동 SQL> update prtest set name=’김길동’ where id=’001′; ~ (=where name=’홍길동’) 1 행이 갱신되었습니다.
================ ◆ delete(p408) <문제10>데이터를 삭제? 형식)delete from 테이블명;//모든 레코드 삭제 delete from 테이블명 where 조건식; ==>조건에 만족하는 레코드 삭제 SQL> delete from prtest where id=’001′; 1 행이 삭제되었습니다.
================= SQL> insert into prtest values(‘001′,’홍길동’); SQL> insert into prtest values(‘002′,’김길동’); SQL> insert into prtest values(‘003′,’테스트’); SQL> insert into prtest values(‘004′,’임시’); SQL> insert into prtest values(‘005′,’테스트2′); SQL> insert into prtest values(‘006′,’임시테스트’); SQL> select * from prtest; ID NAME ———- ———- 001 홍길동 002 김길동 003 테스트 004 임시 005 테스트2 006 임시테스트 ============= <문제11>테이블의 구조를 확인 =>구조(Schema)를 확인? ※화면지우기->clear screen SQL>conn scott/tiger 형식)desc[ribe] 테이블명; SQL> desc emp 이름 널? 유형 —————————– ———– ———————
EMPNO(사원번호) NOT NULL NUMBER(4) ENAME(사원명) VARCHAR2(10) JOB(직급 또는 직책) VARCHAR2(9) MGR(관리자 번호) NUMBER(4) HIREDATE(입사일) DATE SAL(급여) NUMBER(7,2) COMM(보너스) NUMBER(7,2) DEPTNO(부서번호) NUMBER(2)
======================================= <문제12>select~where구문 형식)select 보여줄 필드명,,,(*) from 테이블명1, 테이블명2,,, where 조건식(찾을 필드명 연산자 찾을값) Ex) emp 테이블에서 사원이름, 급여, 입사일 검색하는 SQL? SQL> select ename, sal, hiredate from emp; ENAME SAL HIREDATE ———– ——- —————– SMITH 800 80/12/17 ALLEN 1600 81/02/20
========================== <문제13>select 필드명 구문=>검색? =>가공처리-> 원하는 계산식적용->가상의 필드 Ex) emp 테이블에서 사원이름, 급여,연봉순으로 화면에 출력시켜주는 SQL? SQL> select ename, sal, sal*12 from emp; ENAME SAL SAL*12 ———— ———- ———- SMITH 800 9600 ALLEN 1600 19200
===================== <문제14>필드명을 보기편하게 한글로 변경해서 보여주고 싶다.(별명,별칭을 부여) SQL> select ename as 사원이름, sal 급여, sal*12 “연 봉” from emp; ” “-> 하나의 단어로 인식 오라클에서 맨 마지막에 작업한 SQL구문->편집(SQL Buffer창)->SQL명령어만 /-> SQL Buffer에 저장된 SQL구문을 실행 or r-> SQL Buffer에 저장된 SQL구문을 화면에 한번 다시 보여주고나서 실행 SQL> ed file afiedt.buf(이)가 기록되었습니다 1* select ename as 사원이름, sal 급여, sal*12 “연 봉” from emp SQL> / 사원이름 급여 연 봉 ———- ———- ———- SMITH 800 9600 ALLEN 1600 19200 SQL> r 1* select ename as 사원이름, sal 급여, sal*12 “연 봉” from emp –>한번더 보여줌 사원이름 급여 연 봉 ———- ———- ———- SMITH 800 9600 ALLEN 1600 19200
=================== <문제15>가공처리->두개의 필드->하나의 필드로 합쳐서 볼 수도 있다. Ex) ename + job => 하나의 필드로 만들어서 화면에 출력? +-> ||(결합) String s = “abc”, String s2 = “ddd”; -> s+s2=”abcddd”;-> s || ” ” ||s2 SQL> select ename, job, ename || ‘ ‘ || job as Employee from emp; ENAME JOB EMPLOYEE ———— —————- —————————- SMITH CLERK SMITH CLERK ALLEN SALESMAN ALLEN SALESMAN
================================== <문제16>데이터를 검색?=>중복된 데이터출력형 형식)select distinct 필드명 from 테이블명; 중복된 데이터가 들어가 있는 필드에 distinct예약어를 앞에 써주면 중복데이터 배제 =>하나의 데이터만 출력 SQL> select distinct job from emp; JOB ——— CLERK SALESMAN PRESIDENT MANAGER ANALYST
=========== 과제)URLTest.java-> savs as URLTest2.java(자바문제)