Programming language/SQL

VIEW SELECT문의 실행 결과(RESULT SET)를 저장하는 객체 논리적 가상 테이블 (테이블 모양을 하고는 있지만, 실제 값을 저장하고 있진 않음) VIEW의 사용 목적 복잡한 SELECT문을 쉽게 재사용하기 위해서. 테이블의 진짜 모습을 감출 수 있어 보안상 유리하다. VIEW 사용 시 주의사항 가상의 테이블(실체가 없다)이기 때문에 ALTER 구문 사용이 불가능하다. VIEW를 이용한 DML(INSERT, UPDATE, DELETE)가 가능한 경우도 있지만 제약이 많이 따르기 때문에 보통은 조회(SELECT) 용도로 많이 사용한다. VIEW 생성 방법 CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW 뷰이름 [(alias[,alias]...] AS subquery ..
제약조건 추가/삭제 제약 조건 추가 ALTER TABLE 테이블명 ADD [CONSTRAINT 제약조건명] 제약조건(컬럼명) [REFERENCES 테이블명[(컬럼명)]] 대괄호 [] == 생략할 수도 있고 안할 수도 있다 제약조건 삭제 : ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명; DEPT_COPY 테이블에 PK 추가 ALTER TABLE DEPT_COPY ADD PRIMARY KEY(DEPT_ID); DEPT_COPY 테이블의 DEPT_TITLE 컬럼에 UNIQUE 제약조건 추가 (제약조건명 : DEPT_TITLE_U) ALTER TABLE DEPT_COPY ADD CONSTRAINT DPET_TITLE_U UNIQUE(DEPT_TITLE); DEPT_COPY 테이블의 LO..
CHAR와 VARCHAR CHAR : 고정 길이 문자열, 최대 2000BYTE VARCHAR : 가변 길이 문자열, 최대 2000BYTE (사용X) VARCHAR2 가변 길이 문자열, 최대 4000BYTE UTF-8 : 기본 2BYTE 크기, 가변 문자 인코딩 (문자 종류에 따라 크기가 달라짐) 1BYTE 아스키 코드 범위 문자(숫자, 알파벳, 기본 특수문자) 입력 시 UTF-8은 1BYTE로 변환 3BYTE : 한글 유니코드 -> UTF-8 형식 변환 시 3바이트로 변환됨 유니코드를 UTF 문자 인코딩으로 변경 시 한글 부분이 2바이트(16bit)를 넘어가게 됨 '한' 유니코드 : 2바이트 '한' UTF-8 변경 : 3바이트 데이터 딕셔너리 자원을 효율적으로 관리하기 위한 다양한 정보를 저장하는 시스템..
상관쿼리 (상호 연관 쿼리) 상관 쿼리는 메인쿼리가 사용하는 테이블값을 서브쿼리가 이용해서 결과를 만든다 메인쿼리의 테이블값이 변경되면 서브쿼리의 결과값도 바뀌게 되는 구조이다 상관쿼리의 논리 구조 문제 '사수가 있는' 직원의[내부 조건] 사번, 이름, 부서명, 사수사번 조회[외부 조건] -- 직급별 급여 평균보다 '급여'를 많이 받는 직원의 [서브 쿼리 조건] -- 이름, 직급코드, 급여 조회 [결과] SELECT EMP_NAME, JOB_CODE, SALARY FROM EMPLOYEE E1 WHERE SALARY > (SELECT AVG(SALARY) FROM EMPLOYEE E2 WHERE E1.JOB_CODE = E2.JOB_CODE); 위의 코드를 그림으로 표현하면 다음과 같다. 외부 쿼리의 W..
SUBQUERY 하나의 SQL문 안에 포함된 또다른 SQL(오직 SELECT)문 서브쿼리의 예시 -- 1) 사원명이 노옹철인 사람의 부서코드 조회 SELECT DEPT_CODE FROM EMPLOYEE WHERE EMP_NAME = '노옹철'; -- 2) 부서코드가 D9인 직원을 조회 SELECT EMP_NAME, DEPT_CODE FROM EMPLOYEE WHERE DEPT_CODE = 'D9'; -- 3) 부서코드가 노옹철사원과 같은 소속의 직원 명단 조회 --> 위의 2개의 단계를 하나의 쿼리로바꾼다 --> 1) 쿼리문을 서브쿼리로 전환 SELECT EMP_NAME, DEPT_CODE FROM EMPLOYEE WHERE DEPT_CODE = (SELECT DEPT_CODE FROM EMPLOYEE ..
TCL 트랜잭션 제어 언어 (TRANSACTION CONTROL LANGUAGE) COMMIT(트랜잭션 종료 후 저장), ROLLBACK(트랜잭션 취소), SAVEPOINT(임시저장)등 DML(데이터 조작 언어로 데이터에 삽입, 수정, 삭제)과 관련되어 있다. TRANSACTION 데이터베이스의 논리적 연산 단위 데이터 변경 사항을 묶어 하나의 트랜잭션에 담아서 처리한다. 트랜잭션의 대상이 되는 데이터 변경 사항 : INSERT, UPDATE, DELETE (DML) TRANSACTION의 실행 INSERT 수행 -> DB에 반영(X) INSERT 수행 -> 트랜잭션에 추가 -> COMMIT -> DB에 반영(O) INSERT 10번 수행 -> 트랜잭션에 10개 추가 -> ROLLBACK -> DB에 반..
JDBC java가 DB와 연결할 수 있게 해주는 java API 전체 코드 public class JDBCExample { public static void main(String[] args) { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); String type = "jdbc:oracle:thin:@"; String ip = "127.0.0.7"; String port = ":1521"; String sid = ":xe"; String user = "***"; String pw = "********"; conn = DriverM..
DML (Data Manipulate Language) 데이터 조작 언어. 테이블에 값을 삽입하거나(INSERT), 수정하거나(UPDATE), 삭제(DELETE)하는 구문 INSERT 테이블에 새로운 행을 추가하는 구문 (1) INSERT INTO 테이블명 VALUES(데이터, 데이터, ...) -- 테이블에 모든 컬럼에 대한 값을 INSERT할 때 사용 -- INSERT하고자 하는 컬럼이 모든 컬럼인 경우 컬럼명 생략 가능. 단, 컬럼의 순서를 지켜서 VALUES에 값을 기입해야 함 INSERT INTO EMPLOYEE2 VALUES(900, '장채현', '901123-2345678', 'jang_ch@ab.or.kr', '01012341234', 'D1', 'J7', 'S3', 4300000, 0.2..
개요 관계형 데이터베이스에서 SQL을 이용해 테이블간 '관계'를 맺는 방법. 관계형 데이터베이스는 최소한의 데이터를 테이블에 담고 있어 원하는 정보를 테이블에서 조회하려면 한 개 이상의 테이블에서 데이터를 읽어와야 되는 경우가 많다. 이 때, 테이블간 관계를 맺기 위한 연결고리 역할이 필요한데, 두 테이블에서 같은 데이터를 저장하는 컬럼이 연결고리가 된다. JOIN 하나 이상의 테이블에서 데이터를 조회하기 위해 사용. 수행 결과는 하나의 Result Set으로 나옴 기존에 서로 다른 테이블의 데이터를 조회 할 경우 아래와 같이 따로 조회 한다. -- 직원번호, 직원명, 부서코드, 부서명을 조회 하고자 할 때 SELECT EMP_ID, EMP_NAME, DEPT_CODE FROM EMPLOYEE; -- 직..
SELECT 문의 해석 순서 (5) : SELECT 컬럼명 AS 별칭, 계산식, 함수식 (1) : FROM 참조할 테이블명 (2) : WHERE 컬럼명 | 함수식 비교연산자 비교값 (3) : GROUP BY 그룹을 묶을 컬럼명 (4) : HAVING 그룹함수식 비교연산자 비교값 (6) : ORDER BY 컬럼명 | 별칭 | 컬럼순번 정렬방식 [NULLS FIRST | LAST]; GROUP BY 같은 값들이 여러개 기록된 컬럼을 가지고 같은 값들을 하나의 그룹으로 묶는다 GROUP BY 컬럼명 | 함수식, .... 여러개의 값을 묶어서 하나로 처리할 목적으로 사용한다. 그룹으로 묶은 값에 대해서 SELECT절에서 그룹함수를 사용한다. 그룹 함수는 단 한개의 결과 값만 산출하기 때문에 그룹이 여러 개일 경..
cslee00
'Programming language/SQL' 카테고리의 글 목록