본문 바로가기
SQL

SQL 정리

by 멈추지않아 2022. 6. 14.

국비교육들으면서 배운 SQL을 정리해보겠습니다. 이 글은 설정 내용이 없고 단순히 sql문에 대한 내용뿐입니다.

1.select

가장 많이 쓰면서 기본적인 것으로 데이터베이스에 검색을 하기 위해쓰이는 것입니다.

예시로

select * from department;

여기서 고정인 부분은 select 와 from 입니다. 나머지 * 과 department는 취향에 따라 변하게 됩니다.

department 부분은 자기사 사용할 테이블 이름을 넣어주는 것입니다.

*부분은 정한 테이블 내부의 컬럼 이름을 적어주면 됩니다. *는 모든 컬럼을 말합니다. sql에서*는 모든것을 의미한다고 보면 됩니다.

*예시*
만약 우리가 select 해서 검색결과를 보여줘야 되는데 한글밖에 모르는 어린애이다 그럼 컬럼명이 영어로 되어있으면 못 알아봅니다. 

이를 해결하기 위한것이 컬럼명 as  보여줄이름 이런식으로 써주면됩니다.

원래는 select id,name from department; department테이블로뭍터 id,name컬럼을 보여주겠다 인데 이대로 출력하면

id name
1 개발자
2 멈추지 않는

이런식으로 나옵니다. 이건 어린이들이 컬럼명을 못알아 봅니다.

하지만 select id as 아이디,name as 이름 from departments;

 

아이디 이름
1 개발자
2 멈추지 않는

이런식으로 나오게 됩니다.

그런데 여기서 as를 빼도 똑같이 동작을 합니다.select id 아이디,name 이름 from departments; 이것도 똑같은 말입니다.

그런데 컬럼이름으로 뛰워쓰기해서 넣고싶으면 select id "아이 디",name "이 름" from departments; 이렇게 큰따옴표를 넣어야 됩니다. 여기서 큰따옴표는 여기서만 쓰입니다. 나머지 따옴표는 다 작은 따옴표입니다. 물론 문자 내부에 큰따옴표는 쓰일수 있습니다. 

 

이번에는 아이디와 이름을 함께 출력하고 싶다면 어떻게 해야될까요 예를 들어 1개발자 2멈추지않는 이렇게 한칸에 나올려면 연결 연산자 ||를 사용하면 됩니다.

select id||age from departments;

id||age
1개발자
2멈추지않는

이런식으로 나오게 됩니다.

꼭 컬럼명이 아니더라도 id||'메롱' 1메롱 2메롱 이런식으로 나옵니다. 한개만이아니라 두개 세개 마음대로 붙일수 있습니다.

그리고 id에 10곱해서 출력하고 싶으면

select id*10,name from departments;

 

id*10 name
10 개발자
20 멈추지않는

이런식으로 연산해서 넣을수도 있습니다. select는 다 컬럼에 as 이용한 별칭 넣는거 다 적용 가능합니다.

 

distinct

여기는 컬럼명 부분 앞에 쓰는건데 select distinct id from departments; 이런식으로 사용하면 되는데 기능은 중복을 제거 합니다.

기본 테이블(departments)

id name
1 개발자
1 멈추지않는
2 개발자
2 멈추지않는
1 개발자
1 멈추지 않는

이걸가지고 사용해보면

select distinct id from departments;

id
1
2

select distinct name from departments;

name
개발자
멈추지않는

select distinct id,name from departments;

id name
1 개발자
1 멈추지않는
2 개발자
2 멈추지않는

이런식으로 나옵니다 중복을 제거하고 검색해주기 때문에 똑같은 것은 안나옵니다. 젤위에 두개는 쉽게 이해할수 있을 것입니다. 젤 밑에 꺼는 왜이렇게 되냐 하면 distinct는 한개컬럼만 적용하는게 안됩니다. 한개만 적용하면 한곳에는 null을 넣고 출력을 해줘야되는데 그것은 되지 않습니다.즉 id name따로 각각 중복 체크하는게 아니라 두개다 똑같은걸  찾아서 중복을 없애주는 것입니다. 즉 레코드가 완전히 똑같아야지 중복이라고 인정되고 삭제되는 것입니다.

 

where

select에 조건을 붙여주는 것입니다. 즉 자기가 정한 조건 에 맞는 것 중에서 검색하겠다는 것입니다.

select * from departments where 조건;이거는 departments 테이블에서 조건에 맞는 모든것을 뽑겠다.

그럼 조건에는 어떤걸 넣을수 있느냐 입니다.

컬럼 과 데이터(숫자,문자 등등) 비교  컬럼과컬럼비교 비교 컬럼과select문 비교 (이거는 뒤에서 다른이름이 있긴하다)

이렇게 3가지 비교양식이 있고 비교 방법이 따로있다

=(같은지),!=(같지않은지),in(조건,조건) (안에 있는 조건중에 아무거나랑 일치하는지), between a and b (a와b사이인지 숫자뿐 만 아니라 문자도된다 문자는 아스키 코드로 숫자로 변환되서 비교된다고 보면 된다.) 

exisit등 많은데 우선 위에 있는거만 알아도 쓰고도 남아돈다.

위에 기본 table 기준으로 설명해보면 

select  id from departments where

select  id from departments where id=1

id
1
1
1
1

select  id from departments where id!=1

id
2
2

select  id from departments where id in(1,2);

id
1
1
2
2
1
1

select  id from departments where id in(1);

id
1
1
1
1

select  id from departments where id between 1 and 2;

id
1
1
2
2
1
1

select  id from departments where id between 1 and 1;

id
1
1
1
1

이런식으로 나오게 됩니다.

 

이 정도하시면 어느 정도 이해가 될것입니다. 그리고 컬럼 컬럼이렇게 비교하거나 컬럼 select 이렇게 비교할때 이해하는 법은 따로 보고 데이터를 먼저 적어놓고 데이터 하나 하나 라고 생각하시고 보면 이해가 편할실 겁니다.

select  id from departments where id in(1,2);

select  id from departments where id between 1 and 2;

이렇게 비교 한다면

1  1

1  1

2  2

2  2

1  1

1  2

이런식으로 적어놓고 보시면 이해가 쉬울 실 겁니다.

'SQL' 카테고리의 다른 글

SQL정리6일차  (0) 2022.06.25
SQL정리5일차  (0) 2022.06.21
SQL정리 4일차  (0) 2022.06.19
SQL정리 3일차  (0) 2022.06.17
SQL정리 2일차  (0) 2022.06.15