본문 바로가기

mysql

빠르게 MySQL 기본 문법 정리 한 번 보기!!

728x90
show databases;  -- 현재 서버에 어떤 DB가 있는 지 보기

use world;       -- 사용할 데이터 베이스/전체 스키마 지정
show tables;     -- 현재 DB에 있는 테이블 이름 보기
show table status;   -- 테이블의 상태까지 볼 수 있음(행의 길이 등)

DESC city;   -- city 테이블의 모든 속성

select *    --  속성
from city;  -- from절에는 테이블/내부 스키마

-- where 절
-- between a and b
select *
from city
where population between 7000000 and 8000000;

-- in은 이산적인 값의 조건에서만 사용 가능 
select *
from city
where name in("Seoul", "New York");

-- like : 문자열 내용 검색
select *
from city
where CountryCode like 'ko_'; -- '_'는 한 글자와 매치

select *
from city
where name like 'Tel%'; -- '%' 무엇이든 허용

-- 서브 쿼리 : 쿼리문 안의 쿼리문 
select *
from city
where CountryCode = (select CountryCode from city where name='seoul');

-- any : 서브쿼리의 여러 개의 결과 중 한 가지만 만족해도 가능 
select *
from city
where Population > any (select Population
						from city 
                        where District='New York');
           
-- all : 서브쿼리의 여러 개의 결과를 모두 만족시켜야 함
select *
from city
where Population > all (select Population
						from city 
                        where District='New York');
                        
select name, Population
from city 
where District='New York';

-- order by : 결과가 출력되는 순서를 조절하는 구문 
select *
from city        
order by Population desc; -- 내림차순, asc(오름차순, 생략가능)

select *
from city        
order by Population desc, CountryCode ASC; -- 혼합도 가능 

-- 키워드 활용
-- distinct 중복 제거 키워드 
select distinct CountryCode
from city;

-- limit 출력 개수 제한 
select *
from city        
order by Population desc
limit 10;

-- group by : 그룹으로 묶어주는 역할
select CountryCode, max(Population) as 'max'
from city
group by CountryCode;

select CountryCode, max(Population) as 'max'
from city
group by CountryCode
having max(Population) > 8000000;    -- 조건 제한 

-- join
select *
from city
join country on city.CountryCode=country.Code;  -- 조건이 필요함

#출처 : 이수안 컴퓨터 연구소(전부 정리된 건 아님) https://youtu.be/vgIc4ctNFbc

 

 

 일단 진짜 기본적인 명령어. 

 

- DB/스키마

 

- table 

 

- 이게 9번 명령어 실행한건데, 속성만 따로 보고 싶다면 7번 명령어(DESC)를 쓰면 된다. 


<where 절>

: 속성의 조건 추가

between a and b a와 b 사이의 값
in 이산적인 값의 조건에서만 사용 가능(집합 연산자)
like '_'  : 한 글자와 매치 / '%' : 무엇이든 허용

- 교수님께서 말씀하시길. "고객의 이름인 박지성인 테이블을 찾을 때 'like'보다는 '=' 쓰는게 낫다. "

 이유는 잘 기억이 안 나는데 아마 like가 문자열을 일일이 검사해서 비효율적이라고 하신 듯!


<서브 쿼리>

: 쿼리문 안의 쿼리 문. 기본적으로 출력값이 2개 이상이면 에러. 

 

 

 서브 쿼리를 하면 안쪽 select문의 결과+name는 다음과 같다

 

 any의 경우 이 6가지 결과 중 하나의 조건만 만족하면 출력하고, all은 모든 조건을 만족 즉, 인구수가 가장 높은 new york의 인구수보다 많은 도시들을 출력하게 된다. 

 

앞서서 서브 쿼리 문은 출력값이 2개 이상이면 에러라고 햇는데, any와 all을 사용하면 에러가 안 뜬당!

 


<order by>

:결과가 출력되는 순서 조절

 


<키워드>

distinct 중복 제거(select문)
limit n 출력 개수 제한 

 


<group by>

: 그룹으로 묶어주는 역할, 집계함수와 함께 사용

 

 


<join>

: 여러 개 테이블 조합

 


#35분 37초 내장 함수부터 skip