티스토리 뷰

python

[mysql] 노트

swanB 2017. 2. 17. 10:29

SQL 에서 데이터가 억 건이 넘어가면, 속도가 많이 느려진다

NOSQL - 스키마 없고, 분산처리(샤딩) 용이


sum() as sum


서브쿼리


 CREATE TABLE MyGuests ( 

    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, # id 필드는 정수형의 primary key, 자동증가 

    firstname VARCHAR(30) NOT NULL,                # firstname 필드는 문자열30 글자, null 허용 안함

    lastname VARCHAR(30) NOT NULL,                 # lastname 필드는 문자열30 글자, null 허용 안함

    email VARCHAR(50),                             # email 필드는 문자열50 글자

    reg_date TIMESTAMP                             # reg_date 필드는 TIMESTAMP타입

 )







INSERT INTO [table] VALUES (value1,value2,value3,...);
UPDATE [table] SET column1=value1,column2=value2,...WHERE some_column=some_value;


show index from city;


인덱스 설정

create index city_idx1 on city(Population);

drop index city_idx1 on city(Population);


쿼리 분석

explain select * from city where Population>1000000;


like 'KO%'

like '%KO%'



출력 방법 (게시판)

select 문 limit 4    첫 4개를 가져옴

select 문 limit 4,2  4번째 부터 2개를 가져옴



select CountryCode, sum(Population)

from city

    group by CountryCode

    having CountryCode='KOR';



조회 조건 + Aggregation 함수

1. where 조건 후에 group by (추린 후에 그룹화)

2. group by 후에 aggregation function 수행 (그룹화 후에 추림)

3. where 절에서 Sum, Avr 등 aggregation 함수 사용 불가



group by 

where 서치 후에 필터링 연산

having 은 필터링 후 서치, group function을 추가 할 수 있다


서브쿼리 (내부 select)


상관 서브쿼리 (내부쿼리에서 외부쿼리의 테이블을 참조하는 쿼리) 


select CountryCode, Name, Population

from city c1

    where Population = 

(select max(Population)

  from city c2

 where c1.CountryCode = c2.CountryCode)

order by Population desc;


조인


cross join - 사이즈 커짐 m x n 개


inner join - 같은것만 붙임


outer join - 다른 것도 붙임

left 면 기준은 g1 기준으로 붙임

right 면 g2 기준으로 붙임

가까이 있는 쿼리를 가져와서 

다시 서브쿼리에 적용해봄


워크벤치에서 limit row 이후 데이터 가져오기 -   


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함