일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 딥러닝
- 백준 4358 자바
- HTTP
- 머신러닝
- 백준 5525번
- 리액트 네이티브
- 깃허브 토큰 인증
- 팀플회고
- 깃 터미널 연동
- 깃 연동
- 정리
- React Native
- 모두의네트워크
- 백준 4949번
- 데이터베이스
- 모두의 네트워크
- 자바
- 지네릭스
- 데베
- 백준
- 깃허브 로그인
- 백준 4358번
- 모두를 위한 딥러닝
- 리액트 네이티브 프로젝트 생성
- SQL
- 모두를위한딥러닝
- 네트워크
- 문자열
- 스터디
- 리액트 네이티브 시작하기
- Today
- Total
솜이의 데브로그
16-19강 : 데이터의 추가, 삭제, 갱신 본문
Reference : SQL 첫걸음
16강 ) 행 추가하기 - INSERT
데이터베이스에 행을 추가하기 위해서는 INSERT 명령을 사용한다.
INSERT INTO 테이블명 VALUES(값1, 값2, ...);
SELECT 명령은 데이터 검색을 위한 것으로, 질의를 하면 데이터베이스 서버가 클라이언트로 결과를 반환하는 형식으로 처리된다.
데이터를 추가하는 경우에는 반대로 클라이언트에서 서버로 데이터를 전송하는 형식을 취하며 서버 측은 전송받은 데이터를 데이터베이스에 저장한다.
1. INSERT로 행 추가하기
- INSERT 명령을 통해 행을 추가하기 위해서는 각 열의 값을 지정해야 한다.
- 값을 지정할 때는 해당 열의 데이터 형식에 맞도록 지정해야 한다.
INSERT INTO sample41 VALUES(1, 'ABC', '2014-01-25');
2. 값을 저장할 열 지정하기
- 행을 추가할 경우 값을 저장할 열을 지정할 수 있다.
- 테이블명 뒤에 괄호로 묶어 열명을 나열하고 VALUES 구로 값을 지정한다.
- 지정한 열과 동일한 개수로 값을 지정해야 한다.
INSERT INTO sample41(a,no) VALUES('XYZ', 2);
별도의 값을 지정하지 않은 열에는 기본값 (default값, 보통 NULL) 이 저장된다.
3. NOT NULL 제약
- 행을 추가할 때 유효한 값이 없는 상태(NULL)로 두고 싶을 경우에는 VALUES 구에서 NULL 값을 지정할 수 있다.
- NOT NULL 제약이 걸려있는 열은 NULL 값을 허용하지 않는다.
INSERT INTO sample41(no, a, b) VALUES(3,NULL, NULL);
4. DEFAULT
- 열을 지정해 행을 추가할 때 지정하지 않은 열은 Default 값을 사용하여 저장된다.
- DESC 커맨드로 열 구성을 살펴볼 수 있다.
- 행 추가시 DEFAULT 키워드를 사용하면 디폴트 값을 명시적으로 저장한다.
- 'DEFAULT 를 명시적으로 지정하는 방법' 이라고 한다.
INSERT INTO sample411(no, d) VALUES (2,DEFAULT);
암묵적으로 디폴트 저장
열을 지정하지 않고 다른 열만 지정해 INSERT 명령 실행 시 별도로 지정하지 않은 열은 값이 디폴트로 저장된다.
17강 ) 삭제하기 - DELETE
데이터베이스에서 행을 삭제하기 위해서는 DELETE 명령을 사용한다.
DELETE FROM 테이블명 WHERE 조건식
1. DELTE로 행 삭제하기
DELTE FROM sample41;
위의 명령을 실행하면 테이블의 모든 데이터가 삭제한다.
DELETE 명령은 WHERE 조건에 일치하는 '모든 행'을 삭제한다.
2. DELETE 명령 구
DELETE 명령에서도 SELECT 명령처럼 WHERE 구를 지정할 수 있다. 하지만 ORDER BY구는 의미가 없기 때문에 사용할 수 없다.
DELETE FROM sample41 WHERE no=3;
18강 ) 데이터 갱신하기 - UPDATE
테이블의 셀에 저장되어 있는 값을 갱신하려면 UPDATE 명령을 사용한다.
UPDATE 테이블명 SET 열1=값1, 열2=값2, ... WHERE 조건식
1. UPDATE로 데이터 갱신하기
- UPDATE는 셀단위로 데이터를 갱신할 수 있다.
- WHERE 구를 생략한 경우에는 테이블의 모든 행이 갱신된다.
- SET 구를 사용하여 갱신할 열과 값을 지정한다.
- 갱신해야 할 열과 값이 복수인 경우에는 '열=값' 을 콤마(,)로 구분하여 리스트 형식으로 지정할 수 있다.
UPDATE sample41 SET b='2014-09-07' WHERE no=2;
UPDATE 명령에서는 WHERE 조건에 일치하는 '모든 행' 이 갱신된다.
2. UPDATE로 갱신할 경우 주의사항
- SET 구에서 대입연산자는 = 이다.
- 갱신은 행 단위로 처리된다.
3. 복수열 갱신
- UPDATE 명령의 SET 구에서는 필요에 따라 콤마(,) 로 구분하여 갱신할 열을 여러개 지정할 수 있다.
-
UPDATE sample41 SET a='xxx', b='2014-01-01' WHERE no=2;
SET 구의 실행 순서
데이터베이스 제품에 따라 처리 방식이 다르다.
- Oracle에서는 SET 구에 기술한 식의 순서가 처리에 영향을 주지 않는다.
- MySQL에서는 SET 구에 기술된 순서로 갱신 처리가 일어난다.
4. NULL로 갱신하기
UPDATE 명령으로 셀 값을 NULL로 갱신할 수 있으며, 'NULL 초기화' 라고도 한다.
UPDATE sample41 SET a= NULL;
하지만 NOT NULL 제약이 설정되어 있는 열은 NULL 이 허용되지 않는다.
19강 ) 물리 삭제와 논리 삭제
1. 두 종류의 삭제 방법
- 물리 삭제는 SQL의 DELETE 명령을 사용해 직접 데이터를 삭제하는 사고 방식이다.
- 논리삭제는 테이블에 '삭제플래그'와 같은 열을 미리 준비후, 테이블에서 실제로 행을 삭제하는 대신, UPDATE 명령을 이용해 삭제 플래그의 값을 유효하게 갱신하는 삭제 방법이다.
- 실제 테이블 안에 데이터는 남아있지만, 참조 할때는 '삭제 플래그'가 삭제로 설정된 행을 제외하는 SELECT 명령을 실행한다.
- 데이터를 삭제하지 않기 때문에 삭제되기 전의 상태로 돌릴 수 있다는 장점이 있다.
- 삭제해도 데이터베이스의 저장공간이 늘지 않으며 데이터베이스의 크기가 증가함에 따라 검색 속도가 떨어진다는 단점이 있다.
2. 삭제 방법 선택하기
물리 삭제와 논리 삭제는 상황에 따라 용도에 맞게 데이터 삭제 방법을 선택해야 한다.
'CS > Database' 카테고리의 다른 글
20-22강 ) 집계, 그룹화 (0) | 2021.11.06 |
---|---|
6장 ) SQL문의 기본 : Select(2) (0) | 2021.11.06 |
6장 ) SQL문의 기본 : Select (0) | 2021.10.31 |
13-15강 ) 문자열, 날짜, CASE문 (0) | 2021.10.28 |
5장 ) DBMS 기본지식 (0) | 2021.10.28 |