*대소문자 구분x
다른 유저의 테이블을 복사하기
CREATE TABLE EMP
AS
SELECT * FROM HR.EMP ;
테이블 정보 확인
SELECT * FROM 테이블명 ;
EX) SELECT * FROM EMP ;
데이터 타입
A NUMBER(3) > 0~999 //정수 3자리
A NUMBER(2,2) > 0.00~0.99
A NUMBER(3,2) > 0.00~9.99
-----------------------------------------------
SELECT절
- 컬럼명1, 컬럼명2...
-모든컬럼 : *
-수식
-별칭 : AS 별칭명 => AS 생략 가능
-함수
-서브쿼리
- || : 결합 연산자
SELECT * FROM EMP;
SELECT LAST_NAME, SALARY FROM EMP;
SELECT LAST_NAME, SALARY, SALARY*2
FROM EMP;
SELECT LAST_NAME, SALARY, SALARY*2 AS BONUS
FROM EMP; >>컬럼의 별칭 : AS
SELECT LAST_NAME, SALARY, SALARY*2 AS YEAR BONUS
FROM EMP; >> AS 가 한 단어 아닐 시 "별칭명"
SELECT FIRST_NAME || LAST_NAME AS NAME
FROM EMP; >>결합 후 별칭까지
SELECT FIRST_NAME || ' '|| LAST_NAME AS NAME
FROM EMP; >>결합 후 별칭까지 + 띄어쓰기
--------------------------------------------------
정렬
ORDER BY 컬럼명 [옵션], 컬럼명[옵션]
옵션
-오름차순 ASC => 생략가능
-내림차순 DESC
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY SALARY DESC, HIRE_DATE ;
*SELECT 절에 없는 컬럼으로도 정렬가능
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY DEPARTMENT_ID;
*ORDER BY 절에서 컬럼명 대신에 인덱스를 더 많이 사용한다
SELECT LAST_NAME, SALARY, HIRE_DATE
FROM EMP
ORDER BY 2 DESC, 3;
---------------------------------------------------
NULL
=> 아직 입력되지 않은 값
=> NULL 값인 컬럼이 산술식에 포함되면 결과도 NULL
NVL(컬럼명, 널일경우줄값)
총급여 = 급여 + (급여*판매수당비율)
SELECT LAST_NAME, SALARY + (SALARY * NVL(COMMISSION_PCT,0)) AS TOTAL_SALARY
FROM EMP;
----------------------------------------------------
조건 검색
-숫자, 문자, 날짜
-WHERE 조건식 논리연산자 조건식 논리연산자 조건식
-조건식 : 좌항 비교연산자 우항 => T, F
-조건식 : 컬럼명 비교연산자 값 또는 수식
숫자 조건검색
-숫자만 : 서식, 표시형식 빼고
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY >= 10000
ORDER BY SALARY ;
문자 조건 검색
-'문자' : 작은 따옴표로 감싼다
-'문자' : 대소문자를 구분한다
SELECT SALARY, HIRE_DATE
FROM EMP
WHERE LAST_NAME = 'Chen' ;
날짜 조건 검색
- '2020-10-10'
- TO_DATE('문자', '날짜패턴') => TO_DATE('2010-10-10','YYYY-MM-DD')
2005년 이전에 입사한 사원의 정보
SELECT * FROM EMP
WHERE HIRE_DATE < '2005-01-01' ;
-----------------------------------------------------
조건이 여러개
SELECT * FROM EMP
WHERE SALARY < 7000
AND HIRE_DATE < '2005-01-01' ;
-----------------------------------------------------
비교연산자 : >, <,>= ,<= , =, !=, <>, ><
기타연산자
-(NOT)BETWEEN 값1 AND 값2
-(NOT)IN
-(NOT)LIKE
-IS(NOT)
BETWEEN 값1 AND 값2
-범위 검색
-숫자, 문자, 날짜 범위 가능
-값1과 값2가 모두 포함된다
-값1 최소값, 값2 최대값(순서 바뀌면 안됨)
EX)급여 10000~ 15000 사이의 사원 정보
SELECT LAST_NAME, SALARY
FROM EMP
WHERE SALARY BETWEEN 10000 AND 15000 ;
IN(값1, 값2..)
-목록에 있으면
부서번호가 10 또는 30 부서에 근무하는 사원의 이름과 월급, 부서번호
SELECT LAST_NAME, SALARY, DEPARTMENT_ID
FROM EMP
WHERE DEPARTMENT_ID = 10 OR DEPARTMENT_ID = 30;
SELECT LAST_NAME, SALARY, DEPARTMENT_ID
FROM EMP
WHERE DEPARTMENT_ID IN(10,30);
LIKE
-패턴 검색 연산자
-문자 자료에만 사용 가능
% : 여러 문자를 모를 경우
_ : 문자 하나를 모를 경우
SELECT * FROM EMP
WHERE LAST_NAME LIKE 'C%' ;
SELECT * FROM EMP
WHERE LAST_NAME LIKE '__N%' ;
SELECT * FROM EMP
WHERE EMAIL LIKE '%S%' ;
IS
SELECT * FROM EMP
WHERE COMMISSION_PCT IS NULL ;
=> IS를 =로 하면 값이 안나옴
'WORK > DB_Oracle' 카테고리의 다른 글
##SQL 6일차 0504(테이블 생성, 제약조건) (0) | 2021.05.04 |
---|---|
##SQL 5일차 0503(개념적,논리적,물리적설계,데이터타입) (0) | 2021.05.03 |
##SQL 4일차 0430(서브쿼리,DML,TCL) (0) | 2021.05.01 |
##SQL 3일차 0429 (0) | 2021.04.29 |
##SQL 2일차 0428 (0) | 2021.04.28 |