[DB] | PRIMARY KEY, INDEX , SELECT (IN, BETWEEN, LIMIT, ORDER BY, LIKE %, GROUP BY, HAVING)

0

잘 모르겠다. 🌞
개체(Entity)
INDEX
스키마


데이터베이스 특징

  • 객체 → 개체 🌞
    : 객체라는 말은 없고 개체(Entity)라는 말을 쓴다.

  • 테이터 값 빼고는 모두 영어만 써야한다.

  • NULL
    : JAVA에서 NULL의 뜻은 주소값이 없다.
    : 데이터베이스에서 NULL은 값이 없다. NOT NULL의 뜻은 값이 없을 수가 없다.

  • NULL 허용
    : 기본 옵션이라서 TABLE생성할 때 컬럼의 속성으로 따로 적지 않아도 된다.
    : 그래서 NOT NULL은 따로 적어주어야 한다.

  • 띄어쓰기, 로 구분한다.

  • SQL문이 끝날 때는 ; 를 쓰고 , 는 쓰지 않는다.

  • == 을 쓰지않고, = 만 쓴다.


DDL

  • CREATE, ALTER, DROP

SQL

CREATE TABLE memberTBL (
	memberID CHAR(8) PRIMARY KEY NOT NULL,
	memberName CHAR(5) NOT NULL,
	memberAddress CHAR(20)
);

VARCHAR VS CHAR


PRIMARY KEY ( PK )

  • 한 컬럼만 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
);

DATE | DATETIME | TIME


INSERT

  • P56

SQL

INSERT INTO producttbl
( PRODUCTNAME, COST, MAKE_DATE, COMPANY, AMOUNT )
VALUES
( '컴퓨터', 10, 20170101, '삼성', 17 ),
( '세탁기', 20, 20180901, 'LG', 3 ),
( '냉장고', 5, 20190201, '대우', 22 );

SELECT

  • 데이터를 활용할 수 있다.

  • 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

  • employees 데이터베이스 넣기
  • maria DB → command prompt
  • cd : change directory

테이블의 내용을 새로운 테이블에 복사하기

  • INDEXTBL 테이블 생성
  • EMPLOYEES 데이터베이스의 EMPLOYEES 테이블에서
    FIRST_NAME, LAST_NAME, HIRE_DATE 컬럼들의 데이터들을 처음부터 1000번째까지 선택한다.
  • EMPLOYEES 데이터베이스의 EMPLOYEES 테이블에서
    FIRST_NAME, LAST_NAME, HIRE_DATE 컬럼들의 데이터들을 처음부터 1000번째까지 선택하여
    새롭게 생성된 INDEXTBL 테이블에 복사한다.

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;

EXPLAIN, INDEX

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';
  • CREATE INDEX 전,


EXPLAIN

TYPE : ALL    전수조사를 한다

  • CREATE INDEX 후,

    EXPLAIN

    TYPE : REF    전수조사를 하지 않아서 속도가 빠르다속도가 빠르다

P171

DISTINCT

  • 중복제거


USE

  • 데이터베이스가 선택된다.
  • 선택된 데이터베이스 안에서 쿼리가 실행된다.
  • 쿼리를 실행했는데 이상이 있다면, 데이터베이스가 잘못 선택됐기 때문인 경우가 많다.

데이터베이스가 잘못 선택된 경우를 캡쳐해서 올리기


기타

  • DRB에서 스키마가 아주 중요하다 🌞

  • DB는 속도싸움이다.
    왜냐하면 데이터가 쌓일 수록 더 더 더 더 느려지기 때문이다.

  • 데이터베이스의 핵심은 모델링이다.

profile
몇 번을 넘어져도 앞으로 계속 나아가자

0개의 댓글