728x90
반응형

DML(Data Manipulation Language) 

데이터 조작어

별도의 커밋 명령을 통해 DB서버에 실제 반영해야 함

데이터 행에 대한 생성, 수정, 삭제

Data 명령어(CRUD) 설명
select 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어
insert 새로운 행을 추가하는 구문. 실행 후 테이블 행의 개수가 증가함
update 이미 존재하는 데이터의 수정. 명령처리 후에도 행의 전체 갯수의 변화 없음
delete 테이블의 특정행을 삭제하는 명령. where절을 사용하여 어떤행을 삭제할지 조건 설정

1. insert

--a. 컬럼명 작성하지 않는 경우
insert into member_info
values('tenten', '권정렬', 'ten1234', '01012341234');  --모든 컬럼에 해당하는 데이터 정보 입력

--b. 컬럼명 작성하는 경우(작성하지 않은 컬럼은 null값)
insert into member_info(member_id, member_name, member_pwd)
values('tenten', '권정렬', 'ten1234');

 

2. update

update member_info 
set member_pwd = 'ten1010', phone = '01012345678'
where member_name = '권정렬';

3. delete

명령문 실행전에 before image를 생성해두었다가 rollback실행시에 다시 이전 데이터로 돌릴 수 있음 
실행속도 느림 but 조금더 안전

delete from member_info
where member_name = '권정렬';

truncate(DDL) 전체행 자르기(where절 없이 전체테이블 삭제)

즉시 실행 후 auto commit처리됨
실행속도 빠름. 복구 불가능.

truncate table member_info;

 

 

DDL(Data Definition Language)

데이터 정의어

DML과 달리 자동커밋되므로 사용에 유의해야함

데이터베이스 객체를 생성, 수정, 삭제

Data 명령어 설명
create 객체 생성 구문
alter 객체에 대한 수정
drop 객체 삭제

1. create

create table member_info (
    member_code number,          
    member_id varchar2(10),
    member_pwd char(20) not null,              
    member_name varchar2(30),                               
    member_addr varchar2(100) not null,               
    gender char(3),
    phone char(11) not null,
    constraints uq_member_id unique(member_id),
    constraints ck_gender check(gender in('M', 'F')),
    constraints pk_member_code primary key(member_code)
);

2. alter

--a. add
alter table memeber_info add member_name varchar2(50) default '권정렬';
alter table memeber_info add gender char(1) not null check(gender in('M','F'));
alter table memeber_info add constraints uq_email unique(email);

--b. modify
--not null 추가는 add가 아니라 modify로 변경
--컬럼의 데이터 타입, default값 변경
--데이터가 존재한다면, 데이터 타입의 크기는 모든 데이터를 수용할 수 있는 범위에서 변경 가능(크게는 가능하나 작게는 X)
alter table memeber_info modify member_name not null;
alter table tbl_alter modify gender default 'F';

--c. rename
--컬럼명 / 제약조건명 / 테이블명
alter table memeber_info rename column member_pwd to password;
alter table memeber_info rename constraints pk_tbl_alter to tbl_alter_pk;

alter table memeber_info rename to info_member;
rename memeber_info to info_member; --위의 간단버젼

--d. drop컬럼
alter table memeber_info drop column gender;
alter table memeber_info drop constraints uq_email;

3. drop

drop table member_info;

 

 

제약조건(Constraints)

테이블 생성시에 각 컬럼에 대해서 제약조건을 설정가능

데이터의 무결성을 위해 제한적으로 데이터를 수용할 수 있도록 하는 것

NOT NULL  해당 컬럼 데이터에 null을 허용하지 않음
→ 필수 항목인 경우 사용(id, pwd)
UNIQUE 여러행 사이에서 중복된 값을 허용하지 않음
→ email, 주민등록번호 등 회원을 구분할 수 있는 데이터
PRIMARY KEY
(기본키, 주키)
레코드(행)의 고유 식별자로 사용하는 컬럼. (행과 행을 구분하는 키워드로 사용)
    not null+ unique와 같지만, 테이블당 딱 하나의 PK만 허용
FOREIGN KEY 외래키 두 테이블간의 연결을 설정하고, 부모테이블의 데이터만 자식테이블에서 허용하도록 함
자식이 부모를 참조함
CHECK 저장 가능한 데이터의 범위, 조건을 지정
→ 퇴사여부('Y','N'), 성별, 결혼여부, 수치(양수만 허용)  이 외의값은 입력할 수 X
create table member_info (
    member_code number,          
    member_id varchar2(10),
    member_pwd char(20) not null,              
    member_name varchar2(30),                               
    member_addr varchar2(100) not null,               
    gender char(3),
    phone char(11) not null,
    constraints pk_member_code primary key(member_code),
    constraints uq_member_id unique(member_id),
    constraints ck_gender check(gender in('M', 'F')),
    --부모테이블member, 자식테이블member_info
    constraints fk_member_info foreign key(phone) references member(phone)
);

 

반응형

'프로그래밍 > SQL' 카테고리의 다른 글

05.27(VIEW, SEQUENCE)  (0) 2020.05.27
05.26(DCL과 TCL 명령어, DD)  (0) 2020.05.26
05.22(top-n분석, window함수)  (0) 2020.05.22
05.21(SUBQUERY)  (0) 2020.05.21
05.20(SUBQUERY)  (0) 2020.05.20
복사했습니다!