본문 바로가기

4.오라클 식구들(데이터베이스 객체) CREATE TABLE [구문형식] CREATE TABLE 테이블명 ( 컬럼 1 컬럼1타입, 컬럼 2 컬럼2타입, 컬럼2 컬럼3타입, .. ); 테이블의 이름은 임의의 단어로 구성되며 최대 30BYTE 까지 쓸 수 있다. 마찮가지로 컬럼명과 스키마 사용자 이름도 30BYTE까지 쓸수 있다. 또한 한 테이블에는 최대 255개까지 컬럼을 만들수 있다. 기본 데이터 타입 - 기본 데이터 타입은 크게 문자형 데이터, 숫자형 데이터, 날짜형 데이터 세 가지로 구분된다. 문자형 데이터 데이터 유형설명 길이 CHAR 고정길이 최대 크기 2000byte, 디폴트 값은 byte 값 size 디폴트 값은 1이다. VARCHAR2 가변 길이 반드시 size값 명시 최대크기 4000byte 디폴트 값은 byte,size값 생..
1부 3장. SQL 소개 SQL은 크게 DML과 DDL 두 가지로 구분된다. DML(데이터 조작어, Data Manipulation Language) - 데이터 추출, 저장, 삭제 등 데이터를 조작 DDL(데이터 정의어, Data Definition Language) - 데이터가 저장되는 테이블이나 각종 객체들을 생성 그렇다면 DML은... SELECT, INSERT, UPDATE, DELETE, COMMIT, ROLBACK 이 있다. SELECT[구문형식] SELECT 컬럼, 컬럼2, ... FROM 테이블1, 테이블2, ... WHERE 조건들; 머 이부분은 다 아는부분이라고 치고 넘어가도록 한다. INSERT1[구문형식] INSERT INTO 테이블명 (컬럼1, 컬럼2,...) VALUES (컬럼1 값, 컬럼2값,...) ..
Javascript 0과 "" 체크 var x = Number("0");var z = ""; if (x == "") {alert("값을 입력해 주세요");} if (x == 0) {alert("값을 입력해 주세요");} if (z == "") {alert("값을 입력해 주세요");} if (z == 0) {alert("값을 입력해 주세요");} 아무생각 없이 Number로 변환 해놓고 값 입력 체크를 저렇게 하고 있었다. 잘못 체크는 하고 있었지만 그래도 숫자가 아무거나 입력이 되면 체크를 통과 할 줄 알았는데 0이 입력되면 체크에 걸린다. 아마도 javascript에서 "", 0 은 동일하게 보는듯 하다. 결과는 모두 얼럿이 발생 한다. 추가로 자바스크립트 자료형에서 false로 반환되는 값은 "", null, undefined, 0, ..
쿼리 실행 절차 및 옵티마이저 종류 쿼리 실행 절차1. 사용자로부터 요청된 SQL 문장을 잘게 쪼개서 MYSQL 서버가 이해할 수 있는 수준으로 분리2. SQL 파싱 정보를 확인 하면서 어떤 테이블로 읽고 어떤 인덱스를 이용해 테이블을 읽을지 선택3. 두 번째 단계에서 결정된 테이블의 읽기 순서나 선택된 인덱스를 이용해 스토리지 엔진으로 부터 데이터를 가져옴. 두번째 단계는 첫 번째 단계에서 만들어진 파스트리를 참조하면서 다음과 같은 내용 처리 - 블필요한 조건의 제거 및 복잡한 연산의 단순화 - 여러 테이블의 조인이 있는 경우 어떤 순서로 읽을지 결정 - 각 테이블에 사용된 조건과 인덱스 통계정보를 이용해 사용할 인덱스 결정 - 가져온 레코드들을 임시 테이블에 넣고 다시 한번 가공해야 하는지 결정 옵티마이저 종류 - 비용기반 최적화(Co..
실행계획 ID 컬럼과 select_type 실행 계획 - EXPLAIN EXTENDED나 EXPLAIN PARTITIONS 명령은 더 상세하게 실행 계획을 확인 할 수 있음- 위쪽에 출력된 결과일수록 (id 컬럼의 갑이 작을수록) 쿼리의 바깥(outer) 부분이거나 먼저 접근한 테이블 아래쪽에 출력된 결과일수록 (d 컬럼의 값이 클수록) 쿼리의 안쪽(Inner) 부분 또는 나중에 접근한 테이블 id 컬럼 - 단위 SELECT 쿼리별로 부여되는 식별자 값 - SELECT 문장 안에서 여러 개의 테이블을 조인하면 조인되는 테이블의 개수만큼 실행 계획이 출력되지만 같은 아이디가 부여됨 - SELECT 문장은 하나인데 여러 겨의 테이블이 조인되는 경우 id값은 증가 하지 않음 select_type - 각 단위 SELECT쿼리가 어떤 타입의 쿼리인지 표시..
실행계획 key_len- 쿼리를 처리하기 위해 다중 컬럼으로 구성된 인덱스에서 몇개의 칼럼까지 사용했는지 알려줌, - 인덱스의 각 레코드에서 몇 바이트 까지 사용했는지 알려줌 - dep_no 칼럼의 타입이 char(4) 이기 때문에 프라이머리 키에서 앞쪽 12바이트만 유요하게 사용 - dep_no 칼럼은 utf-8문자 집합 사용 실제 utf8 문자는 1~3까지 가변적이긴 하지만 공간을 할당할때는 문자에 관계없이 고정적으로 3바이트로 계산 ref - 접근 방법이 ref 방식으면 참조 조건(equal 비교조건) 으로 어떤 값이 제공되어/ㅆ는지 보여줌 - 만약 상수값을 지정했다면 ref 칼ㄹ머의 값은 constfh 표시되고 다른 테이블의 칼럼값이면 그 테이블 명과 컬럼 명이 표시 됨 - 가끔 func라고 표시될 때가 ..
mysql 정렬 mysql 주요 처리 방식 풀 테이블 스캔 옵티마이저가 풀 테이블 스캔을 선택하는 경우1. 테이블 레코드가 너무 작아서 인덱스를 통해 읽는 것보다 풀스캔을 하는게 더 낫다고 생각하는 경우2. where 절이나 on절에 인덱스를 이용할 수 있는 적절한 조건이 없는 경우3. 인덱스 레인지 스캔을 사용할 수 있는 쿼리여도 일치 레코드 건수가 너무 많은 경우4. max_seeks_for_key 변수를 특정 값(n)으로 설정하면 옵티마이저는 인덱스 기수성(cardinality)나 선택도(selectivity) 무시 하고 최대 n건만 읽으면 된다고 판단 이 값을 작게 설정할수록 mysql서버가 인덱스를 더 사용하다록 유도 - 대부분의 dbms는 풀 스캔을 실행할 때 한번에 여러개의 블록이나 페이지를 읽어오는 기능이..
람다 정리 람다표현식 - 메서드로 전할할 수 있는 익명 함수를 단순화한 것 람다 특징익명 : 보통의 메서드와 달리 이름이 없음으로 익명이라 표현함수 : 특정 클래스에 종속되지 않으므로 함수라고 부름전달 : 메서드 인수로 전달하거나 변수로 저장가능간결성 : 익명 클래스처럼 자질구레하게 구현할 필요 없음 Comparator byWeghtLamda = (Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); 파라미터 리스트 - 파라미터 (두 개의 사과) 화살표 - 람다의 파라미터 리스트와 바디를 구분 람다의 바디 - 두 사과의 무개를 비교, 반홤값에 해당하는 표현식 자바 8에서 지원하는 람다 5가지 표현 (String s) -> s.length(); // St..