Goals
- SQL Developer
- 실행
- 워크시트 만들기
- 용어 - 가로줄_행 vs 세로줄_열,
레코드 vs 필드
옵저베이션, 관측치 vs 베리어블, 변수
이그잼플 vs 어트리뷰트, 특성
로우 vs 칼럼
- 데이터 검색 :
컬럼별 검색, AS, DISTINCT,
행별로 검색 --> 조건
- AND, BETWEEN, IN, NOT IN
- 오라클에서 "다르다", 대소문자 구분, 문자열의 크기 비교
- AND OR NOT, 따옴표, LIKE, NULL
- 집합 : 합집합(union), 교집합(intersect), 차집합(minus)
Notes
table--> 열 : desc 명령어의 내용을 보여줌.
--> 데이터 : select * from table 내용을 보여줌.
Ctrl + Enter : 문장 하나만 실행
F5 : 스크립트 전체 실행
SQL 워크시트 만들기
도구 -> 워크시트 만들기 (Alt + F10)
가로줄 / 세로줄
● DBMS: records / fields
● 통계: observations(관측치) / variables(변수)
● Data-mining, Machine-learning: examples(예제) / attributes(특성)
가로줄(행) : 개별 데이터 / 세로줄(열) : 분류
Row / Column
데이터 검색
(1) 컬럼 별로 검색 - 프로젝션 (projection)
(2) 행 별로 검색 - 셀렉션 (selection)
>> 컬럼별 검색하기(projection)
select 컬럼이름 1, 컬럼이름 2, ... from 테이블이름;
-- 사원 테이블(emp)에서 사번(empno)과 사원이름(ename)을 검색
select empno, ename from emp;
--> 나열 순서는 관계 없음. 출력 순서가 바뀐다.
-- 테이블에서 모든 컬럼을 검색 : select *
select * from emp;
-- 컬럼 이름을 변경하기 (별명) : AS
select 컬럼이름 as 별명이름, ... from 테이블이름;
select empno as employeenumber, ename as employname from emp;
-- 월급을 연봉으로 바꿔주자 : select 칼럼 * 숫자
-- Null 을 처리하는 방법 --> 나중에 설명?
-- 중복된 행을 제거하고 검색 : select distinct 칼럼 from ~ ,
distinct의 범위는 select의 대상 컬럼 전체그룹(&&조건).
(a, b) 가 쌍으로 달라야만 distinct 한 것.
개별적으로 적용 불가능. (논리상)
>> 행별로 검색하기(selection)
조건에 맞는 레코드를 검색하는 방법. >> Where
SELECT 컬럼이름, … FROM 테이블이름 WHERE 조건;
같다에 '등호 하나'
AND
SELECT * from emp WHERE sal>=1000 and sal<2000;
BETWEEN --> 앞(최소값) 뒤(최대값) 숫자 모두 포함
SELECT * FROM emp
WHERE sal BETWEEN 3000 AND 5000; == SELECT * FROM emp WHERE sal>=3000 AND sal<=5000;
IN : 괄호 안의 숫자 들 중 하나이면 TRUE, 3개 이상 숫자, 문자 포함 가능
SELECT * FROM emp WHERE deptno = 10 OR deptno = 20;
SELECT * FROM emp WHERE deptno IN (10,20);
SELECT * FROM emp WHERE deptno != 10;
SELECT * FROM emp WHERE deptno NOT IN (10);
SELECT * FROM emp WHERE NOT deptno = 10;
오라클에서 다르다 : !=, <>, ^=
SELECT * FROM emp WHERE job = 'CLERK'; --> 문자열 : ""따옴표로 묶어 주어야.
>> Oracle에서 예약어(select, from, where, update ..) 테이블 이름, 칼럼 이름은 대/소문자 구분 X,
데이터는 대/소문자 구분을 하여야 함. 데이터이기 때문.
>> 문자열의 크기 비교?
부등호로 비교 가능. UNICODE?
문자가 없으면 0. 있으면 0보다 큰 숫자라고 보면 됨.
MARTIN > KING // A<B<C<D ....
NOT [ A OR B OR C] = [ A and B and C ]
오라클에서는 '작은 따옴표'만 사용해야 한다.
컬럼의 별명에서만 "큰따옴표"를 사용한다. --> ""쓸때 AS 생략 가능
LIKE
' % ' 글자수 상관 없이 아무 글자나 들어갈 수 있다.
' _ ' 글자 상관 없이 딱 한글자만 들어갈 수 있다.
WHERE 칼럼명 LIKE 'A%';
NULL
SELECT * FROM emp WHERE comm IS NULL;
SELECT * FROM emp WHERE comm IS NOT NULL;
>> 집합
> 합집합(union) : OR , UNION
SELECT empno, ename, deptno FROM emp WHERE deptno = 10
UNION
SELECT empno, ename, deptno FROM emp WHERE deptno = 20 ;
# 집합연산자를 사용할 때 두 개의 select 문장은 같은 컬럼들을 같은 순서로 검색해야 한다.
> 교집합(intersect) : AND, INTERSECT
SELECT * FROM emp WHERE ename LIKE '%E%'
INTERSECT
SELECT * FROM emp WHERE job LIKE '%E%';
--> 같다 : SELECT * FROM emp WHERE ename LIKE '%E%' AND job LIKE '%E%';
> 차집합(minus) : a AND (NOT b), MINUS
SELECT * FROM emp WHERE job LIKE '%E%'
MINUS
SELECT * FROM emp WHERE ename LIKE '%E%';
--> 같다 : SELECT * FROM emp WHERE job LIKE '%E%' AND (NOT ename LIKE '%E%');
'DB > Oracle' 카테고리의 다른 글
Oracle DB6_ 고유키,외래키,Join (0) | 2019.09.22 |
---|---|
Oracle DB5_ 그룹함수, 서브쿼리 (0) | 2019.09.20 |
OracleDB4_ DUAL테이블, 문자조작함수, 숫자조작함수, 날짜조작함수, 데이터타입변환, NVL함수 (0) | 2019.09.17 |
Oracle DB2_기본적인 sql 쿼리 실행하기, 오라클 계정 실습 (0) | 2019.09.14 |
Oracle DB 1 _ SQL의 정의와 유래, 오라클 DB 접속하기, Scott계정 이용 (0) | 2019.09.10 |