[Oracle SQL]1일차 개발환경_23.06.20

망구씨·2023년 6월 20일
0

Oracle SQL

목록 보기
1/21
post-thumbnail

오라클 설치

  1. otn.oracle.com 으로 접속해서 18c express edition 을 다운로드
    위 안됨 여기
  2. databass express edition -> prior release 아카이브로 설치

오라클 실행

  1. cmd 실행
  2. sqlplus " /as sysdba"

사용자 생성하기

  1. SYS는 최상위 계정이라서 하위계정을 만든다.
  • create user c##scott, identified by tiger (password)
  1. 내가 만든 계정에 dba 권한 부여
  • grant dba to 내아이디

오라클을 좀더 편안하게 사용할 수 있게하는 툴(소프트웨어)

SQL수업:sqldeveloper(무료), SQLgate(유료), orange(유료), toad (유료)

table 생성

alter session set nls_Date_format='RR/MM/DD';
drop table emp;
drop table dept;

CREATE TABLE DEPT
(DEPTNO number(10),
DNAME VARCHAR2(14),
LOC VARCHAR2(13) );

INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');

CREATE TABLE EMP (
EMPNO NUMBER(4) NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4) ,
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) );

INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'81-11-17',5000,NULL,10);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'81-05-01',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'81-05-09',2450,NULL,10);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'81-04-01',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'81-09-10',1250,1400,30);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'81-02-11',1600,300,30);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'81-08-21',1500,0,30);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'81-12-11',950,NULL,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'81-02-23',1250,500,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'81-12-11',3000,NULL,20);
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'80-12-09',800,NULL,20);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'82-12-22',3000,NULL,20);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'83-01-15',1100,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'82-01-11',1300,NULL,10);

commit;

emp table 소개

: 사원 14명에 대한 정보가 들어있는 테이블입니다.
컬럼
empno: 사원번호
ename: 사원이름
sal: 월급
job: 직업
hiredate: 입사일
mgr: 관리자의 사원번호
comm: 커미션
deptno: 부서번호

테이블에서 특정 열 출력하기

  • 예제 1. 사원 테이블에서 사원번호, 이름, 월급을 출력하시오!
select empno, ename, sal // select (선택해라!) - 컬럼명
from emp; // from(~로부터) - 테이블명.

(;) 세미콜론: SQL문이 종료되었으니, 앞의 문장을 실행해라!

위 이미지는 컬럼명이 한번 더 나와서 set pages 400 하면 결과가 깔끔하게 나온다.

  • 문제 1. 사원 테이블에서 이름과 직업과 부서번호를 출력하시오!
    select ename, job, deptno
       from emp;
  • 문제 2. 사원 테이블에서 이름, 입사일, 월급, 커미션 출력하기
    select ename, hiredate, sal, comm
       from emp;

? 들여쓰기 -> SQL 가독성이 좋아진다.
? 셀렉트 문엔는 컬럼명, 프롬문에는 테이블명!
? 한줄로 써도 실행은 되지만 아래로 작성하기. 나중에 엄청 길어진다!

테이블에서 모든 열(컬럼) 출력하기

select * // * (asterisk)
  from emp;

근데 이렇게하면 테이블이 엄청 안예쁘게 나온다.
set lines 300(결과의 가로길이) , set pages 400(결과의 세로길이) 이렇게 설정하면 예쁘게 나온다! - 한번만 하면 됨!

? *(별표) 를 사용하지 않고 모든 컬럼을 다 검색하려면, 컬럼명 다 쓰면 된다. (비효율)

  • 문제3. dept 테이블의 모든 컬럼, 데이터를 조회하기

컬럼명은 순서대로 부서번호, 부서명, 부서위치!

  • 문제4. 부서 테이블에서 부서번호와 부서명을 출력하세요.
    select deptno, dname
      from dept;

컬럼 별칭을 사용하여 출력되는 컬럼명 변경하기

