3. DB 조작해보기(UPDATE, DELETE, LIKE %_FILTERING*)
2019. 1. 23. 23:09
UPDATE
- UPDATE (테이블명) SET (칼럼) = 대입값 WHERE (특정칼럼 조건) 의 형식이다.
DML(S, U, I, D) 중 하나이며,U,I,D
는 INSERT INTO (테이블) VALUE ()처럼,테이블명이 먼저나오지만 결국 칼럼을 조작
한다.numeric(자리수,소수점자리수)
데이터로 integer로 표현할 수 없는 decimal point(소수점)을 표시한다
.
UPDATE로 칼럼값을 바꿀 때는, WHERE에 primary key인 id 같은 것으로 검색하자.
cf)ALTER
는 PRIMARY KEY를 주는 등의테이블 자체 수정
을 한다. UPDATE로 칼럼 값을 바꾼다.
또한, UPDATE와 DELETE는 반드시 WHERE를 달아줘야 전체 데이터를 보호할 수 있다.
DELETE
- DML(S,U,I,D)정리
SELECT 칼럼 FROM 테이블
UPDATE 테이블 SET 칼럼=값 WHERE 조건
INSERT INTO 테이블 VALUES ( , , )
DELETE FROM 테이블 WHERE 조건
DELETE는 위험하기 때문에 SELECT 먼저 하고, DELETE로 수정하라고 배웠다.
하지만 SQL은 똑똑하기 때문에 아래와 같이 알려준다.
item 테이블의 id = 4는 purchases테이블에서 fk_purchase_item 칼럼으로foreign key로 작용하고 있기 때문에 에러
가 난다해당 테이블을 조회해보자.
맨 처음 purchases테이블을 생성할 때, 아래와 같이 pk, fk를 넣어줬었다.
ALTER TABLE "public"."purchases" ADD CONSTRAINT "fk_purchase_item" FOREIGN KEY ("item_id") **REFERENCES "public"."items" ("id") ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE;그럼 items 테이블의 id = 4를 지우려면, 먼저 그 것을 foreign key로 걸어둔 purchases 테이블의 id = 4를 삭제해줘야한다.
Wildcard for filtering unknowns : LIKE 'wildcard';
여기서는 필드 전체가 아니라 필드의 일부분에 근거해서 필터링 하는 방법을 배워보자.
WHERE 칼럼명 IN ('', '');의 경우에는 해당 값 전체가 있어야한다.
여기서는WHERE 칼럼명 **LIKE '패턴'**;
을 이용해 정규표현식처럼 값 일부로 추출할 수 있다.
- customers 테이블의 last_name칼럼에는 t가 들어가는 사람이 2명 있다.
LIKE 칼럼'%'
;에서 %는모든 문자가 줄지어 나타남(any character)
을 의미.
- LIKE 칼럼명
'___'
; 언더스코어는갯수만큼 문자열수를 가지는 값(single character)
을 필터링한다
_ 4개
_ 5개
%
를 응용하면,** 중간에 특정문자가 끼여있는 것을 추출**할 수 있다
예를 들어%t%
- 또 응용하여,
%t_
로 모든문자로 시작하다가 t+1개의 문자로 끝나는 것을 추출할 수 있다.
'한의대 생활 > └ PostgreSQL' 카테고리의 다른 글
CREAT TABLE*(primary key, references) and INSERT INTO (0) | 2019.01.29 |
---|---|
JOIN*(3개 테이블) and GROUP BY*(보이지않더라도 key칼럼으로) and ORDER BY (0) | 2019.01.29 |
4. DB 조작해보기(sp_help과 같은코드, JOIN, *JOIN에 JOIN example) (0) | 2019.01.24 |
2. 쿼리창 및 간단한 DB조작(SELECT, WHERE, LIMIT*) (1) | 2019.01.23 |
1. PostgreSQL 다운 및 설치 / pgAdmin3 실행 해보기 (0) | 2019.01.23 |