일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CD
- javascript
- 다이어리
- 오라클
- DBMS
- IOS
- 네트워크
- MySQL
- 42seoul
- 오블완
- 리눅스
- 데이터베이스
- 프로그래밍언어론
- swift
- AI
- 스프링부트
- sql
- CI
- libasm
- Spring
- 소켓
- jenkins
- JPA
- springboot
- 티스토리챌린지
- 스프링
- 인공지능
- 아이패드다이어리
- 스프링부트 웹 소켓
- Xcode
- Today
- Total
목록데이터베이스 (11)
Hi yoahn 개발블로그
42GG 플젝을 진행하던 중 무려 테이블 5개를 동시에 조인해야하는 상황이 발생했다. 현재 서비스중인 프로젝트이다보니 DB 에 저장된 데이터 양도 좀 있고, 꾸준히 사용하는 분들이 계시기 때문에 앞으로 더 많은 데이터가 생길 수 있어 해당 쿼리 뿐만 아니라 다른 sql 쿼리들도 최적화가 가능한 쿼리가 있는지 확인하기 위해 사용해보려고 한다. 실행계획이란 DB 옵티마이저가 쿼리를 어떻게 실행할지에 대한 계획이다. 실행계획을 통해 데이터를 조회할 때 검색시에 테이블을 풀스캔하는지, range scan 을 하는지 봐야하고 설정해둔 인덱스를 타는지 확인할 수 있다. EXPLAIN SELECT * FROM A, B WHERE A.bid=B.id; Explain 키워드를 통해 실행계획을 확인할 수 있다. (이외에도..

7장. CONSTRAINT 제약조건1. 제약조건1) 제약조건이란?- 테이블에 올바른 데이터만 입력받고 잘못된 데이터는 들어오지 못하도록 컬럼마다 정하는 규칙을 의미 제약 조건의 종류조건 이름의미NOT NULL해당 컬럼은 NULL 값이 입력될 수 없다.UNIQUE중복된 값이 입력될 수 없다PRIMARY KEY ★ 테이블당 한 개만 설정 가능FOREIGN KEY다른 테이블의 컬럼을 참조해서 검사CHECK이 조건에서 설정된 값만 입력 허용, 나머지는 거부2) 외래키란?두 개의 테이블을 서로 참조하도록 설정됨- 자식테이블이 부모 테이블에 있는 특정 컬럼을 참조하는 것- 자식 테이블에서 참조하는 부모테이블의 컬럼은 참조키라고 한다.- 참조하려는 컬럼은 unique - 부모에 없는 값을 입력하려고 하면 ERROR ..

1. INSERT 1) INSERT 를 사용하여 1행씩 입력하기 INSERT INTO 테이블명 [(삽입할 컬럼명 list)] VALUES (value_list); - 컬럼에 값을 부여하지 않으면 자동으로 null 값이 들어감 2) INSERT와 서브쿼리를 사용하여 여러 행 입력하기 INSERT INTO 테이블명 SELECT * FROM 테이블명; - WHERE 절을 사용하여 조건에 맞는 행만 넣을 수도 있다. 3) INSERT ALL 여러 테이블에 여러 행 입력하기 - 다른 테이블의 데이터를 가져와서 입력하기 EX) 테이블에서 교수번호가 1000 - 1999 번까지인 교수 번호&교수 이름은 prof_3 테이블에 입력 교수번호가 2000 - 2999 번까지인 교수 번호와 이름은 prof_4 에 입력 > I..
DDL : CREATE, ALTER(수정), TRUNCATE(잘라내기), DROP(삭제) 1. CREATE1.1 일반 테이블 생성하기CREATE TABLE new_table( no NUMBER(3), name VARCHAR2(10), birth DATE); - 기본 입력값을 설정하면서 생성하려면..no NUMBER(3) DEFAULT 0DEFAULT 키워드 뒤에 값을 주면 된다. 테이블 생성 시 제한사항- 테이블 이름은 반드시 문자로 시작- 테이블/컬럼 이름 -> 30바이트- 테이블 이름 -> 사용자 한명당 테이블 식별자 하나- 테이블 이름/오브젝트 이름 -> 오라클 키워드 사용하지 않기 1.2 임시 테이블 생성하기 (Global Temporary Table)- 실제 데이터를 저장하지 않고 테스트 등 임..

