우잉's Development

SQLite3_여러가지 함수 본문

개발/SQLite3

SQLite3_여러가지 함수

우잉이 2022. 1. 11. 13:58
728x90
반응형

1. changes 함수

최근 실행된 SQL문에 수정과 삭제된 행 수 출력

changes()

예제를 실행하려면 INSERT문, UPDATE문, DELETE문에 의해 테이블의 행에 대한 작업을 수행해야 하므로 실행해보겠습니다.

INSERT문이 여러번 실행되었지만, 최근 발생한 데이터를 하나 추가한 것이기 때문에 changes함수는 1이 반환

이번엔 UPDATE문에서 Seoul을 address컬럼에 있는 데이터가 2개여서 2개 데이터 모두 수정되었습니다. 그러므로 changes함수는 2가 출력됩니다. 

DELETE문도 실행되는 해당 데이터 행 수 만큼 출력이 됩니다.

2. total_changes 함수

데이터베이스에 연결되고 실행된 SQL 문에 의한 수정 또는 삭제된 행의 총수 출력

total_chages()

새로운 user테이블을 생성하고 6개의 데이터를 INSERT문을 시행했습니다. 다음 total_changes()를 실행했더니 6이 출력됐습니다.

update와 delete 수행을 하고 total_chages()를 시행하겠습니다.

insert 문 6개 + update문 1개+ delete문 1개 해서 8이 출력됩니다.

 

3. ifnull 함수

: 값1이 NULL인 경우 값2를 출력

ifnull(값1, 값2)

위에서 사용했던 user테이블에 null값이 있는 데이터를 추가하고 ifnull함수를 사용해보겠습니다.

4. coalesce 함수

값1부터 값n-1중 처음 NULL값이 아닌 값을 반환. 값이 NULL인 경우 값n을 출력 

coalesce(값1, 값2, ... , 값n-1, 값n)

위에서 사용한 user테이블에 coalesce함수를 사용해보겠습니다.

name 컬럼에 저장되는 값이 NULL이 아닌 경우에 name 컬럼의 값을 반환하고, name 컬럼의 값이 NULL 인 경우에는 address 컬럼 값를 반환하며, address 컬럼의 값이 NULL이 아닌 경우에는 address 컬럼의 값을 NULL 인 경우에는 ‘NoName’를 반환합니다. 

id = 7을 예로 들면 name 컬럼이 NULL이므로 그 다음 컬럼 address로 넘어가고 address는 null값이 아니므로 Paju가 출력된다. id = 8은 name과 address컬럼의 값이 다 NULL이므로 No name 출력합니다.

그럼 name값이 Laul 그리고 address값이 NULL인 경우는 어떨까? 생각해보고 밑에 문장을 실행하면 좋을 것 같습니다.

id=9는 바로 name값이 NULL이 아니므로 name컬럼의 값 Laul이 출력되며 coalesce함수가 종료됩니다.

 

5. nullif 함수

두 인수 값을 비교하여 같으면 NULL을 반환하고 그렇지 않으면 첫 번째 값인 값1이 반환

nullif(값1, 값2)

예제로 다뤄봅시다. 먼저 score 테이블을 생성하고 데이터를 추가합시다.

그리고 score테이블의 point의 평균을 구합시다. 

높은 점수들에 비해 Cho의 point값이 -2로 오류가 있어서 이 부분을 NULL값을 주고 평균을 구하고 싶습니다. 이럴 경우 nullif를 사용합니다.

avg(nullif(point, -2))를 사용하여 point컬럼 값이 -2인 데이터의 point를 null값을 넣어 avg를 구하면 (84+92+81+73)/4=85.6로 계산되었습니다.  

 

6. typeof 함수

값의 데이터 타입을 확인하기 위한 함수 

typeof(값)

새로운 test테이블을 생성하여 실행하겠습니다.

data컬럼의 데이터 타입을 none으로 정의하고 데이터들의 타입을 확인해보았습니다. null값과 zeroblob(2)둘다 아무것도 안 들어간 것처럼 동일하게 들어갔지만 타입을 확실히 구분되어 나온 것을 확인할 수 있습니다.

 

7. sqlite_version함수

실행 중인 SQLite 버전 정보를 반환

sqlite_version()

저의 sqlite버전은 3.37.1인 것을 확인할 수 있습니다.

 

여기까지 SQLite3를 실행해 보았습니다.  끝까지 봐주셔서 감사합니다. 

728x90
반응형

'개발 > SQLite3' 카테고리의 다른 글

SQLite3_BLOB타입 함수  (0) 2022.01.11
SQLite3_숫자 관련 함수  (0) 2022.01.10
SQLite3_문자열 관련 함수  (0) 2022.01.10
SQLite3_group_concat, 날짜-시간 함수  (0) 2022.01.10
SQLite3_집계함수  (0) 2022.01.10
Comments