트랜잭션(Transaction) def: 더 이상 분할할 수 없는 최소 수행 단위(All or Nothing) 한 개 이상의 데이터 조작 명령어(DML)로 이루어진다. 어떤 기능 한 가지를 수행하는 sql문 덩어리이다. 트랜잭션을 제어하기 위해 사용하는 명령어를 TCL(Transaction Control Language)이라고 한다. 트랜잭션은 TCL 명령어를 사용하는 시점에서 끝나며, 새로운 트랜잭션이 시작된다. ROLLBACK 롤백은 현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다. COMMIT 지금까지 수행한 트랜잭션 명령어를 데이터베이스에 영구히 반영할 때는 커밋한다. 영구히 반영되므로 매우 신중하게 커밋하여야 한다. 롤백과 커밋 모두 사용하면 현재 트랜잭션이 끝나고 새 트..
데이터 수정 예시 UPDATE DEPT_TEMP2 SET DNAME = 'DATABASE', LOC = 'SEOUL' WHERE DEPTNO = 40; -- 데이터를 특정하는 조건 -- 데이터 내용을 이전 상태로 되돌리기 ROLLBACK; -- 서브쿼리를 사용하여 데이터 수정하기 UPDATE DEPT_TEMP2 SET (DNAME, LOC) = (SELECT DNAME, LOC FROM DEPT WHERE DEPTNO = 40) WHERE DEPTNO = 40; 데이터 삭제 예시 DELETE FROM EMP_TEMP2 WHERE JOB = 'MANAGER'; -- where절에 서브쿼리 사용 DELETE FROM EMP_TEMP2 WHERE EMPNO IN (S..
데이터 추가 테이블 복사하여 생성하기 CREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT; -- 값 없이 구조만 복사하고 싶을 때 CREATE TABLE DEPT_TEMP AS SELECT * FROM DEPT WHERE 11; -- 항상 false라서 값 복사가 안 됨 insert into INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC) VALUES(50, 'DB', 'SEOUL'); -- 열 지정 생략 INSERT INTO DEPT_TEMP VALUES(50, 'DB', 'SEOUL'); -- null데이터 입력 INSERT INTO DEPT_TEMP (DEPTNO, LOC) VALUES..
서브쿼리(subquery) def: sql문 실행에 필요한 데이터를 추가로 조회하기 안에 sql문 내부에 사용하는 select문 예시 -- 마치 변수를 사용하는 것 같다 SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME = 'JONES') -- 함수를 사용한 단일행 서브쿼리문 SELECT E.EMPNO, E.ENAME, E.SAL, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO -- join조건문 AND E.DEPTNO = 20 AND E.SAL > (SELECT AVG(SAL) FROM EMP); 다중행 서브쿼리 다중행 서브쿼리(multi-row subquery)는 실행 결과 ..
조인(Join) 개념: 두 개 이상의 테이블 데이터를 가로로 연결한 것 예시 SELECT * FROM EMP, DEPT; -- 이 경우 emp테이블과 dept테이블의 모든 행 조합이 출력됨 SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; -- 두 테이블에서 DEPTNO가 일치하는 부분만 출력해줌 -- 별칭 설정 SELECT * FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO; SELECT E.EMPNO, E.ENAME, E.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO; -- *을 사용하면 어떤 순서로 열이 출력될지 명확히 알 수 없으며 열의 수정 및 삭제 변화를 감지하기 어..
다중행 함수 여러 행의 값을 하나의 값으로 만들어 출력 SUM, COUNT, MAX, MIN, AVG -- SUM. ALL SAL과 SAL 합계는 동일 SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; -- COUNT SELECT COUNT(*) FROM EMP; -- 테이블의 모든 행 수 SELECT COUNT(*) FROM EMP WHERE DEPTNO = 30; SELECT COUNT(*) FROM EMP WHERE COMM IS NOT NULL; -- MAX, MIN SELECT MAX(HIREDATE) FROM EMP WHERE DEPTNO = 10; -- 부서번호가 10이면서 가장 입사일이 최근인 사람 -- AVG SELECT AVG(DI..
DECODE SELECT EMPNO, ENAME, JOB, SAL, DECODE(JOB, 'MANAGER', SAL * 1.1, 'SALESMAN', SAL * 1.05, SAL * 1.03) AS UPSAL FROM EMP; decode 마지막 param은 default값 CASE문 --예시1 SELECT EMPNO, ENAME, JOB, SAL, CASE JOB WHEN 'MANAGER' THEN SAL * 1.1 WHEN 'SALESMAN' THEN SAL * 1.05 ELSE SAL * 1.03 END AS UPSAL FROM EMP; --예시2 SELECT EMPNO, ENAME, JOB, SAL, CASE WHEN COMM IS NULL THEN '해당 없음' WHEN COMM >= 0 THE..
숫자 함수 ROUND (반올림) / TRUNC (버림) SELECT ROUND(123.456, 0) FROM DUAL; -- return 123 SELECT ROUND(123.456, -1) FROM DUAL; -- return 120 CEIL, FLOOR(가까운 정수 리턴) SELECT CEIL(-3.14) FROM DUAL; -- return -3 MOD SELECT MOD(15,6) FROM DUAL; -- return 3 날짜 함수 SYSDATE: 현재 날짜, +연산, - 연산을 하면 일(day)단위가 바뀜 ADD_MONTHS SELECT SYSDATE, ADD_MONTHS(SYSDATE, 3) FROM DUAL; -- 현재 날짜로부터 3개월 뒤를 출력 MONTHS_BETWEEN SELECT SY..
SQL 문자 함수 ORACLE SQL 기준 UPPER, LOWER, INITCAP(첫글자만 대문자) SELECT ENAME, UPPER(ENAME), LOWER(ENAME), INITCAP(ENAME) FROM EMP; --upper로 문자열 비교 SELECT * FROM EMP WHERE UPPER(ENAME) = UPPER('scott'); LENGTH(길이) SELECT ENAME, LENGTH(ENAME) FROM EMP; SELECT ENAME, LENGTH(ENAME) FROM EMP WHERE LENGTH(ENAME) >= 5; SUBSTR --두번째 param은 시작 글자의 위치, 세번째 param은 리턴하고자 하는 글자의 개수 SELECT JOB, SUBSTR(JOB, 3,..
관계형 데이터베이스의 테이블 기본키(primary key) 테이블에 저장된 행을 식별할 수 있는 유일한 값이어야 한다. (eg. 주민등록번호) 값의 중복이 없어야 한다. NULL값을 가질 수 없다. 후보키(candidate key), 대체키(alternative key) 기본키가 될 수 있는 모든 키는 후보키이다. (eg. 학번, 아이디, 주민등록번호) 후보키 중에서 기본키가 아니게 된 모든 키를 대체키라고 한다. (eg. 주민등록번호가 기본키가 된 경우 학번, 아이디가 대체키) 외래키(foreign key) 특정 테이블에 포함되어 있으면서 다른 테이블의 기본키로 지정된 키 외래키를 통해 테이블 간 참조가 이루어지며 관계를 맺게 된다. 만약 한 테이블에 모든 정보를 넣었을 때 불필요한 중복을 피하기 위해..
PostgreSQL Postgresql 설치 및 시작 // 설치, 홈브류가 업데이트된 상태여야 한다. (brew update) brew install postgresql // 시작 brew services start postgresql // 중지 brew services stop postgresql db 설치 createdb 'test' psql 'test' // psequal 테이블 생성 /* 테이블 생성 */ CREATE TABLE table_name (column_1 datatype, column_2 datatype); /* 예시 */ CREATE TABLE users (name text, age smallint, birthday date); /* 확인 */ test=# \d /* exit */ t..
- Total
- Today
- Yesterday
- Redux
- youtube data api
- 개발 공부
- getter
- 인스턴스
- Java
- linkedlist
- useEffect
- GIT
- this
- CSS
- 리덕스
- 제네릭스
- JavaScript
- 깃
- SQL
- oracle
- Data Structure
- react
- 자바
- c언어
- 알고리즘
- Prefix Sums
- til
- Conflict
- jQuery
- rxjs
- package.json
- 포인터 변수
- Session
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |