본문 바로가기

공부기록용

[ SQLD ] SQL_Basic DML 240814

LIKE 연산자 ( 복습 )

일부 단어만 작성한 후 검색할 때 해당 단어가 포함된

모든 결과를 반환하기 위해 사용되는 LIKE 연산자

LIKE 연산자만 사용한다면 작성한 단어가 완벽하게 일치하는 결과만을 반환하지만 ( = )

와일드카드( %, _ ) 를 사용한다면 작성한 단어가 포함된 모든 결과를 출력할 수 있다.

%는 임의의 문자 N개를 즉, 어떠한 문자든지, 문자 개수는 몇 개든 몇 백개든 상관없다.

_는 임의의 문자 1개를 의미한다.

 

ROWNUM 컬럼을 사용하면 WHERE절에 출력개수를 지정할 조건을 작성하기 쉽다.

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

번호를 획득할 때 ( 채번 ), 출력 개수를 지정할 때 활용이 가능하다.

 

테이블을 생성할 때 명시적으로 컬럼을 작성하지 않아도

기본적으로 만들어지는 컬럼중 하나가 ROWNUM이고,

ROWNUM은 행의 번호를 나타내며 사용자가 아닌 시스템이 관리한다.

번호를 획득할 때 ( 채번 ) 또는 ( 위에서부터 N개의 레코드를 반환할 때 ) 출력 개수를 지정하는 등에 사용된다.

 

ROWNUM은 TOP N개를 반환하고 싶을 때

즉 출력 개수를 지정하고싶을 때 사용하는데

부등호를 사용하여 ROWNUM ( 행의 번호 ) 을 출력한다.

여러 행을 반환할 때 같다를 의미하는 = 등호 사용은 안된다.

예를 들면 WHERE ROWNUM = 3 은 안되지만 하나의 행을 반환하는

WHERE ROWNUM = 1 은 된다. ( 예외로 사용가능한  WHERE ROWNUM = 1 )

ROWNUM 이 등호를 사용할 때 등호 ( = ) 뒤에 1이 아닌 숫자가 오면 틀린 것이다.

 

DML중 INSERT, UPDATE, DELETE 는 데이터를 변형하기 위한 명령어,

테이블의 구조가 변경되는 것이 아닌 테이블의 인스턴스가 변경되는 것이다.

 

INSERT는 기본적으로 테이블에 한 건의 레코드를 추가하는 것이다.

여러 건을 입력하고 싶다면 INSERT ALL ~ 구문을 활용한다.

문자 또는 날짜 값의 경우 작은 따옴표로 묶는다.

숫자 데이터는 작은 따옴표 없이 사용한다.

( 하나의 ) 레코드를 삽입시 두 가지 유형으로 입력이 가능하다.

1) 일부 칼럼에 대응되는 데이터만 입력할 때

INSERT INTO 테이블명 ( 칼럼을 순서대로 나열 ) VALUES ( 앞서 작성한 칼럼 순서대로 데이터 나열 );

→ 칼럼 순서는 실제 테이블의 칼럼 순서와는 무관하며

정의하지 않은 칼럼은 NULL 값이 입력된다.

ex. INSERT INTO PLAYER ( player_id, player_name, team_id, birth_date )
VALUES ( '2999001', '손흥민', 'K07', '1999-01-01');

 

2) 전체 칼럼에 대응되는 데이터를 모두 입력할 때

INSERT INTO 테이블명 VALUES ( 스키마 구조 순서대로 데이터를 나열한다 );

→ 전체 칼럼의 모든 값을 테이블 스키마 구조 순서대로 입력해야 한다.

→ 값이 없는 컬럼의 경우 NULL 또는 작은 따옴표 둘로 입력한다.

ex. INSERT INTO PLAYER
VALUES ( '2999002', '이승우', 'K07', NULL, NULL, '2010', 'MF', NULL, NULL, NULL, NULL, NULL, NULL);

 

 

INSERT ALL 사용할 때는 반드시 SELECT문을 사용해야 한다.

새로운 값을 직접 입력하는 경우에는 DUAL 테이블을 사용한다 → SELECT * FROM DUAL;

 

DELETE는 테이블에 존재하는 전체 레코드를 삭제한다.

DELETE 테이블명; DELETE FROM 테이블명; → 테이블에 존재하는 모든 레코드가 삭제된다.

일반적으로는 WHERE절을 작성하여 특정 인스턴스를 삭제한다.

예를 들어 DELETE FROM STADIUM WHERE STADIUM_ID = 'TP1';

이 SQL문은 STADIUM  테이블에서 STADIUM_ID가 TP1인 레코드를 삭제하라는 것이다.

 

'공부기록용' 카테고리의 다른 글

[ SQLD ] DDL 240816  (0) 2024.08.16
[ SQLD ] SQL - DDL 240815  (0) 2024.08.16
[ SQLD ] SQL_Basic DML 240810  (0) 2024.08.10
[ SQLD ] 데이터 모델과 성능 240806  (0) 2024.08.06
[ Spring Boot ] 스프링 JPA  (0) 2024.08.02