# 오라클 사용하기
- 오라클 프로그램 화면 기본 구성
- 오라클 SQL Deverloper 프로그램에서는 대소문자 구분하지 않아도 됨
- 코드 입력 후 출력해보기
drop table members;
drop table buy;
-- 회원 테이블 생성
CREATE TABLE members
( mem_id VARCHAR2(8) NOT NULL PRIMARY KEY, -- 사용자 아이디(PK)
mem_name VARCHAR2(20) NOT NULL, -- 이름
mem_number NUMBER(3) NOT NULL, -- 인원수
addr VARCHAR2(10) NOT NULL, -- 지역(경기,서울,경남 식으로 2글자만입력)
phone1 CHAR(3), -- 연락처의 국번(02, 031, 055 등)
phone2 CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
height NUMBER(3), -- 평균 키
debut_date DATE -- 데뷔 일자
);
-- 구매 테이블 생성
CREATE TABLE buy
( num NUMBER(8) PRIMARY KEY, -- 순번(PK)
mem_id VARCHAR2(8) NOT NULL, -- 아이디(FK)
prod_name VARCHAR2(20) NOT NULL, -- 제품이름
group_name VARCHAR2(10), -- 분류
price NUMBER NOT NULL, -- 가격
amount NUMBER(5) NOT NULL, -- 수량
CONSTRAINT fk_members FOREIGN KEY (mem_id) REFERENCES members(mem_id)
);
-- member 테이블에 데이터 삽입
INSERT INTO members VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, TO_DATE('2015-10-19', 'YYYY-MM-DD'));
INSERT INTO members VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, TO_DATE('2016-08-08', 'YYYY-MM-DD'));
INSERT INTO members VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, TO_DATE('2015-01-15', 'YYYY-MM-DD'));
INSERT INTO members VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, TO_DATE('2015-04-21', 'YYYY-MM-DD'));
INSERT INTO members VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, TO_DATE('2007-08-02', 'YYYY-MM-DD'));
INSERT INTO members VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, TO_DATE('2019-02-12', 'YYYY-MM-DD'));
INSERT INTO members VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, TO_DATE('2014-08-01', 'YYYY-MM-DD'));
INSERT INTO members VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, TO_DATE('2011-02-10', 'YYYY-MM-DD'));
INSERT INTO members VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, TO_DATE('2016-02-25', 'YYYY-MM-DD'));
INSERT INTO members VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, TO_DATE('2014-06-19', 'YYYY-MM-DD'));
-- buy 테이블에 데이터 삽입
INSERT INTO buy VALUES(1, 'BLK', '지갑', NULL, 30000, 2);
INSERT INTO buy VALUES(2, 'BLK', '맥북프로', '디지털', 10000, 1);
INSERT INTO buy VALUES(3, 'APN', '아이폰', '디지털', 200000, 1);
INSERT INTO buy VALUES(4, 'MMU', '아이폰', '디지털', 20000, 5);
INSERT INTO buy VALUES(5, 'BLK', '청바지', '패션', 50000, 3);
INSERT INTO buy VALUES(6, 'MMU', '에어팟', '디지털', 80000, 10);
INSERT INTO buy VALUES(7, 'GRL', '노트북2', '서적', 1500, 5);
INSERT INTO buy VALUES(8, 'APN', 'e-사전', '서적', 2500, 2);
INSERT INTO buy VALUES(9, 'APN', '청바지', '패션', 3800, 1);
INSERT INTO buy VALUES(10, 'MMU', '지갑', NULL, 1500, 1);
INSERT INTO buy VALUES(11, 'APN', '모두의 sql', '서적', 150, 1);
INSERT INTO buy VALUES(12, 'MMU', '지갑', NULL, 300, 4);
-- member 테이블 조회
SELECT * FROM members;
-- buy 테이블 조회
SELECT * FROM buy;
-- member 테이블 조회
SELECT * FROM members;
출력 >>>
-- buy 테이블 조회
SELECT * FROM buy;
출력 >>>
# DB 데이터 베이스
# DBMS 데이터 베이스 메니지먼트 시스템
# ISOS
# 계층형 DB
# 네트워크형 DB
# 키 - 값 DB
# 관계형 DB
# SQL
▶ 데이터 분석 과정
문제인식 > 데이터 수집과 가공 > 데이터 분석 > 분석결과 실행
▶ 정형데이터
▶ 비정형데이터
▶ SQL(Structured Query Language)
# SQL 명령문의 종류
# 유형별로 정리한 SQL 명령문
DQL - SELECT문
-- 현재 내가 작업하고 있는 공간을 의미
show user;
-- select 문 사용하기
select *
from members; -- from 이후에 붙는 테이블 명에 해당하는 테이블 값을 불러옴
select *
from jobs;
select *
from employees;
select *
from buy;
select mem_name
from members; -- 테이블의 특정 컬럼을 불러올 때
select mem_name, phone1
from members; -- 다중 선택한 컬름을 불러올 때
select mem_name, phone1, debut_date
from members;
-- 다중의 테이블에서 각각 컬럼 가져오기(컬럼이름이 다를때는 가능)
select mem_name, prod_name
from members, buy;
-- 컬럼의 이름이 같을 때는 불러오려는 테이블을 정확히 명시
select mem_name, prod_name, buy.mem_id
from members, buy;
-- 컬럼의 혼동을 예방하기 위해서는 테이블을 명확하게 해주고 값을 불러오는 것이 좋음
select members.mem_name, buy.prod_name, buy.mem_id
from members, buy;
-- 약자를 사용해서도 불러오기 가능
select m.mem_name, b.prod_name, b.mem_id
from members m, buy b;
실습 내용
SHOW USER;
SELECT MEM_NAME,ADDR,DEBUT_DATE
FROM MEMBERS;
SELECT *
FROM MEMBERS
WHERE ADDR = '서울';
SELECT *
FROM MEMBERS
WHERE MEM_NAME = '트와이스';
SELECT *
FROM MEMBERS
WHERE phone1 = '02';
-- 오름차순, 내림차순 정렬 ORDER BY 열이름 ASC OR DESC
SELECT *
FROM MEMBERS
ORDER BY mem_number DESC;
SELECT *
FROM employees;
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM employees;
-- 중복 출력값 제거하기 DISTINCT
SELECT DISTINCT JOB_ID
FROM EMPLOYEES;
SELECT DISTINCT FIRST_name
FROM EMPLOYEES;
-- 열에 별칭을 지정해서 출력하기(AS 이후에 지정한 이름으로 변수명이 출력됨)
SELECT EMPLOYEE_ID AS 사원번호, FIRST_NAME AS 이름, LAST_NAME AS 성
FROM employees;
-- 두개의 열을 붙여서 출력하는 방법
SELECT EMPLOYEE_ID, FIRST_NAME||LAST_NAME
FROM employees;
-- 여러개의 열을 붙여서 출력하는 방법(가운데 공백주기, 문자열 붙여서 출력)
SELECT EMPLOYEE_ID, FIRST_NAME||' '||LAST_NAME,
email||'@'||'COMPANY.COM'
FROM employees;
-- 변수명 변경까지 적용하기
SELECT EMPLOYEE_ID AS 사원번호, FIRST_NAME||' '||LAST_NAME AS 이름,
email||'@'||'COMPANY.COM' AS 사원메일
FROM employees;
-- 산술처리: 데이터 값 계산하기
-- 값만 찍어서 출력해주는 것임, 원본데이터엔 변화없음
SELECT EMPLOYEE_ID, salary, salary+500, salary-100, (SALARY*1.1)/2
FROM employees;
SELECT EMPLOYEE_ID AS 사원번호,
salary AS 연봉,
salary+500 AS 추가급여,
salary-100 AS 인하급여,
(SALARY*1.1)/2 AS 조정급여
FROM employees;
SELECT PROD_NAME AS 제품이름,
PRICE AS 가격,
AMOUNT AS 수량,
PRICE * AMOUNT AS 합계,
(PRICE * AMOUNT)*0.85 AS "할인가격15%"
FROM BUY
ORDER BY AMOUNT ASC, 합계 DESC, "할인가격15%" DESC;
SELECT DISTINCT MEMBERS.ADDR, PHONE1||'-'||PHONE2 AS 전화번호
FROM MEMBERS;
SELECT d.department_id AS 부서ID, d.department_name AS 부서이름,
j.min_salary AS 최소연봉, j.max_salary AS 최대연봉,
c.country_name AS 국가이름
FROM DEPARTMENTS D, JOBS J, COUNTRIES C;
6월 28일_SQL(VIEW, JAVA에서 SQL불러오기) (0) | 2024.06.28 |
---|---|
6월 27일_SQL(데이터의 무결성, 제약조건) (0) | 2024.06.27 |
6월 26일_SQL(서브쿼리문, 다중행연산자, DML, DDL) (0) | 2024.06.26 |
6월 25일_SQL( 단일함수, 그룹함수, JOIN) (0) | 2024.06.25 |
6월 24일_SQL(WHERE조건절, 연산자, 문자, 숫자, 날짜 함수) (0) | 2024.06.24 |