필드 명은 영어로 설정
대소문자 차이 없음
데이터 형식 : 문자(CHAR), 숫자(INT), 날짜(DATE), ..
+ NULL 허용/비허용 (- 옵션), 글자 수, 종류(한/영, 정수..) 제한
쿼리문은 덩어리로 해석해야한다
select ~Field~ from ~Table~ where ~조건~
PK (Primary Key) : table에서 unique한 키
FK (Foreign key) : table 사이의 관계를 나타내는 키
PK = FK 일 수도 있고 아닐 수도 있음
backtick 사용법
'' 와 ``는 다르게 사용된다!
``은 필드명이나 테이블명에 사용
속도 면에서 인덱스 처리를 해야함. 파이썬의 Dict 개념
create table indextbl(
first_name varchar(14),
last_name varchar(16),
hire_name date
);
** create index 인덱스이름 on 대상테이블(인덱스 할 컬럼);
select * from ~~DB~~ ;
select column1, column2, column3 from ~~DB~~ limit 개수;
DB에서 원하는 컬럼들만 추출하기 (개수는 제한하고 싶은 만큼)
insert into 테이블 select col1,col2,col3 from DB limit 개수;
table에 필터링된 정보 덩어리로 들어감
select * from 테이블 where column1 = " ";
특정 조건을 가진 데이터 찾기
인덱싱 되어있어 빠르게 찾을 수 있다
서브 쿼리()가 2개 이상의 값일 경우
select name, height from usertbl where height = (select max(height) from usertbl);
쿼리 내에 쿼리
모니터링 or 지속적 확인이 필요할 때
DELIMITER // # 쿼리문 끝났다
create procedure myproc()
begin
select * from membertbl where memberName = " ";
select * from productbl where productName = " ";
end//
DELIMETER ;
다시 돌아옴 쿼리문
Trigger : 생성, 변경, 삭제 - insert, update, delete
insert into membertbl values("soccer", "손흥민", "강원도 춘천시 모름동");update membertbl set memberAddress ="영국 토트넘" where memberName="손흥민";delete from membertbl where memberName="손흥민";DELIMITER //
create trigger trg_delmembertbl -- 트리거 이름
after delete -- delete 쿼리문 실행하고나서
on membertbl -- 트리거 부착 대상(테이블)
for each row -- 각 줄마다 적용
begin -- 할 일(모니터링), 변경에 대한 정보 저장
insert into delmembertbl values(
old.memberID,
old.memberName,
old.memberAddress,
curdate()
);
end //
DELIMITER ;
show table status; #tabel명
desc table_name; # =df.info() #table을 속성/필드 중심으로 볼 때
select 볼 항목 from 대상;
select col1, col2 as " " from 필드;: ~~ 기준으로 오름차순(default)
- order by ~~ asc : 오름차순
- order by ~~ desc : 내림차순
기준이 동일하다면, 뒤에 , ~~ 으로 두 번째 기준
중복된 값을 제거하고, 유니크한 값만 보게 해준다.
select distinct addr from usertbl order by addr;
addr 순서 반영하여 값들 추출. (1개씩만)
: 개수 제한. 주로 맨 뒤에 붙는다. ex/ limit 5;
데이터를 기준별로 묶어서 처리 (집계처리)
여러 개의 값을 대표화 필요
-> avg, min, max, ... / count, count(distinct) - 종류 개수
ex/ groupby+orderby+as+limit
select userID, sum(amount) as `총구매건수` from buytbl group by userID order by `총구매건수` asc limit 5;
user의 총 구매 건수를 오름차순으로 5명까지 나타냄. 별칭을 사용해서 정렬에 적용!
** 순서 주의
select count(*) from usertbl;
-> column이 매우 클 때, 속도 이슈 주의
=> select count(1) from usertbl; or select count(PK) from usertbl;이 좀 더 빠름
having (조건)
ex/
select userID, sum(amount*price) as `총구매금액` from buytbl group by userID having `총구매금액` > 1000 order by `총구매금액` asc;
쿼리 순서 주의! select 볼 대상들 from 어디서 where 원본 값 필터링 group by 집계처리 having 집계된 값 필터링 order by 정렬 limit 개수;
