본문 바로가기
데이터베이스/SQL

SQLD 를 위한 SQL기본문법 정리 2

by ADELA_J 2024. 2. 5.

<SQL 연산자 - 합성(연결)연산자 >

 : 문자열과 문자열을 연결

1. 함수를 사용할 때: CONCAT(str1 , str2)

2. 연산자를 사용할 때: str1 || str2

 

SELECT PLAYER_NAME, HEIGHT || 'cm' "선수 신장"
FROM player;

SELECT PLAYER_NAME, CONCAT(HEIGHT,'cm') "선수 신장"
FROM player;

같은 결과 값

만약 3개 이상이라면 CONCAT은 안됨

▷ 이런건 안됨, 그래서 이럴땐 '||' 요거 써야함

 

<SQL 연산자 - BETWEEN >

: 사이에 있는거 불러오기

BETWEEN 170 AND 180 : HEIGHT >=170 and HEIGHT <=180 임

SELECT PLAYER_NAME 선수이름, POSITION 포지션, HEIGHT 키
FROM PLAYER
WHERE HEIGHT BETWEEN 170 AND 180

 

 

SELECT PLAYER_NAME 선수이름, POSITION 포지션, HEIGHT 키
FROM PLAYER
WHERE HEIGHT NOT BETWEEN 170 AND 180

 

NOT을 써서 한다면 아래와 같은 결과

SELECT PLAYER_NAME 선수이름, POSITION 포지션, HEIGHT 키
FROM PLAYER
WHERE HEIGHT<170 OR HEIGHT >180;

이렇게 할 수 있음 : NOT은 AND 연산자를 OR로 바꿔줘야함

 

<SQL연산자 - IN>

:리스트 안에 있는 것 중에 해당되는 것을 조회하기

 

SELECT PLAYER_NAME, TEAM_ID
FROM PLAYER
WHERE TEAM_ID = 'K06' OR TEAM_ID = 'KO4'OR TEAM_ID='K10';

 

팀 ID가 K06이거나 K04거나 K10이면 불러와라

>> 조회 결과값

이거를 간단하게

이렇게 IN을 사용해서 쓸 수 있음

SELECT PLAYER_NAME, TEAM_ID
FROM PLAYER
WHERE TEAM_ID IN ('K06','K04','K10');

 

NOT IN을 사용한다면

SELECT PLAYER_NAME, TEAM_ID
FROM PLAYER
WHERE TEAM_ID <> 'K06' OR TEAM_ID <> 'K04'OR TEAM_ID <> 'K10';

SELECT PLAYER_NAME, TEAM_ID
FROM PLAYER
WHERE TEAM_ID NOT IN ('K06','K04','K10');

이렇게 아닌 걸로 나옴

 

아래와 같이 한가지가 아닌 여러가지의 컬럼 값의 IN을 사용할 수 있음

SELECT PLAYER_NAME 선수이름, TEAM_ID, POSITION
FROM PLAYER
WHERE (TEAM_ID, POSITION) IN (('K04','GK'),('K06','MF'));

 

2개의 결과가 더해져서 나옴, K04의 GK와 K06의 MF이 같이 나옴

 

<LIKE>

- 문자열 비교연산

- 와일드카드 사용가능

 : % 임의의문자N개, _ 임의의문자1개

ex) %a% : a가 포함되면 다 됨 / _a_ : 중간글자가 a가 포함된 거

> 뒤에 _ 언더바 하나니까 뒤에 '김 + 한글자'만 나옴

SELECT PLAYER_NAME FROM PLAYER
WHERE PLAYER_NAME LIKE '%리%'

>

'리'가 포함된 글자는 모두 다 나옴

 

<ROWNUM>

- 사용자가 아닌 시스템이 관리하는 Pseudo Column

- TOP N개의 레코드 반환

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER;

'ROWNUM'이라는 컬럼이 없지만, 

시스템이 저장해놓은 ROW number를 관리하는데 이걸 출력해줌

: 번호를 가져올때, 출력 개수를 지정할 때 활용 가능 (ex 맨 위에서 10개 뽑아라)

: 출력 개수를 지정할때는 부등호를 써서 가져옴 (TOP N개의 레코드 반환)

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER
WHERE ROWNUM < 4;

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER
WHERE ROWNUM <= 3;

위 같이 쿼리문을 작성하면 3번까지만 나오지만

 

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER
WHERE ROWNUM = 3;

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER
WHERE ROWNUM >= 3;

 

같다, 같거나 크다는 사용할 수 없음.

하지만 

SELECT PLAYER_NAME, ROWNUM
FROM PLAYER
WHERE ROWNUM = 1;

 

= 1은 된다!!!!!!!!!!

 

** 만약 등호 써서 하고 싶다면

ALTER TABLE PLAYER ADD (ROW_ID NUMBER);

UPDATE PLAYER SET ROW_ID = ROWNUM;

SELECT PLAYER_NAME FROM PLAYER WHERE ROW_ID = 3;

 

컬럼을 하나 추가해서 ROWNUM으로 값을 채워준다음에 등호 사용할 수 있음