정규화 - 하나의 테이블을 더 작은 테이블로 분리하여 중복을 최소화한다. - 다수의 컬럼으로 구성된 테이블을 논리 덩어리별로 작은 테이블로 분할 - 장점: 데이터베이스 변경시 이상 현상 제거 비정규화 - 정규화의 반대, 중복 허용 - 장점: 조회 성능 향상 -> 중복을 허용해서 자주쓰이는 결과물들을 미리 테이블에 만들어서 컬럼화 해둠 -> 조회 성능 극단적으로 좋아질 수 있다. JOIN: 정규화 후 여러 테이블에 흩어진 데이터들을 조합해서 가져오는 기술 *** 선행, 후행 테이블 조인 수행 시 둘 중 하나의 테이블을 먼저 읽고 조인 조건절을 확인하여 첫번째 테이블을 먼저 읽고 각 행마다 조인 조건절을 확인하여 나머지 테이블에서 데이터를 가져옴 1. 카티션 곱 조인 대상 테이블들의 조건이 누락되었을 경우 ..

행의 그룹에 대해 출력을 제공---요약---1. 집계함수- 행들의 그룹에 대해 하나의 행 결과를 생성 ( 하나의 그룹 - 하나의 행 )- group by 를 생략하면, 전체 테이블에 대해 집계를 수행- 개별 행에는 수행되지 않음- 그룹에 속한 행만큼 결과를 출력- having 절로 그룹핑한 조건을 검색 - rollup: n+1 소계 -> n개의 컬럼 지정 (뒤의 컬럼을 하나씩 제거하면서(~grand total) 그룹 생성)- cube: 2^n 모든 소계 -> 가능한 모든 컬럼의 조합을 grouping- grouping sets: n개의 그룹 구성 2. 분석 함수- 행들의 그룹에 대해 여러 행 결과를 생성 (하나의 그룹 - 여러행 결과 )- 분석 함수에 추가 인자가 필요- 분석 절이 over 필요- 그룹에..
단일행 함수: 여러 건의 데이터를 한번에 하나씩 처리하는 함수 복수행 함수: 여러 건의 데이터를 동시에 입력 받아 결과값 1건을 만들어 주는 함수 (그룹 함수) 1. 문자 함수# INITCAP( 문자열 or 컬럼명 )영어에서 입력 값의 첫 글자만 대문자로 반환하고 나머지는 전부 소문자로 출력하는 함수- 중간에 공백이 있을 경우 공백 다음을 첫글자로 생각해서 대문자로 출력SELECT INITCAP(name) initcap FROM professor WHERE deptno = 101; -------------------- INITCAP ---------------------- Olivia Lauren Audie Murphy # LOWER(문자열/컬럼명)입력 값을 전부 소문자로 변환 # UPPER(문자열/컬럼..
- 데이터베이스에 데이터가 저장되는 단위는 테이블 1. 모든 칼럼 조회하기 - SELECT * FROM emp; 2. 참고 * DESC 테이블명; 테이블 구성을 보여줌 속성명, 기본키, 데이터 타입 * 해당 사용자가 만든 모든 테이블 조회하기 SELECT * FROM tab; - 오라클에 예약되어있는 tab 테이블 -> 해당 사용자가 만든 모든 테이블에 대한 정보를 가지고 있는 테이블 * 데이터 조회시 출력형식 조절하는 명령어 - 데이터가 숫자일 경우 COL empno FOR 9999 : empno라는 숫자를 다루는 칼럼의 경우 숫자 4자리(9999)까지 들어가게 설정 - 데이터가 문자인 경우 COL ename FOR a8 : ename이란 칼럼의 길이를 8바이트까지 들어가게 설정 - 한 화면에 출력 가..
1. 데이터 삽입 # 데이터 직접 삽입 INSERT INTO 테이블명[(속성_리스트)] VALUES (속성값_리스트); - 모든 데이터를 삽입하는 경우 테이블명만 명시, 테이블을 정의할때 지정한 속성 순서대로 값이 삽입됨 # 부속 질의문을 이용한 데이터 삽입 INSERT INTO 테이블_이름[(속성 리스트)] SELECT 문; ex) INSERT INTO 한빛제품(제품명, 재고량, 단가) SELECT 제품명, 재고량, 단가 FROM 제품 WHERE 제조업체 = '한빛제과'; 2. 데이터 수정 3. 데이터 삭제
1. 데이터 검색 # 기본 검색 SELECT [ ALL | DISTINCT ] 속성_리스트 FROM 테이블_리스트; - ALL 이 디폴트(명시하지 않아도 됨), 중복 허용 검색 - 검색 결과는 릴레이션, 메모리에 저장되는 것은 아님 (검색 결과를 메모리에 저장하려면 insert 명령어에서 values 대신 select 명령어 사용) - 모든 속성을 검색하려면 *사용 - 결과로 출력되는 테이블의 속성 명을 변경해서 출력할 수 있다. -> 속성1 AS 속성2 결과 테이블에 속성1을 속성2 이름으로 바꿔서 출력(테이블 내용이 바뀌는 것은 아님) # 산술식을 이용한 검색 SELECT 제품명, 단가+500 AS "조정 단가" FROM 제품; # 조건 검색 SELECT [ ALL | DISTINCT ] 속성_리스트..