데이터베이스

인덱스 INDEX 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성(지정) 가장 일반적인 B-tree 인덱스는 인덱스 키와 이 키에 해당하는 테이블의 행이 저장된 주소 값으로 구성됨 왜 쓸까? 사이트에서 조회시 이름검색이 많은데 속도가 느리다고 한다. 예시 ) WHERE ENAME LIKE '%%'; 인덱스를 만들어야 하는 기준 1) 테이블에 행의 개수가 많을 경우(데이터 건수가 많을 경우) : 10만건 이상 2) WHERE(조건절)에 해당 컬럼이 많이 등장할 경우 3) 테이블 조인의 공통컬럼으로 사용될 경우 인덱스 명명법 IX_테이블명_컬럼명 , IDX_테이블명_컬럼명 생성 인덱스 생성 인덱스명 : IX_테이블명_컬럼명 , IDX_테이블명_컬럼명 CREATE [UNIQUE] INDE..
시퀀스 Sequence 호출(실행)할때마다 자동적으로 숫자를 증가시키는 것(객체) ( 특징 ) 1) Oracle에서 유일(UNIQUE)한 값을 생성해주는 객체 2) 기본키(PRIMARY KEY)와 같이 순차적으로 증가하는 칼럼을 자동으로 생성하여 중복 값이 생성되지 않음 3) 시퀀스는 테이블과는 독립적으로 저장하고 생성됨 시퀀스 문 작성 CREATE SEQUENCE [스키마.] 시퀀스명 INCREMENT BY 증감값 START WITH 시작값 [MINVALUE | NOMINVALUE] 최솟값 [MAXVALUE | NOMAXVALUE] 최댓값 [CYCLE | NOCYCLE] [CACHE | NOCACHE] [ORDER | NOORDER] -- INCREMENT BY : 시퀀스 실행 시 증가시킬 값 -- S..
제약조건 이란? 테이블에 입력될 값을 제한하는 것 특징 제약조건은 컬럼별로 각각 지정할 수 있다. 테이블 생성문 CREATE TABLE 테이블명 ( 컬럼 데이터타입(크기) 제약조건 ); UNIQUE 제약조건 ( 특징 ) 1) 유일한 값만 입력될 수 있다. 2) 데이터 중복 금지 3) NULL 값은 허용한다. 테이블을 만들 때 지정문 CREATE TABLE 테이블명 ( 컬럼 데이터타입(크기) UNIQUE ); NULL , NOT NULL ( 특징 ) NULL 기본값 / NULL 값 허용 NOT NULL NULL 값 금지 테이블을 만들 때 지정문 CREATE TABLE 테이블명 ( 컬럼 데이터타입(크기) CHECK 제약조건 (CK) ( 특징 ) 칼럼에서 허용 가능한 데이터의 범위나 조건..
DML (DATA MANIPULATION LANGUAGE) 데이터 조작어 [ INSERT | SELECT | UPDATE | DELETE ] 특징 명령문 실행 후 취소가 가능하다 ROLLBACK INSERT 데이터 추가 INSERT INTO 테이블명(컬럼1,컬럼2..) VALUES(컬럼1의 데이터 , 컬럼2의 데이터 ...) 참조 : 다른 테이블 데이터 복사 INSERT INTO 복사될테이블명 SELECT * FROM 원본테이블명 ♠\ 참조 /♠ \ ( 1 ) / NULL 값 추가 암묵적 NULL 값 추가 만약 한 테이블의 컬럼이 3개인데 컬럼 2개만 추가했을때 자동으로 NULL 값이 추가됨 명시적 NULL 값 추가 값에 NULL 추가 \ ( 2 ) / DATE 형식 암묵적인 방식 (문자열 →..
CRUD 란? 약어로서 DB 또는 실무 프로젝트에서 많이 사용하는 용어 C (CREATE) R (READ) U (UPDATE) D (DELETE) DDL DATA DEFINITION LANGUAGE 데이터 정의어 데이터베이스를 생성하거나 수정하기 위해 사용하며 데이터베이스의 논리적 구조와 물리적 구조를 정의한다. [ CREATE , ALTER , DROP , TRUNCATE ] CREATE 데이터 정의어 : CREATE문 테이블 생성 CREATE TABLE 테이블명 ( 컬럼명 자료형(크기), 컬렴명 자료형(크기), ... ); ♠\ 참조 /♠ \ ( 1 ) / 자료형 NUMBER : 숫자 자료형 VARCHAR2 : 문자열 자료형 (가변 자료형) CHAR : 문자열 자료형 (고정 자료형) DAT..
메인 쿼리 (MainQuery) vs 서브쿼리 (SubQuery) 메인 쿼리 (MainQuery) 우리가 흔히 쓰던 쿼리문이다 (부모 쿼리) SELECT 컬럼명 FROM 테이블명 서브쿼리 (SubQuery) 메인 쿼리 안의 또 다른 쿼리(Query)를 말한다 (자식 쿼리) 종류 반환하는 값 개수에 따른 분류 1) 단일행 서브쿼리(Single Row) 2) 복수행 서브쿼리(Multiple Row) 3) 복수열 서브쿼리(Multiple Column) 실행 방식에 따른 분류 1) 일반 서브쿼리 : 단일행,복수행,복수열 서브쿼리 2) 상관(연관)관계 서브쿼리 : 메인쿼리의 컬럼이나 값을 사용하는 서브쿼리 3) 스칼라 서브쿼리 : 하나의 컬럼처럼 사용되는 서브쿼리 4) 인라인 뷰 서브쿼리 : 뷰 형태로 테이블을 ..
JOIN 여러 테이블의 공통컬럼이 있다면 그 테이블들을 연결하여 조회하는 것을 말한다 LEFT 조인 , RIGHT 조인 , INNER 조인 등등이 있다. 여기선 가장 일반적인 조인들만 볼것이다. 특징 1) 여러개의 테이블의 공통컬럼을 이용하여 연결이 가능( 권장 : 5개 이내 ) 2) 공통컬럼의 데이터형식이 같아야 함 일반 JOIN 이퀄조인 (=) 의 특징 두 테이블에 공통컬럼에 NULL값이 있으면 NULL 값을 제외하여 연결됨 사용법 SELECT A.컬럼명 , B.컬럼명 FROM TalbeA A, TableB B WHERE A.공통컬럼 = B.공통컬럼 아우터 조인 이퀄조인 (=) 의 특징 두 테이블에 공통컬럼에 NULL값이 있으면 NULL 값을 제외하여 연결됨 다만, 아우터 조인(..
전체 집계 함수 SUM(컬럼명) : 총계 AVG(컬럼명) : 평균 MAX(컬럼명) : 최고 MIN(컬럼명) : 최저 COUNT(컬럼명) : 총 개수 컬럼 안의 데이터의 총계 ,평균 등을 구할 수 있다. ★ 전체 집계 함수 주의점! 전체 집계 함수 특징 1) 1건이 결과로 나온다. 2) 일반 컬럼과 같이 사용할수 없다 : 에러 부분 집계 함수 GROUP BY 사용법 GROUP BY 컬럼명, 컬럼명2 ... 주된 컬럼이 있고 그 컬럼안의 데이터의 집계를 내고 싶을때 쓰는 것 같다 예시를 들자면 1반 학생들의 평균과 2반 학생들의 평균을 보고싶을때 사용한다고 생각하면 될것같다. 음... 아예 적으면서 예를 들어보자 ※ 위와 같이 보고싶다면 학생들의 반 넘버 컬럼이 있기에 반별로 평균을 각..
자료형 VARCHAR2(가변문자열) CHAR(고정문자열) 숫자(NUMBER , 실수 , 정수) 날짜(DATE) 각 특징 NUMBER(자리수 , 소수점) VARCHAR2( BYTE ) (CHAR 은 잘 안쓰는것 같다..) TO_CHAR 날짜 -> 문자열로 변환 사용법 TO_CHAR(컬럼명 , '날짜 포맷') TO_CHAR 숫자 -> 문자로 변환 사용법 TO_CHAR(숫자컬럼, '숫자포맷') TO_DATE 문자[숫자] => 날짜형 변환 사용법 TO_DATE( 문자[숫자] , '날짜 포맷') TO_NUMBER 문자 => 숫자로 변환 사용법 TO_NUMBER( 문자 , '숫자포맷' ) 날짜포맷 YYYY(년도(4자리)) YY(년도(2자리)) MM(월(2자리)) DD(일(2자리)) DAY(요일) HH(1~12까지의..
숫자 함수 ROUND() 반올림 사용법 ROUND(대상컬럼 , 자리수) TRUNC 버림 , 특정자리수에서 버림 사용법 TRUNC(대상컬럼 , 자리수) MOD 나머지 연산 함수 사용법 MOD(대상컬럼,나눌 숫자) 날짜 함수 SYSDATE 시스템에 저장된 현재 날짜를 RETURN 하는 함수 사용법 SELECT SYSDATE FROM DUAL 사용법이라기도 뭐하네요 ㅋㅋ.. MONTHS_BETWEEN 두 날짜 사이의 개월 수를 RETURN 하는 함수 사용법 MONTHS_BETWEEN(현재날짜 , 과거날짜) ADD_MONTHS 개월 수를 더한 값 RETURN 함수 사용법 ADD_MONTHS(날짜컬럼, 숫자) NEXT_DAY 날짜 컬럼에서 최초로 도래하는 요일의 날짜를 RETURN 함수 사용법 NEXT_DAY(날..
문자 함수 대소문자 구분 대문자로 변환 : UPPER(문자열) 소문자로 변환 : LOWER(문자열) 첫글자만 대문자 : INITCAP(문자열) UPPER(컬럼명) 으로 컬럼 안의 데이터를 대문자로 바꿀 수도있고 UPPER('문자열') 으로 문자열을 대문자로 바꿀 수도 있다 ※ 참조 클라이언트가 데이터를 조회를 시도했다고 가정했을때 UPPER()를 만약 개발자가 놓치고 사용을 안했다면 데이터는 대문자인데 클라이언트는 소문자로 쳤을때 클라이언트에게 데이터가 제대로 전달 되지 않을것이다 예제) 문자열 길이 한글/영어 상관없이 문자 길이를 RETURN 하는 함수 사용법 LENGTH(문자열) 문자 조작 함수 문자열 붙이기 함수 : CONCAT('문자열','문자열2') 기호 : '문자열' || '문자열2' 둘 중 ..
ORDER BY 컬럼 안의 데이터를 정렬 시키고 싶을 때 사용한다 오름차순(ASCENDING) 작은 순서 -> 큰 순서로 정렬 (오름차순 ASC 생략가능) SELECT * FROM 테이블명 ORDER BY 컬럼명 ASC 내림차순(DESCENDING) 큰 순서 -> 작은 순서로 정렬 (내림차순 생략불가가능) SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC 혼합문제 컬럼1 = 오름차순 / 컬럼2 = 내림차순 이 경우, 컬럼1이 먼저 실행되고 컬럼2는 컬럼1의 중복된 데이터에 한해 정렬을 실행합니다. SELECT * FROM 테이블명 ORDER BY 컬럼1 ASC, 컬럼2 DESC 단! ORDER BY 절은 성능이 대폭 저하되기 때문에 꼭 써야할 경우만 쓰고 나머지는 편법을 이용하여 쓰는것을..
별이춤추는밤
'데이터베이스' 카테고리의 글 목록 (2 Page)