; 없이 실행되는 명령어 = SQl plus
Schema(스키마) = 테이블의 기본적인 정보(구조)를 확인
DML->insert,update,delete
DQL->select
Q 1.
어떠한 계정이름으로 로그인 된 상태인지 확인?
오라클은 계정단위로 작업
SQL>show user(환경변수명)
SQL> show user
USER은 "SCOTT"입니다 =>계정이름을 확인
Q 2.
현재까지 작업한 목록을 보고 싶다.=>select 구문
형식) select 보고자하는 항목(=컬럼),,(*) from 저장된 테이블명
tab(오라클에서 제공)
sql>select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
BONUS TABLE
DEPT TABLE
EMP(직원정보) TABLE
SALGRADE TABLE
=>테이블 4개로 구성=>프로젝트 (주제에 따라 테이블의 갯수)
sql>select * from emp;//실무에서는 잘 안사용=>조건식을 사용(검색)
Q 3.
테이블의 기본적인 정보를 확인하고 싶다.(구조=Schema)스키마
형식) desc(ribe) 구조를 확인하고 싶은 테이블명
SQL>desc emp
Q 4.
계정(=회원id)을 생성? test계정,t1234 암호
형식) create user 생성할 계정명 identified by 암호명; = SQL 종류 DDL
create로 시작하면 DDL
SQL>create user test identified by t12344;
Q 5.
로그인 상태에서 관리자 또는 일반유저로 전환시키는 방법?
형식) conn(ect) 접속할 계정명/암호 ->일반유저
connect 관리자계정명/암호 as sysdba(관리자)롤
SQL>conn sys/sys12345 as sysdba
연결되었습니다.
화면을 지우는 명령어->clear screen
SQL>clear screen
SQL> show user
USER은 "SYS"입니다
Q 6.
권한을 부여하는 방법=>DCL
형식) grant 권한종류,,, to 계정명,,,,
to public //모든 계정(X)
SQL 종류 = DCL
SQL>grant connect,resource to test;
Q 7.
테이블을 생성시키는 방법
형식) DDL
create table 생성할 테이블명(필드명 자료형(데이터형식));
SQL>create table prtest(id number(2),name varchar2(10));
테이블이 생성되었습니다.
********************************************************************************
Q 8.
********************************************************************************
SQL Buffer창에 내용을 수정하고나서 실행시키는 방법?
단답형(단어), 서술형
방법1 ->/ ->SQL Buffer창에 수정된 내용대로 그대로 실행하라
->실행시킬 SQL구문을 보여주지 않고 그대로 실행
방법2->r(un)->실행시킬 SQL문장을 한번 더 보여주고나서 실행이 된다.
ed=>prtest3로 변경->r
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1* create table prtest3(id number(2),name varchar2(10))
SQL> r
1* create table prtest3(id number(2),name varchar2(10))
테이블이 생성되었습니다.
r = 실행할 sql 출력 후 실행
Q 9.
데이터 저장->insert
형식)insert into 테이블명 values(값);
SQL>insert into prtest values(1,'테스트'); = DML
1 개의 행이 만들어졌습니다.
insert into prtest values(1,'테스트');
insert into prtest values(2,'테스트2');
insert into prtest values(3,'임시');
insert into prtest values(4,'홍길동');
insert into prtest values(5,'테스트22');
=====================
SQL> select * from prtest;
ID NAME
---------- ----------
1 테스트
2 테스트2->'임시테스트'변경
3 임시
4 홍길동
5 테스트22
Q 10.
데이터를 수정(=변경)?
형식) update 수정할 테이블명 set 수정할필드명=수정할값,수정할필드명2=값2,,,,
=모두 변경
update 수정할 테이블명 set 수정할필드명=수정할값,수정할필드명2=값2,,,,
where 조건식(찾을 필드명 연산자 찾을값(3장))
SQL> update prtest set name='임시테스트'
where id=2;//id가 2번인 데이터를 찾아서 이름을 임시테스트로 변경하라
or
update prtest set name='임시테스트'
where name='테스트2'; = name 필드중 이름이 테스트2 라는 데이터를 찾아서 임시테스트 란 이름으로 변경
1행이 갱신되었습니다.
sql = DML update
********************************************************************************
Q 11.
********************************************************************************
DB관리->데이터를 insert,update,delete : 테이블의 구조에 영향을 미치는 명령어
=>데이터를 백업시키는 방법
형식1) create table 백업테이블명(b_테이블명)
as select * from 원본테이블명; //full backup (필드명과 데이터가 동일)
*제약조건은 복사가 안되서 따로 설정해야 됨
형식2) create table 백업테이블명(b_테이블명)
as select * from 원본테이블명 where 조건식
========
=>조건에 만족하는 데이터만 검색을 해서 새로운 백업테이블에 저장
부분 백업
SQL>create table b_prtest as select * from prtest;
SQL>select * from b_prtest;
ID NAME
---------- ----------
1 테스트
2 임시테스트
3 임시
4 홍길동
5 테스트22
Q 12.
데이터를 삭제?=>조심)=>백업테이블을 작성->대비하자.
=>백업테이블의 데이터를 삭제시키는 연습=>원본을 보존
형식1) delete from 삭제시킬 테이블명;//테이블의 모든 데이터를 삭제
폴더------>비어있는 폴더
=>delete * from 테이블명(X)
형식2) delete from 삭제시킬 테이블명
where 조건식-->조건에 만족하는 데이터만 삭제(회원탈퇴)
SQL> delete from b_prtest where id=3;
1 행이 삭제되었습니다.
ID NAME
---------- ----------
1 테스트
2 임시테스트
4 홍길동
5 테스트22
SQL> delete from b_prtest;
4 행이 삭제되었습니다.
SQL> select * from b_prtest;
선택된 레코드가 없습니다.
Q 13.
데이터를 잘못 insert,update,delete한 경우 어떻게 복구를 하나요?
편집기->ctrl+z (undo) 처럼 rollback 명령어를 사용해서 복구가 된다.
rollback=>insert,update,delete만 복구가 된다.
============================
DDL,DCL은 복구가 안된다.
============================
sql>rollback; //전체 복구
롤백이 완료되었습니다.
Q 14.
검색하는 방법
형식)select 보고자하는 필드명,,,(*) ->만들어진 순서대로
from 테이블명
where 조건식(검색하는 필드명 연산자 검색할값
'홍길동' 날짜('2021-6-8'),age=23
Q 15.
작업한 내용(sql구문) -> 실행결과 -> 파일로 저장하고 싶다.
형식)spool 경로를 포함해서 저장할 파일명(~.sql or ~.txt(권장))
SQL>spool c:\webtest\2.db\print\20230501.txt = spool 기록 시작
SQL>show user
SQL>spool off = spool 기록 순간부터 지금까지 저장됨
Q 16.
emp테이블에서 사원번호(empno), 이름(ename), 업무(직책)(job)만 검색
형식)select 보고자 하는 필드명(*) -> 만들어진 순서대로 from 테이블명 where 조건식(검색하는 필드명 연산자 검색할 값'홍길동' 날짜('2021-6-8'),age=23
SQL>select empno, ename, job from emp;
EMPNO ENAME JOB
---------- ---------- ---------
7369 SMITH CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER
Q 17.
위의 16번문제 sql구문중에서 사원이름과 업무를 별칭을 부여해서 출력시켜주는 SQL 구문을 작성 = 실제 테이블의 필드가 변경되지는 않는다.(보기 편하게 가상으로 변경)
형식)select 보고자 하는 필드명 as 변경할 단어(=별칭) from 테이블명
필드명 별칭명 from 테이블명
SQL>select ename as 사원이름, job as 업무 from emp;
SQL>select ename 사원이름, job 업무 from emp;
사원이름 업무
---------- ---------
SMITH CLERK
ALLEN SALESMAN
WARD SALESMAN
/*
SQL>select ename as "사원 번호", job 업 무 from emp;
1행에 오류:
ORA-00923: FROM 키워드가 필요한 위치에 없습니다.
= 별칭 이름을 작성하는 중에 공백을 포함하는 단어를 사용 하거나 특수기호(#,$)를 사용하는 경우에는 반드시 단어 양 쪽에" "을 줘야 된다.
공백을 보함하지 않은 일반단어중심의 경우에는 "" or 안써도 된다.
"사과 배" = OK, "사과배" = OK
사과 배 = NO, 사과 = OK
Q 18.
계산필드 = 기존의 필드를 이용해서 수식(=계산식)을 도입, 가상으로 필드를 만들어서 검색하는 방법
emp테이블 에서 직원의 연봉을 계산해서 출력하기
사원이름(ename), 업무(job), 급여(sal), 연봉 순으로 출력하는 SQL문장을 작성
SQL>select ename, job, sal, sal*12 from emp;
SQL>select ename as 이름, job as 직업, sal as 월급, sal*12 as 연봉 from emp;
이름 직업 월급 연봉
---------- --------- ---------- ----------
SMITH CLERK 800 9600
ALLEN SALESMAN 1600 19200
WARD SALESMAN 1250 15000
JONES MANAGER 2975 35700
Q 19.
하나 이상의 필드들의 데이터들을 결합해서 출력
java 언어 "ab"+"cd" = "abcd" -> 문자열+문자열 = 문자열의 결합
"ab"+" "+"cd" = "ab cd"
oracle 언어 + -> || 로 사용
ename, job 필드 2개를 합쳐서 하나의 필드로 만들어서 출력
SQL>select ename, job, ename || ' ' || job as "connect" from emp;
ENAME JOB connect
---------- --------- --------------------
SMITH CLERK SMITH CLERK
ALLEN SALESMAN ALLEN SALESMAN
WARD SALESMAN WARD SALESMAN
JONES MANAGER JONES MANAGER
Q 20.
검색을 하기 위한 연산자(where 조건식)
형식)select 필드명... from 테이블명 where 조건식
emp테이블 에서 급여가 3000이상 되는 직원을 찾아서 그 직원들의 이름, 업무, 급여 순으로 출력 시켜주는 SQL 출력
SQL>select ename, job, sal from emp where sal >= 3000;
ENAME JOB SAL
---------- --------- ----------
SCOTT ANALYST 3000
KING PRESIDENT 5000
FORD ANALYST 3000
Q 21.
emp테이블 에서 업무(job)가 manager인 사원을 찾아서 그 사원의 사원번호(empno), 이름(ename), 업무(job)순서대로 출력 시켜주는 SQL 출력
*영어로 데이터가 저장된 경우는 대, 소문자 구분해서 검색
SQL> select empno, ename, job from emp where job = 'MANAGER';
'Manager' = 조건에 만족하는 데이터가 없음
EMPNO ENAME JOB
---------- ---------- ---------
7566 JONES MANAGER
7698 BLAKE MANAGER
7782 CLARK MANAGER
Q 22.
emp테이블 에서 급여가 1300 ~ 1800 사이에 있는 직원의 정보를 사원이름, 업무, 급여순 으로 SQL 출력
=범위 between A and B -> A 와 B 사이만
not between A and B -> A 와 B 사이를 제외한 나머지
A와 B사이의 데이터범위 밖의 데이터를 검색할때 사용하는 연산자
SQL>select ename, job, sal from emp where sal between 1300 and 1800;
ENAME JOB SAL
---------- --------- ----------
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
MILLER CLERK 1300
SQL>select ename, job, sal from emp where sal not between 1300 and 1800;
ENAME JOB SAL
---------- --------- ----------
SMITH CLERK 800
WARD SALESMAN 1250
JONES MANAGER 2975
MARTIN SALESMAN 1250
BLAKE MANAGER 2850
CLARK MANAGER 2450
SCOTT ANALYST 3000
KING PRESIDENT 5000
ADAMS CLERK 1100
JAMES CLERK 950
FORD ANALYST 3000
'국비학원 > 공부' 카테고리의 다른 글
10일차 oracle(3) (1) | 2023.05.04 |
---|---|
9일차 oracle(2) (0) | 2023.05.04 |
7일차 jsp ~ oracle 설치 (1) | 2023.05.04 |
6일차 jsp(미니 프로젝트) (0) | 2023.04.28 |
5일차 jsp(Array) ~ DOM (0) | 2023.04.28 |