일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 생존코딩
- 모두의 연구소 # 오준석의생존코딩# 오름캠프
- ㅇ
- 오름캠프
- 오준석의 생존코딩
- 오름캠프플러터
- 모두연구소
- Tag #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 오존석의 생존코딩
- 모두의연구소
- 패스트 캠퍼스
- 오준석의생존코딩
- 모두의연구소 오준석생존코딩 오름캠프
- #패스트캠퍼스 #내일배움카드 #국비지원 #K디지털기초역량훈련 #바이트디그리 #자바인강
- 플러터
- Today
- Total
꾸준히 하고싶은 개발자
sql 데이터 입력 변경 삭제 본문
데이터입력
단일 튜플 삽입
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에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말함. |