자격증(104)
-
DML - UPDATE, INSERT, DELETE 주의점, NVL(MAX)로 최대 넘버링 주기, ?에 따른 pstmt의 갯수....
보호되어 있는 글입니다.
2025.06.20 -
[AUTO COMMIT] - DDL, 트랜잭션
DDL문은 자동 Commit이 들어있다.하지만, 툴(TOOL)마다 설정하는 부분이 존재한다. /* 1.트랜잭션 / 2.데이터사전 / 3.인덱스 / 4.시퀀스 [ 1. 트랜잭션 ] - 트랜잭션은 데이터 처리에서 논리적인 하나의 작업 단위를 의미한다. - ALL or Nothing : 여러개의 명령어 집합이 정상적으로 처리되면 정상종료하고, 명령어들중 하나라도 잘못된다면 전체를 취소한다. - DML 작업이 성공적으로 처리되었다면 COMMIT을, 취소해야 한다면 ROLLBACK 명령을 실행한다. ROLLBACK : COMMIT 후에 취소가 되지 않는다. - DDL(테이블생성, 수정), DCL(권한)문이 ..
2025.06.20 -
CREATE with 제약조건
CREATE시 스키마를 작성해주지 않으면, 로그인한 유저가 주인으로 만들어지죠? 설명:Oracle, MariaDB, MS SQL Server 등 대부분의 DBMS에서는 CREATE TABLE 등 객체를 생성할 때 **스키마(schema)**를 명시하지 않으면,현재 로그인한 유저(계정)의 기본 스키마(=계정명) 아래에 객체(테이블, 뷰 등)가 생성됩니다. 제약조건(CONSTRAINT)PRIMARY KEY : 일반키 선언UNIQUE : 중복안됨NOT NULL : NULL 비허용FOREIGN KEY : 외래키 선언CHECK : 범위(성별 이면, 남/녀 만 입력해야하는것)DEFAULT : 기본 값, NULL대신 다른 기본값으로 설정시 차이점 - CREATE[ORACLE][MSSQL] * -- 테이블 생성은..
2025.06.20 -
JOIN
깨딸은 점!!! JOB_HISTORY JHJOBS JEMPLOYEES E E를 J랑 하고 E가 또 JH랑 1:1관계를 맺엇다. 그런데, JH랑 J랑은 맺을 필요없다. 그냥 ------- 한줄로 생각하면된다. 이미 J,JH가 E랑 관계를 맺었는데, 또 J랑 JH랑 맺을 필요는 없다.. 또하나, 부서는 이미 EMPLYEES랑 1:1관계를 맺었는데, 다시 JOB_HISTORY를 맺으면, 공집합이 나온다. 즉, 이미 JOIN관계를 맺고 결과가 나왔는데, 똑같이 E.DEPARTMENT_ID = D.DEPARTMENT_ID 맺었는데, 다시 D.DEPARTMENT_ID = J.DEPARTMENT_ID로 맺으면 공집합이 됨 그럼 어떻게 해야할까? EPLOYEES로 JOB_HISTORY, JOBS랑 관계를 맺어줘..
2025.06.20 -
GROUP BY
- GROUP BY절에 사용했던 컬럼명을 SELECT문에서도 있어야한다.- GROUP BY절에 사용했던 컬럼명말고 일반 함수를 SELECT문을 쓰면, 이미 GROUP BY로 집계한 결과인데, 다시 일반함수를 넣으면 다시 여러개로 출력하겠다는 것이다. 그래서 모순이 발생한다. SELECT JOB_ID AS 부서이름, AVG(SALARY) AS 부서평균FROM EMPLOYEESGROUP BY JOB_IDORDER BY 부서이름 ASC; 경우1 경우2 경우1과 경우2의 차이는 경우1로 그룹시... 부서ID별로 중복없이 표시되지만, 경우2인 경우 JOB_ID까지 그룹으로 묶어야 하기 떄문에.. 부서 안에서도 여러 JOB_ID가 존재하니깐!!
2025.06.19 -
여러 함수 작성해보기(SUBSTR, NEXT_DAY, ADD_MONTHS...)
SELECT FIRST_NAME AS BEFORE , REPLACE(FIRST_NAME, 'E', 'A') AS AFTER , REGEXP_REPLACE(FIRST_NAME, 'E|e', 'A') AS AFTER , REPLACE(FIRST_NAME, 'e', ' ') AS AFTERFROM EMPLOYEES;SELECT REPLACE('이충현', SUBSTR('이충현', 2, 1), '*') AS 이름 , RPAD('900310-', 15, '*') AS 주민번호 , RPAD('010-5059-', 13, '*') AS 휴대폰FROM DUAL;SELECT *FROM EMPLOYEES;SELECT FIRST_NAME || ' ' || LAST_NAME AS 이름 , TO_CHAR(HIRE_DATE, 'Y..
2025.06.18