조인은 어떻게 이루어지는걸까?
가상테이블을 만드는 건가?
AUTO_INCREMENT
: 자동으로 번호 발급해주는 기능 (MySQL에만 존재, 주키에만 사용 가능)Oracle에서는
sequence
를 통해 번호 발급 가능
-- (ctrl + f9) : 주석
/* */ : 복수줄 주석
char vs varchar
char는 선언한 크기를 그대로 사용하고, varchar는 실제 크기만큼만 사용한다.
저장공간 절약에는 varchar가 더 유리하지만, 데이터 변경이 잦을 경우 char가 더 유리하다
(크기 변화에 따라 빈 공간을 만들거나 줄이며 다른 데이터에 영향을 주기 때문)
decimal 사용법
decimal은 값을 (전체자릿수-소수자릿수) 길이의 정수부와 (소수자릿수) 길이의 소수부로 저장한다.
이때 소수부가 자릿수를 초과하면 반올림하여 길이를 맞춘다 (정수부는 x)
CREATE TABLE a_first(
num INT PRIMARY KEY,
my_value1 CHAR(10) NOT NULL,
my_value2 VARCHAR(10),
my_value3 DECIMAL(5,2)
);
DESC a_first;
: 테이블 구조(schema) 확인 DROP TABLE a_first;
INSERT INTO a_first (num, my_value1, my_value2, my_value3)
VALUES
(1, 'first', 'choonsik', 1.11),
(2, 'second', 'con', 3.14),
(3, 'third', 'choonsik', 5.29),
(4, 'fourth', 'choonsik', 7.77);
SELECT * FROM a_first
: 전체 레코드 확인 -- SELECT * FROM a_first WHERE num = 2;
DELETE FROM a_first WHERE num = 2;
-- 수정
-- SELECT * FROM a_first WHERE num = 4;
UPDATE a_first SET my_value3 = 15.0 WHERE num = 4;
UPDATE a_first SET my_value3 = 10.04, my_value1 = 'a' WHERE num = 1;
UPDATE a_first SET my_value1 = 'b', my_value3 = 9.87 WHERE num = 3;
UPDATE a_first SET my_value1 = 'c', my_value3 = 6.66 WHERE num = 4;
SELECT * FROM a_first WHERE my_value1 <> 'f';
SELECT * FROM a_first WHERE NOT my_value1 = 'f';
SELECT * FROM students LIMIT 3;
SELECT * FROM students LIMIT 0, 3;
LIMIT startNum, returnNum
: startNum부터 (0이면 1번째부터) returnNum만큼 데이터 반환startNum, returnNum 구하기
int startNum = (pageNum - 1) * perPage int returnNum = perPage;
- 이전 페이지의 마지막 번호부터 시작한다고 생각하면 될듯
<
<=
>
>=
=
<>
IS NULL
IS NOT NULL
OR
AND
BETWEEN
LIKE
% : 0~무한대
_ : 1글자
MySQL in 이클립스
-- Quiz1
-- 제조업체(vend_id)가 "DLL01"이거나 "BRS01"인 제품의 이름과 가격(prod_name, prod_price)을 이름 순으로 정렬하여 가져오시오.
SELECT prod_name, prod_price FROM products WHERE vend_id = 'DLL01' OR cend_id = 'BRS01' ORDER BY prod_name;
SELECT prod_name, prod_price FROM products WHERE vend_id IN ('DLL01', 'BRS01') ORDER BY prod_name;
-- Quiz2
-- 가격(prod_price)이 5 ~ 10인 제품의 가격과 이름(prod_name)을 가져오시오.
SELECT prod_price, prod_name FROM products WHERE prod_price >= 5 AND prod_price <= 10;
SELECT prod_price, prod_name FROM products WHERE prod_price BETWEEN 5 AND 10;
-- Quiz3
-- 가격이 없는 제품의 이름을 가져오시오.
SELECT prod_name FROM products WHERE prod_price IS NULL;
-- Quiz4
-- 제조업체(vend_id)가 'DLL01'이 아닌 제품의 이름(prod_name)을 가져오시오. 단 이름으로 오름차순 정렬한다.
SELECT prod_name FROM products WHERE vend_id <> 'DLL01' ORDER BY prod_name;
SELECT prod_name FROM products WHERE NOT vend_id = 'DLL01' ORDER BY prod_name;
-- Quiz5
-- 제품의 이름(prod_name)이 'Fish'로 시작하는 모든 제품의 아이디(prod_id)와 이름(prod_name)을 검색하시오.
SELECT prod_id, prod_name FROM products WHERE prod_name LIKE "FISH%";
-- Quiz6
제품의 이름(prod_name)이 'F'로 시작하고 'y'로 끝나는 제품의 이름(prod_name)을 검색하시오.
SELECT prod_name FROM products WHERE prod_name LIKE "F%y";