참고자료
2022.07.13 - [oracle] - 오라클 정리 자료
oracle 기초 명령어
2022.07.13 - [oracle] - 1. oracle 시작하기 (데이터 타입, 기초 명령어)
CREATE TABLE
테이블 생성
ex)
CREATE TABLE member
(num NUMBER, name VARCHAR2(12), addr VARCHAR2(20));
DESC
테이블 유형 확인
ex)
DESC member
INSERT INTO VALUES
행 추가
ex)
INSERT INTO member(num, name, addr) VALUES(1, '홍길동', '서울');
SELECT FROM
원하는 칼럼 데이터 보기
ex)
SELECT num, name FROM member;
SELECT * FROM member;
SELECT FROM WHERE
원하는 정보가 들어간 행 보기
ex)
SELECT num, name, addr FROM member WHERE num=1;
UPDATE SET WHERE
특정 정보 변경하기
ex)
UPDATE member SET name='이정호' WHERE num=1;
DELETE FROM WHERE
행 삭제하기
ex)
DELETE FROM member WHERE num=3;
DROP TABLE
테이블 삭제하기
ex)
DROP TABLE member;
기초 명령어
2022.07.13 - [oracle] - 2. oracle (ED, 명령어)
ED
메모장으로 편집
/
ED 편집 후 실행하면 행 추가
SET LINESIZE
테이블 넓이 설정
ex)
SET LINESIZE 200;
SELECT*FROM emp;
SET PAGESIZE
페이지 길이 설정
ex)
SET PAGESIZE 20;
SELECT*FROM emp;
COLLUMN FORMAT
칼럼 간격 설정
ex)
COLUMN ename FORMAT A10;
COLUMN job FORMAT A10;
SELECT*FROM emp;
COMMIT
내용 저장
DELETE FROM 테이블명
테이블 삭제
ex)
DELETE FROM member
ROLLBACK
삭제 복구
SYSDATE
현재 날짜, 시간 입력, VALUES 안에 넣는다.
CREATE SEQUENCE
시퀀스 생성
ex)
CREATE SEQUENCE 시퀀스명_seq
NEXTVAL
해당 시퀀스의 값을 증가 시킨다.
ex)
SELECT test_seq.NEXTVAL FROM dual;
CURRVAL
현재 시퀀스를 알 수 있다.
기본 데이터 양식
2022.07.13 - [oracle] - 3. oracle (scott, 실행순서, 데이터 양식, ASC, DESC, AS)
emp = 테이블명
empno = 사원번호
ename = 사원이름
job = 직업, 직책
mgr = manager's empno (매니저, 직속 상관의 사원번호)
hiredate = 입사일
sal = 봉급
comm = 성과급, 보너스
deptno = 부서번호
연산자
2022.07.13 - [oracle] - 4. oracle (연산자)
비교연산자
=, !=, >, <, >=, <=
논리연산자
AND, OR , NOT
SQL 연산자
IN, ANY, ALL, BETWEEN, LIKE ,IS NULL, IS NOT NULL
IN 연산자 ( OR 연산자와 비슷한 역활)
ANY 연산자 (조건을 비교할때 어느 하나라도 맞으면 true)
ALL 연산자(조건을 비교할때 조건이 모두 맞느면 true)
BETWEEN A AND B (A와 B 사이의 데이타를 얻어온다)
IS NULL (NULL 인경우 TRUE) , IS NOT NULL (NULL 이 아닌경우 TRUE)
EXISTS (데이터가 존재하면 TRUE)
LIKE 연산자 (문자열 비교)
결합 연산자 ( || ) =>단순히 문자열을 연결해서 하나의 데이타로 리턴한다.
파일 관리하기
2022.07.14 - [oracle] - 5. oracle (SPOOL, HOST)
SPOOL, SPOOL OFF
자주쓰는 코드는 메모장에 저장해서 파일이름.sql로 저장해서 필요할때 사용할 수 있다.
HOST, EXIT, TYPE
오라클 창을 빠져나오고 다시 돌아갈 수 있다. TYPE을 사용해 직전에 저장한 파일을 열 수 있다.
단일행 함수 - 문자함수
2022.07.14 - [oracle] - 6. oracle(단일행 함수,문자 함수)
CHR(아스키 코드)
SQL>SELECT CHR(65) FROM DUAL ;
CONCAT(칼럼명, '붙일문자')
문자열 연결함수
SQL>SELECT CONCAT(ename, ' 님' ) name FROM emp ;
INITCAP( '문자열' )
시작문자를 대문자로 바꿔준다.
SQL>SELECT INITCAP( 'hello world') FROM DUAL;
LOWER( '문자열' )
문자열을 소문자로 바꿔준다.
SQL>SELECT LOWER( 'HELLO!' ) FROM DUAL;
UPPER( '문자열' )
문자열을 대문자로 바꿔준다.
SQL>SELECT UPPER( 'hello!' ) FROM DUAL;
LPAD( '문자열' , 전체 자리수 , '남는자리를 체울 문자')
왼쪽에 체운다.
SQL>SELECT LPAD( 'HI', 10 , '*' ) FROM DUAL;
RPAD( '문자열' , 전체 자리수 , '남는자리를 체울 문자')
오른쪽에 체운다.
SQL>SELECT RPAD( 'HELLO', 15 , '^' ) FROM DUAL;
LTRIM( '문자열' , '제거할문자' )
좌측에 있는 문자 제거
SQL>SELECT LTRIM( 'ABCD' , 'A' ) FROM DUAL;
SQL>SELECT LTRIM( ' ABCD', ' ' ) FROM DUAL;
SQL>SELECT LTRIM( ' AAAABBACC', 'A' ) FROM DUAL;
SQL>SELECT LTRIM( 'ACACBCD' , 'AC' ) FROM DUAL;
RTRIM( '문자열' , '제거할문자')
우측에 있는 문자 제거
SQL>SELECT RTRIM( 'ACACBCD', 'CD') FROM DUAL;
REPLACE( '문자열1' , '문자열2' , '문자열3')
문자열 1에 있는 문자열중 문자열2를 찾아서 문자열3 으로 바꿔준다.
SQL>SELECT REPLACE( 'Hello mimi' , 'mimi', 'mama' ) FROM DUAL;
SUBSTR( '문자열' , N1, N2 )
문자열의 N1 번째 위치에서 N2 개만큼 문자열 빼온다.
SQL>SELECT SUBSTR( 'ABCDEFGHIJ' , 3 , 5) FROM DUAL;
ASCII('문자')
문자에 해당하는 ASCII 코드값을 반환한다.
SQL>SELECT ASCII( 'A' ) FROM DUAL;
LENGTH( '문자열' )
문자열의 길이를 반환한다.
SQL>SELECT LENGTH( 'ABCDE' ) FROM DUAL;
LEAST( '문자열1', '문자열2' , '문자열3' )
문자열 중에서 가장 앞의 값을 리턴한다.
SQL>SELECT LEAST( 'AB','ABC','D') FROM DUAL;
NVL(칼럼명 , 값 )
해당 칼럼이 NULL 인경우 정해진 값을 반환한다.
SQL>SELECT ename,NVL(comm, 0) FROM emp ;
단일행 함수 - 숫자함수, 날짜함수
2022.07.14 - [oracle] - 7. oracle (단일행 함수, 숫자 함수, 날짜 함수, 변환함수)
숫자함수
ABS(숫자)
숫자의 절대값을 반환한다.
SQL>SELECT ABS(-10) FROM DUAL;
CEIL(소수점이 있는 수)
파라미터 값보다 같거나 가장 큰 정수를 반환(올림)
SQL>SELECT CEIL(3.1234) FROM DUAL;
SQL>SELECT CEIL(5.9999) FROM DUAL;
FLOOR(소수점이 있는 수)
파라미터 값보다 같거나 가장 작은 정수반환(내림)
SQL>SELECT FLOOR(3.2241) FROM DUAL;
SQL>SELECT FLOOR(2.888829) FROM DUAL;
ROUND(숫자,자리수)
숫자를 자리수+1 번째 위치에서 반올림한다.
SQL>SELECT ROUND(3.22645, 2) FROM DUAL;
SQL>SELECT ROUND(5.2345, 3) FROM DUAL;
MOD(숫자1 , 숫자2)
숫자1을 숫자2로 나눈 나머지를 리턴한다.
SQL>SELECT MOD(10,3) FROM DUAL;
TRUNC(숫자1, 자리수)
숫자1의 값을 소주점이하 자리수까지만 나타낸다. 나머지는 잘라낸다.
SQL>SELECT TRUNC(12.23532576 , 2) FROM DUAL;
SQL>SELECT TRUNC(34.1234) FROM DUAL;
날짜 함수
SYSDATE
현재 시간을 리턴한다.
SQL>SELECT SYSDATE FROM DUAL;
ADD_MONTHS( 날짜, 더해질월)
SQL>SELECT ADD_MONTHS(SYSDATE, 10) FROM DUAL;
LAST_DAY(날짜)
해당날짜에 해당하는 달의 마지막 날짜을 반환한다.
SQL>SELECT LAST_DAY(SYSDATE) FROM DUAL;
MONTHS_BETWEEN(날짜1, 날짜2)
두 날짜 사이의 월의 수
SQL>SELECT empno,MONTHS_BETWEEN(SYSDATE, HIREDATE) 근무개월 FROM emp ;
문자변환함수, 숫자변환함수, 날짜변환함수
TO_CHAR(데이터, '출력형식')
숫자 or 날짜 데이터를 문자형으로 변환
SQL>SELECT TO_CHAR(SYSDATE , 'YYYY-MM-DD') FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'YYYY:MM:DD') FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'YYYY.MM.DD') FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'YY.MM.DD') FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'YY" 년 "MM" 월 "DD" 일 "') FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'HH:MI:SS' ) FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'AM HH:MI:SS' ) FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'PM HH:MI:SS' ) FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'HH24:MI:SS' ) FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'HH24" 시 "MI" 분 "SS" 초 "' ) FROM DUAL;
SQL>SELECT TO_CHAR(SYSDATE , 'YY" 년 "MM" 월 "DD" 일 " HH24" 시 "MI" 분 "SS" 초 "') D FROM DUAL;
sql>SELECT TO_CHAR(SYSDATE, 'MM.DD day') FROM DUAL;
sql>SELECT TO_CHAR(SYSDATE, 'MM.DD dy') FROM DUAL;
sql>SELECT TO_CHAR(SYSDATE, 'MM.DD d') FROM DUAL;
ex) 현재 날짜는 2016년 11월 3일 목요일 오후 12:10 입니다.
sql> SELECT '현재 날짜는 ' || TO_CHAR(SYSDATE, 'YYYY"년 "MM"월 "DD"일" day AM HH:MI') || ' 입니다' FROM DUAL;
TO_NUMBER('숫자에 대응되는 문자');
SQL>SELECT TO_NUMBER('999') +1 FROM DUAL;
TO_DATE('날짜에 대응되는 문자')
SQL>SELECT TO_DATE('2012-12-12') FROM DUAL;
TO_DATE( 문자열, 형식)
CREATE TABLE message( num NUMBER PRIMARY KEY, msg VARCHAR2(20), regdate DATE );
데이터 저장하기
sql>INSERT INTO message (num,msg,regdate) VALUES(1, ‘hi’, SYSDATE);
sql>INSERT INTO message VALUES(2, ‘hello’, ‘2016/10/20’);
sql>INSERT INTO message VALUES(2, ‘gura!’, TO_DATE(‘20161020123020’,’YYYYMMDDHHMISS’));
sql>INSERT INTO message VALUES(2, ‘gura!’, TO_DATE(‘20161020 오전 12:30’,’YYYYMMDD AM HH:MI’));
복수행 함수, GROUP BY
2022.07.14 - [oracle] - 8. oracle (복수행 함수, GROUP BY, HAVING)
복수행 함수
여러개의 row 당 하나의 결과값을 반환하는 함수.
COUNT(칼럼명)
해당 칼럼이 존재하는 ROW 의 갯수를 반환한다. 단, 저장된 데이터가 NULL 인 칼럼은 세지 않는다.
SQL>SELECT COUNT(ename) FROM emp;
SQL>SELECT COUNT(comm) FROM emp;
SQL>SELECT COUNT(*) FROM emp ;
SUM(칼럼명)
해당 칼럼의 값을 모두 더한 값을 리턴한다.
SQL>SELECT SUM(sal) FROM emp;
AVG(칼럼명)
해당 칼럼의 값을 모든값을 더한후 ROW 의 갯수로 나눈 평균값을 리턴한다. 단 NULL 칼럼은 제외된다.
SQL>SELECT AVG(sal) FROM emp;
SQL>SELECT AVG(comm) FROM emp;
ex) comm 이 NULL 인 사원도 평균에 포함 시켜서 출력을 하려면? hint : NVL() 함수를 이용한다.
SQL>SELECT AVG( NVL( comm , 0 ) ) FROM emp;
MAX(칼럼명)
최대값을 리턴한다.
SQL>SELECT MAX(sal) FROM emp;
MIN(칼럼명)
최소값을 리턴한다.
SQL>SELECT MIN(sal) FROM emp;
GROUP BY
그룹으로 묶을 때 사용한다.
급여가 2000 이상인 사원들의 부서별 평균 급여의 반올림 값을 평균 급여의 반올림 값으로 오름차순 정렬해서 출력해 보세요.
SQL>SELECT deptno, ROUND( AVG(sal) )
FROM emp
WHERE sal >= 2000
GROUP BY deptno
ORDER BY ROUND( AVG(sal) ) ASC ;
급여가 1000 이상인 사원들의 부서별 평균 급여를 출력해보세요. 단, 부서별 평균 급여가 2000 이상인 부서만 출력하세요.
SQL>SELECT deptno, AVG(sal)
FROM emp
WHERE sal >= 1000
GROUP BY deptno
HAVING AVG(sal) >= 2000 ;
join
2022.07.18 - [oracle] - join, 서브 쿼리 정리 및 예시
2022.07.14 - [oracle] - 9. oracle(JOIN)
참고
https://tragramming.tistory.com/74
https://pearlluck.tistory.com/46
oracle 예제
2022.07.14 - [oracle] - oracle quiz
2022.07.15 - [oracle] - oracle 복습
단일행 서브쿼리와 복수행 서브쿼리
2022.07.15 - [oracle] - 10. 서브쿼리(단일 행, 다중 행, 예제)
2022.07.18 - [oracle] - join, 서브 쿼리 정리 및 예시
단일행 서브쿼리
서브쿼리의 실행결과가 하나의 칼럼과 하나의 행만을 리턴해주는 쿼리 (하나의 데이터만 리턴해주는 쿼리)
복수행 서브쿼리
서브쿼리의 실행결과가 하나의 칼럼과 여러개의 행을 리턴해주는 쿼리 (여러개의 데이터만 리턴해주는 쿼리)
LEAD, LAG
2022.07.15 - [oracle] - 11. oracle (LEAD, LAG)
특정 값의 위, 아래 값을 구하고 싶으면 LEAD와 LAG을 사용한다.
LEAD (칼럼명, 숫자, 디폴트값)
LAG(칼럼명, 숫자, 디폴트값)
oracle 웹에서 확인하기
2022.07.15 - [oracle] - oracle 웹에서 확인하기
DDL, DML, DCL, TCL, 시퀀스
2022.07.15 - [oracle] - 12. oracle(DDL, DML, DCL, TCL, 시퀀스)
DDL : Data Definition Language
데이터 정의어
CREATE / ALTER / DROP
DML : Data Manipulation Language
데이터 조작어
INSERT / SELECT / UPDATE / DELETE
DCL : Data Control Language
데이터 제어어
CRANT / REVOKE
TCL : Transaction Control Language
트랜잭션 제어어
COMMIT / ROLLBACK / SAVEPOINT
시퀀스 만들기
ex)
INSERT INTO member
(num, name)
VALUES(member_seq.NEXTVAL,'해골')
DML (INSERT, UPDATE,DELETE)는 COMMIT하기 전까지는 임시반영일뿐 저장되지 않는다.
REFERENCE, 데이터 확인, 제약 조건
2022.07.15 - [oracle] - 13. REFERENCE, 데이터 확인, 제약 조건
데이터 확인하기
DESC USER_TABLES
테이블 확인하기
DESC USER_SEQUENCES
시퀀스 확인하기
DESC USER_CONSTRAINTS
제약조건 확인하기
제약조건
NOT NULL
NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로 칼럼 레벨에서 만 부여할수 있는 제약조건이다.
UNIQUE KEY (유일키)
저장된 값이 중복되지 않고 오직 유일하게 유지되어야 할때 사용하는 제약조건이다. (NULL 은 허용된다)
PRIMARY KEY (대표키)
NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다.
CHECK
조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건
FOREIGN KEY (외래키)
부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에 붙이는 제약조건 이다(예 emp 테이블의 deptno 칼럼)
DDL (CREATE, DROP, ALTER) - ALTER을 중심으로
2022.07.15 - [oracle] - 14. oracle(ALTER)
CREATE 생성 / DROP 삭제 / ALTER 변경
UPDATE는 row를 변경하는 것이고 ALTER은 table을 변경한다.
CREATE TABLE
테이블 만들기
sql>CREATE TABLE test(num NUMBER);
ALTER TABLE ADD
칼럼 추가
sql>ALTER TABLE test ADD(name VARCHAR2(10));
ALTER TABLE MODIFY
칼럼 수정
sql>ALTER TABLE test MODIFY(name VARCHAR2(20));
ALTER TABLE RENAME COLUMN TO
칼럼의 이름 바꾸기
sql>ALTER TABLE test RENAME COLUMN name TO myname;
ALTER TABLE DROP
칼럼 삭제
sql>ALTER TABLE test DROP(myname);
'database > oracle' 카테고리의 다른 글
15. 원하는 행 출력하기 ROWNUM (0) | 2022.07.18 |
---|---|
join, 서브 쿼리 정리 및 예시 (0) | 2022.07.18 |
14. oracle(DDL, ALTER) (0) | 2022.07.15 |
13. REFERENCE, 데이터 확인, 제약 조건 (0) | 2022.07.15 |
12. oracle(DDL, DML, DCL, TCL, 시퀀스) (0) | 2022.07.15 |