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

SQL정리 - 1

by Pig_CoLa 2020. 9. 3.
SMALL

SELECT

선택하여 열 확인

  1. 기본적인 형태
    SELECT [COL]
    FROM [TABLE]
    WHERE [조건]
  2. 모든 열을 확인하기
    SELECT * FROM [TABLE]
    (WHERE 부분은 생략이 가능)

WHERE

조건에 따른 무언가를 위해 사용됨.

  1. 기본적인 형태
    SELECT * FROM [TABLE] WHERE name = '황대성';

  2. 연산자
    비교연산자 사용이 가능하며 ( <, >, <=, >=, =, !=(또는 <>) )
    논리 연산자 (and, or) 사용이 가능하다.

  3. BETWEEN A AND B
    300이상 500이하의 데이터를 확인하려면

     // ...생략
     WHERE pay >= 300 AND PAY <= 500;
    

    이 되어야 하지만 이는

     WHERE pay BETWEEN 300 AND 500;
    

    으로 사용이 가능하다.

  4. IN
    pay가 300, 400, 500 인 데이터만 조회하기 위해선

     WHERE pay = 300 OR pay = 400 OR pay = 500
    

    이어야 하지만 이를 아래와 같이 표현 할 수 있다.

     WHERE pay IN (300, 400, 500)

AND, OR, NOT

AND 와 OR는 설명 pass

NOT은 조건절(WHERE에서 사용시 뒤의 조건을 부정한다)
IN을 통하여 동일한지 비교하는것은 연산에서 부정을 할 수 없으니
NOT을 통하여 부정한다

WHERE NOT pay IN (300, 400, 500); // pay가 300, 400, 500 이 아닌 모든 데이터

ORDER BY

SELECT문을 사용할 때 출력되는 결과물은 테이블에 입력된 순서이다.
이때 특정 기준에 의거하여 정렬하고 싶을때 사용한다.

기본형태

SELECT * FROM table_name
    ORDER BY column_name (ASC 또는 DESC);

// example
SELECT * FROM 코드스테이츠_IM22
ORDER BY name;

ASC는 오름차순, DESC는 내림차순 이다. 기본값은 ASC이니 써주지 않아도 무방하다.

ALIAS 사용

ORDER BY가 쿼리문중 가장 나중에 실행되기 때문에 이러한 형태가 가능.

SELECT pay + Incentive AS TOTAL FROM table_name ORDER BY TOTAL;

열이름 대신 숫자사용 가능, 여러 열을 선택할 수 있다.

사용구문이 기본형태와 동일하다고 할때, column_name이라는 열이 2번째 열이라면 사용법은 아래와 같다.

SELECT * FROM table_name
    OERDER BY 2;

또, 여러 줄을 선택하여 여러 기준으로 정렬이 가능하다.

SELECT * FROM table_name
    OERDER BY 2, 3 DESC, 1;

이는 2번째 열을 기준으로 오름차순으로 정렬한 상태에서
3번째 열을 기준으로 내림차순으로 정렬한뒤
1번째 열을 기준으로 오름차순으로 정렬하게 된다.

INSERT INTO

테이블에 데이터를 입력하는 방법이다.

기본형태

INSERT INTO table_name (id, name)
VALUES (14, '황대성')

// or

INSERT INTO table_name
VALUES (14, '황대성')

column_name에 대하여 직접적인 명시가 없을경우
모든 column에 대한 인수를 입력해주어야 한다. 다만 새로 column이 추가된다면
오류가 날 수 있으니 위와 같이 사용하는 것을 권장

SELECT으로 가져온 다수의 데이터 INSERT하기

INSERT INTO 테이블명 (COLUMN_LIST)
SELECT COLUMN_LIST FROM 조회 테이블명 WHERE 조회 조건

INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO)
SELECT PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO
FROM PLAYER_BACKUP

Null value

null은 0이나 비어있는 문자열과는 다르다.

심지어 null값은 null값과 비교할경우 역시 같지않다.

완벽하게 비어있는 값을 나타내기 위한 쿼리언어의 특수한 마커이다.

UPDATE

레코드를 수정한다.

update table_name set field_name = 1 where 조건;
// 조건에 부합하는 모든 레코드(row)의 field_name을 1로 변경한다.

where로 인한 조건이 존재 하지 않을경우 table_name 의 모든 field_name을 1로 변경하게 된다.

DELETE

레코드 (row)를 삭제할 때 사용된다.

where로 인한 조건이 없을경우 모든 레코드가 사라지는 것에 유의할 것.

delete from table_name where field_name = 4;
// 조건에 부합하는 모든 레코드(row)를 삭제한다.

COUNT

테이블에 존재하는 레코드의 개수를 세는 함수.

field를 지정할 수 있으며 이때에는 null값은 제외하고 카운팅한다.

모든 열에 대한 count를 할 경우 모든 레코드를 카운팅한다.

이때에는 null도 카운팅한다.

select count(*) from table_name;
// table_name의 모든 레코드(row)를 세어 출력한다.

ALIAS 사용

일반적인 field와 동일하게 ALIAS를 사용하여 표기되는 fieldname을 변경 할 수 있다.

select count(field_name) as cnt from table_name;
// table_name의 field_name열의 레코드 수를 센다(null은 무시한다). 이 때 열이름이 cnt로 표기된다.

LIKE

where과 자주쓰이며

데이터의 특정한 패턴을 검사할때 사용된다.

아래는 field_name의 값을 특정 패턴에 맞을경우 출력하는 예제이다.

// 모든 예제는 이 구문이 사전에 사용된다고 가정한다.
select * from table_name
  1. h로 시작한다.

     where field_name like 'h%';
  2. t로 끝난다.

     where field_name like '%t';
  3. o가 포함되어있다.

     where field_name like '%o%';
  4. love가 포함되어있지 않다.

     where field_name not like '%love%';

한 field에서 찾고자 하는것이 복수라면

% 를 여러번 사용 할 수 있다.

다만 순서를 만족해야 한다.

select * from table_name where field_name like '%a%o%';
// a 와 o를 포함해야 하며 순서가 지켜져야 한다.
// ex) camo는 포함되지만 ocarina는 포함되지 않는다.

순서 역시 상관없이 찾기 위해선 where조건에서 and / or 연산자를 사용하면 된다.

select * from table_name where field_name like '%a%' and field_name like '%o%';
// field_name에서 a와 o를 순서에 무관하게 포함하면 된다.
LIST

댓글