데이터가 출력될 때 나오는 컬럼명을 바꿔봅시다.
empno, enamem sal .... -> 사원번호, 이름, Salary

select empno as 사원번호, ename as 사원이름, sal as "Salary"
  from emp;

? 컬럼별칭을 이용해서 출력되는 컬럼명을 다른 이름으로 변경할수 있습니다. 컬럼명 옆에 as 쓰시고 컬럼별칭을
작성하면 되는데 만약 공백문자나 특수문자 그리고
대소문자를 구분해서 사용하고 싶다면 양쪽에 더블 쿼테이션
마크를 사용하면 됩니다.

※ 오라클 전체를 통틀어서 더블 쿼테이션 마크를 사용할 일은
이것밖에 없습니다.

  • 문제4. 사원이름, 직업, 부서번호를 출력하는데 출력되는 컬럼명이 전부 한글로 이름, 직업, 부서번호로 출력되게하시오 !
    select   ename  as   사원이름,  job   as   직업,  deptno  as  부서번호
      from    emp;

sqldeveloper 다운


맨위 !! 다운로드!
설치 후 실행(설치해서 압축푸는데 권리자 권한 필요하다그래서 d드라이브에 저장했음!)
왼쪽 상단에 초록색 플러스(+) 버튼 눌러서 아까만든 계정 연결한다.
사용자이름(c##scott) / 비밀번호 (tiger) 으로 연결!

주석은 -- 붙이면 됨.

  • 문제 5. 사원이름, 월급, 커미션 출력하기! (컨트롤 + 엔터)

  • 문제 6. 이름, 월급 출력하는데 컬럼명이 소문자로 ename, sal 이라고 출력되게 하세요.

    select ename as "ename", sal as "sal"
    from emp;

연결 연산자 사용하기

컬럼과ㅓㄹ럼을 연결해서 출력할 수 있다. 연결 연산자는 에너키위에 수직바를 두번 연달아 쓴것임!

예제4. 이름과 월급을 서로 연결해서 출력하시오

select ename || sal
from emp;

문제 7. 이름과 월급을 출력하는데 다음과 같이 문자열로 출력하세요
ex) king의 월급은 5000 입니다.
답) select ename || '의 월급은'||sal||'입니다'
froom emp;

  • 싱글 쿼테이션 마크를 둘러줘야 하는 이유는 '' 안에있는것이 '문자' 다 라는것을 오라클에게 알려주는것!

문제 8. 다음과 같이 결과를 출력되게 SQL을 작성하시오!
ex) king의 직업은 president입니다.

select ename || '의 직업은' || job || '입니다.'
from emp;

현업에서 가장 많이 사용하는 데이터 베이스

  1. Oracle
  2. MySQL-유료 (Maria db-무료) 다운, 설치 참고
  3. posgreSQL

my sql

혼자 해보기

select count(*) from emp;

select ename, deptno
from emp;

select ename, sal*2
from emp;

select ename as 이름, sal*2 as "두배 월급"
from emp;

select ename || '의 월급은'||sal||'입니다'|| sal2||'는 월급2 한 것 입니다.'
from emp;

select concat(ename, '의 월급은', sal, '입니다.') as '야호'
from emp;

select concat(ename , '의 월급은', sal , '입니다.', sal '는 월급 2한 금액입니다.')
from emp;

select sal * 2 as 월급두배
from emp;

select ename, sal *2 as 월급두배
from EMP;

select ename as 이름 , sal *2 as 월급두배
from emp;

알게된 것

  • 오라클은 문자열 같이 출력할 때 || 를 써줬는데, my sql은 안되길래 찾아보니 concat() 을 사용해야 한다고 한다.

  • 수식이랑 문자열 합쳐서 출력도 가능 !!
    select concat(ename , '의 월급은', sal , '입니다.', sal2, '는 월급2한 금액입니다.') as 내맘대로
    from emp;

    이건 오라클! (띄어쓰기 하려고 " 썼다.)

profile
Slow and steady wins the race.

0개의 댓글