꾸준히 하고싶은 개발자

sql 데이터 입력 변경 삭제 본문

카테고리 없음

sql 데이터 입력 변경 삭제

프라우스 2023. 2. 23. 15:07

데이터입력 

단일 튜플 삽입 

INSERT INTO table [(column1,column2,….)]

VALUES (value1, value2, ....);

 

ex1> 모든 컬럼에 데이터 삽입 (컬럼 생략가능)

 insert into student 

 values(19970406, '김산수', '컴퓨터정보', '1', 'A', 'M',172,63); 

 

ex2>컬럼 부분 선택 데이터 삽입

 insert into student(stu_no, stu_name)

 values(20160101,'다니엘');

 

복수 튜플 삽입 

INSERT INTO table [(column1,column2,….)]

SELECT …… FROM …… WHERE ……;

 

변경 

UPDATE table

SET COLUMN=value

WHERE 조건( 또는 서브쿼리 가능);

 

ex1>

 update student

 set stu_name='강다니엘'

 where stu_no=20160101;

 

- 주의> where 생략하면 망함 

 

ex1> a_enrol 테이블 생성

 create table a_enrol 

 as select * from enrol

 where stu_no < 20150000;

 

ex2> enrol 테이블에서 2015학번 학생들의 수강데이터를 a_enrol 삽입

 insert into a_enrol

 select * from enrol

 where stu_no like '2015%';

 

삭제 

DELETE FROM table

WHERE 조건;

 

ex1>

 delete from student

 where stu_no=20160101 or stu_no=19970406;

 

트랜잭션 : 하나의 덩어리(update, delete, insert 그룹화) 처리되는 방법, 트랜잭션 처리는 데이터 무결성(Integrity - 데이터의 정확성과 일관성을 유지하고 보증) 유지하기 위해 필요. DML문의 이상 실행이 하나의 트랙션이 되며, DDL 문은 하나의 명령이 하나의 트랜잭션이 된다.

 

commit(커밋): 변경내용 확정 / rollback(롤백): 변경내용 미확정-트랜잭션 시작전으로 되돌림

 

ex> 테이블 삭제 롤백

delete from student;

select * from student;

rollback; 

 

ex> 자동 커밋(auto commit) - create table 문에 의해 delete 자동 커밋

delete from b_student;

create table c_student (stu_no number, sttu_ame char(10));

rollback;

select * from b_student;

 

자동으로 트랜잭션 종료 경우

- DDL DCL 명령어를 실행할  
- Deadlock
같은 특정 Error 만날  
- SQL*Plus
정상 종료할

 

자동으로 롤백되는 경우

-SQL*PLUS 비정상 종료된 경우

-정전이 발생했거나 컴퓨터 DOWN 경우

 

- 같은 데이터를 복수의 사용자가 공유된다..

 

- 같은 데이터를 동시에 갱신하면 먼저 갱신한 내용을 나중에 갱신한 내용이 덮어쓰므로 데이터를 정상 상태로 유지 없음.

 

- 이를 해결하기 위해 RDBMS에는 동시실행 제어 기능이 구현되어 있다

 

- 베타적 제어를 이용(갱신중인 데이터에 락을 걸고 갱신후에 락을 풀어 접근 가능하도록)

 

- 참고> 데드락(dead lock, 교착상태): 2 이상의 트랜잭션이 서로 잠긴 데이터의 락이 해제 되기를 기다리는 현상이며 해결책으로는 한쪽의 트랜잭션 롤백 또는 중지 통해 해제한다.

 

데이터베이스 조작언어
(SQL -Structured Query Language)

명령어 종류  명령어  설명 
데이터 조작어
(DML :  Data Manipulation Language)
SELECT  데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE 라고도 함
INSERT
UPDATE
DELETE 
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류(데이터 삽입, 수정, 삭제)의 명령어들을 말함. 
 데이터 정의어
(DDL : Data Definition Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE 
테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로 (생성, 변경, 삭제, 이름변경) 데이터 구조와 관련된 명령어들을 말함.
데이터 제어어
(DCL : Data Control Language) 
GRANT
REVOKE 
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어들을 말함.
트랜잭션 제어어
(TCL : Transaction Control Language)
COMMIT
ROLLBACK
SAVEPOINT 
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함.