잘 모르겠다. 🌞
개체(Entity)
INDEX
스키마
객체 → 개체 🌞
: 객체라는 말은 없고 개체(Entity)라는 말을 쓴다.
테이터 값 빼고는 모두 영어만 써야한다.
NULL
: JAVA에서 NULL의 뜻은 주소값이 없다.
: 데이터베이스에서 NULL은 값이 없다. NOT NULL의 뜻은 값이 없을 수가 없다.
NULL 허용
: 기본 옵션이라서 TABLE생성할 때 컬럼의 속성으로 따로 적지 않아도 된다.
: 그래서 NOT NULL은 따로 적어주어야 한다.
띄어쓰기
와 ,
로 구분한다.
SQL문이 끝날 때는 ;
를 쓰고 ,
는 쓰지 않는다.
==
을 쓰지않고, =
만 쓴다.
SQL
CREATE TABLE memberTBL (
memberID CHAR(8) PRIMARY KEY NOT NULL,
memberName CHAR(5) NOT NULL,
memberAddress CHAR(20)
);
한 컬럼만 PK가 되는 것이 아니다. 여러 컬럼이 동시에 PK가 될 수 있다.
테이블마다 하나씩은 꼭 있어야 한다.
각 레코드를 대표하는 값이다. (사람으로 치면 주민등록번호가 primaryKey라고 할 수 있다.)
PK를 제외한 다른 모든 값이 같더라도, PK로 인해서 레코드는 구분된다.
기본 옵션 (이미 설정되어 있어서 적지 않아도 적용되는 옵션)
: NOT NULL
: UNIQUE (절대 중복된 값 들어 갈 수 없음)
: INDEX
INDEX (인덱스) 🌞
: 인덱스는 내부적으로 정렬된다.
: 튜닝의 핵심이다.
: 목차를 만든다.
: 데이터들을 찾을 때, 인덱스가 정리 되어있으면 빨리 찾을 수 있다.
: 만약 인덱스가 없다면 전수조사를 해서 찾아야 한다.
p51
날짜는 TYPE을 DATE라고 주면 끝.
makedate은 예약어지만 함수라서 컬럼명으로 사용할 수 있다
함수이름은 컬럼명으로 사용할 수 있긴 하지만 지양하는 것이 좋다.
SQL
CREATE TABLE productTBL (
productName CHAR(4) PRIMARY KEY,
cost INT NOT NULL,
make_Date DATE,
company CHAR(5),
amount INT NULL
);
SQL
INSERT INTO producttbl
( PRODUCTNAME, COST, MAKE_DATE, COMPANY, AMOUNT )
VALUES
( '컴퓨터', 10, 20170101, '삼성', 17 ),
( '세탁기', 20, 20180901, 'LG', 3 ),
( '냉장고', 5, 20190201, '대우', 22 );
데이터를 활용할 수 있다.
SELECT (컬럼명) : 컬럼 조정
SELECT * : 모든 컬럼을 선택한다.
WHERE : 레코드 조정
WHERE이 없으면 모든 레코드를 선택한다.
WHERE은 조건절이다. → 조건절을 조정하는 레코드만 선택된다.
SQL
SELECT * FROM producttbl;
SELECT COMPANY FROM PRODUCTTBL;
SELECT * FROM producttbl WHERE COMPANY='LG';
SELECT PRODUCTNAME FROM PRODUCTTBL WHERE COMPANY='삼성';
SELECT * FROM producttbl WHERE COST >= 10;
p28 ~ 30
SQL
CREATE TABLE INDEXTBL (
FIRST_NAME VARCHAR(14),
LAST_NAME VARCHAR(16),
HIRE_DATE DATE
);
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE
FROM EMPLOYEES.EMPLOYEES
LIMIT 1000;
INSERT INTO indextbl
(FIRST_NAME, LAST_NAME, HIRE_DATE)
SELECT FIRST_NAME, LAST_NAME, HIRE_DATE
FROM EMPLOYEES.EMPLOYEES
LIMIT 1000;
SELECT * FROM indextbl;
SQL
EXPLAIN SELECT * FROM indextbl
WHERE FIRST_NAME = 'MARY';
CREATE INDEX IDX_INDEXTBL_FIRSTNAME
ON indextbl(FIRST_NAME);
EXPLAIN SELECT * FROM indextbl
WHERE FIRST_NAME = 'MARY';
EXPLAIN
TYPE : ALL
전수조사를 한다
EXPLAIN
TYPE : REF
전수조사를 하지 않아서 속도가 빠르다속도가 빠르다P171
데이터베이스가 잘못 선택된 경우를 캡쳐해서 올리기
DRB에서 스키마가 아주 중요하다 🌞
DB는 속도싸움이다.
왜냐하면 데이터가 쌓일 수록 더 더 더 더 느려지기 때문이다.
데이터베이스의 핵심은 모델링이다.