SQL 1

최인영·2023년 1월 17일
0

1. 다운로드(11버전 다운로드) : 데이터베이스 서버 프로그램

https://www.oracle.com/database/technologies/xe-prior-release-downloads.html





오라클 서버 서비스 포트번호 : 1521

설치확인

제어판 - 관리도구 -서버스

2. sql developer 다운로드 : 데이터 베이스 클라이언트 프로그램





도구 -환경설정

  1. 관리자 접속 후 사용자 계정 생성
  2. 생성한 계정으로 접속
CREATE USER sql3 IDENTIFIED BY 1234;  
GRANT connect, resource, dba to sql3;
  1. 샘플 데이터 생성 연습
CREATE TABLE DEPT(
    DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
    DNAME VARCHAR2(14),
    LOC VARCHAR2(13) 
);
commit;

CREATE TABLE EMP(
    EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
	ENAME VARCHAR2(10),
	JOB VARCHAR2(9),
	MGR NUMBER(4),
	HIREDATE DATE,
	SAL NUMBER(7,2),
	COMM NUMBER(7,2),
	DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT
);
-- dept테이블 4개의 행을 입력
INSERT INTO DEPT(deptno,dname,loc) VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT(deptno,dname,loc) VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT(deptno,dname,loc) VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT(deptno,dname,loc) VALUES(40,'OPERATIONS','BOSTON');
INSERT INTO dept(deptno,dname,loc) VALUES(50,'IT', 'NEW YORK');
commit;
select * from dept;

-- emp테이블 : insert문에서 테이블이름뒤 컬럼명을 생략하면 전체 컬럼을 가르킴
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-2-1985','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-2-1987','dd-mm-yyyy'),1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
INSERT INTO EMP VALUES
(9999,'ACE','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,NULL);
commit;

select * from emp;

※ 잘못입력시 지워고 새로 입력할려면

delete from dept;
commit;
delete from emp;
commit;

데이터를 조회하는 select ... from ... where ... order by

-- 데이터를 저장하는 소프트웨어 : 데이터베이스 관리 시스템(DBMS)
-- oracle, mysql, mariadb, mssql, tibero(티맥스 티베로 ),....
-- RDBMS : 테이블 형태로 저장되는 관계형 데이터베이스 관리 시스템
-- 빅데이터 :  많다, 다양하다
-- DDL 데이터 정의 (create, alter, drop)
-- DML 데이터 조작 (insert, update, delete, select)
-- DCL 권한 제어
-- TCL 실행 제어

-- 실행순서
-- 3) select(조회) ... 1) from(어느테이블) ... 2) where(행 조건) ... 4)order by(정렬)

select empno as 번호,ename as 이름,deptno as 부서번호   -- 3)
from emp -- 1)
where deptno = 20 -- 2)
order by ename asc; -- asc 오름차순  4) 
-- order by empno desc; -- 내림차순  4) desc 

-- select결과물 --> View

-- 실행순서로 인해 where절에 별칭(alias)을 사용하면 에러
select empno as 번호,ename as 이름,deptno as 부서번호   -- 3)
from emp -- 1)
where 부서번호 = 20 -- 2)
order by ename asc; -- 4) 

-- order by절에 별칭(alias) 사용가능
select empno as 번호,ename as 이름,deptno as 부서번호   -- 3)
from emp -- 1)
where deptno = 20 -- 2)
order by 이름 asc; -- 4) 

select 컬럼, 컬럼, ...

-- 주석 : 실행되지 않는 코드, 코드의 설명을 표현...
/*
여러줄을 주석을 
사용하고 싶을때
*/
-- 명령의 끝 : ;으로 표현
-- 테이블(,)의 데이터를 조회할때
-- select 컬럼명 from 테이블명 where 조건 order by 컬럼명 asc(오름차순) desc(내림차순)

desc emp; -- 테이블구조 출력

-- 원하는 컬럼 출력
select ename from emp;
select empno, ename from emp;
select ename, empno from emp;

-- 문자를 표현할때 ''함께 사용
select empno, ename from emp
where ename = 'SMITH';

-- 숫자를 표현할때 ''를 사용하지 않는다. '123' vs 123
select empno, ename from emp
where empno = 7369;
-- 자동형변환
select empno, ename from emp
where empno = '7369';

-- 테이블에 존재하지 않는 값들도 출력이 가능하다

-- 문자값을 추가
select empno, ename, 'yes' as 출근 from emp;
-- 숫자값을 추가
select empno, ename, 100 as 점수 from emp;
-- 계산식 추가
select empno, ename, 2+3 from emp;
-- select문을 계산기로 이용
select 2+3 from dual;
select 5-2 from dual;
select 5*2 from dual;
select 5/2 from dual;
select mod(14, 5) from dual; -- 함수는 다음에 자세하게 수업
select floor(3.14) from dual;
-- 소수점 버림 함수를 이용하면 나누기의 몫을 구할 수 있다
select floor(14/5) from dual;

select floor(14/5), mod(14, 5) 나머지 from dual;
-- 조회 결과에 새로운 열을 추가 할 수 있다.
select ename, sal, comm, sysdate as 오늘 from emp;
-- 조회 결과에 기존열의 계산값을 추가 할 수 있다.
select ename, sal as 현재급여, sal + (sal*0.1) as 인상된급여 from emp;

select ename, sal, comm, sal+nvl(comm, 0) as 총급여 --  nvl(1,2)1이 null이면 값2값이 된는 함수  3)  
from emp    -- 1)
where sal+nvl(comm, 0) > 2000 --2
order by sal+nvl(comm, 0) desc; -- 4 

select ename, sal, comm, sal+nvl(comm, 0) as 총급여 -- 3) 
from emp    -- 1)
where sal+nvl(comm, 0) > 2000 --2
order by 총급여 desc; -- 4 


-- 중복된 행을 제거하는 distinct
-- distinct
-- 열값이 중복되면 제거되면 X, select의 결과가 중복되면 O -> select 바로 다음에
select distinct ename, deptno from emp;
-- distinct의 위치는 컬럼앞이 아니고 select 뒤 -> distinct범위는 from절 앞까지
select distinct deptno, ename from emp;
select distinct deptno from emp;
profile
부감하는 공간.

0개의 댓글