SQL 테이블 생성, 수정, 삭제

구름·2022년 12월 17일
0

SQL

목록 보기
6/7
post-thumbnail

📍 SQL 정의 :

SQL(Structured Query Language) : 구조화된 질의 언어

select 컬럼
from 테이블명, 뷰명
group by 그룹핑할 칼럼명
having 나온결과에 대한 조건
order by 정렬할 칼럼
기능코드
DDL(Data Definition Language)객체를 생성하고 수정, 삭제CREATE(생성), ALTER(수정), DROP (삭제),RENAME(객체이름변경), TRUNCATE(레코드삭제)
객체(Object) -Table,View,Function,Index,Store Procedure, Triger …
DML(Data manufature Language)데이터 조작언어, 레코드를 생성, 수정, 삭제 (테이블안의 값)INSERT(생성), UPDATE(수정), DELETE(삭제)트랜젝션을 발생시킴. commit (DB에 영구저장), rollback (원래 상태로 되돌림)
DCL(Data control Language)데이터 제어 언어, 계정을 생성하고 권한을 부여하고 삭제할 때 사용.GRANT (권한을 부여), REVOKE (권한을 취소)
DQL(Data Query Language)데이터 질의 언어(출력)SELECT
TCL(Transaction Control Language)트랜젝션 처리 언어
BEGIN TRANSACTION : 트랜잭션 시작
(INSERT, UPDATE, DELETE <= DML )
COMMIT : 트랜잭션을 종료 ( DB에 영구저장)
ROLLBACK :트랜잭션을 종료 ( 원래 상태로 되돌림, 트랜잭션 시작 전 상태로 되돌림)
SAVEPOINT ( 트랜잭션 내의 임시 저장 시점 설정)

📍 👉 테이블 생성 (create ~ )

🌵구조

create Table dept(          --생성할 테이블 명
    dno number(2) not null, -- 컬럼명 자료형 NULL허용여부  
    (nuber(_) <- 자리수 notnull ( null을 넣을 수 없다)
    dname varchar2 (4) not null, --varchar2(4) 4자리 ,널 허용 불가
    loc varchar2 (13) null      
    );

📍 👉테이블에 값 넣기 (insert into -values)

insert into dept (dno,dname,loc) 
values (10,'ACCO', 'SEOUL');

-- null허용 컬럼에 null넣기 
desc member;
insert into member
values ( 'dddd' , '1234' , null, null, 30, 70.55);
commit;

--primary키가 있을 경우 id가 겹치면 안됨 
insert into member (id, pass,addr,phone,age,weight)
values ('aaaa','1234','서울 종로구','010-1111-1111',20,50.22);

📍 👉 컬럼명을 생략시 값 넣기 , 모든 컬럼에 값을 넣어줘야함

=> 컬럼명 생략

insert into dept
values (30,'abc','Taegu');
**--loc 컬럼의 값을 안넣을 수 있는 방법 : null 허용**
insert into dept (dno, dname)
values (30, 'abc');

📍 수정 (update) : 반드시 where 절 을 사용해서 수정해야함

수정 시, where 절에 사용되는 컬럼은 중복되지 않는 컬럼을 사용해서 수정 :primary key, unique key // 중복될 경우 모조리 수정

update 테이블 명

set 컬럼명 = 바꿀값, 컬럼명 = 바꿀 값

where 조건

📍 삭제 (delete): 반드시 where 조건을 사용해야 한다. 조건없이 삭제하면 모든 데이터가 삭제됨.

  • 중복되지 않는 컬럼을 조건에 적용 : primary key, unique key
delete member
where id = 'cccc';
cccc 로 시작하는 id 컬럼 삭제 					 --  where 조건이 없이 사용한다면 모든 table날라감 

📍테이블 복사 (emp)

create table emp 
**as**
select * from employee;

as 를 넣고 select * from employee ⇒ employee 테이블 전체를 그대로 복사

❗제약조건❗

  • not null : 컬럼에 NULL을 넣을 수 없다.

  • primary key : 하나의 테이블에서 하나만 존재 할 수 있다.
    => primary key 가 적용된 컬럼은 중복된 값을 넣을 수 없다
    인덱스가 자동으로 생성된다. <==검색을 빠르게 할때 사용됨
    NULL을 넣을 수 없다.

  • Unique : 중복된 값을 넣을 수 없다. 테이블에 여러번 넣을 수 있다.
    NULL을 넣을 수 있다. 단 1번만 넣을 수 있다.
    인덱스가 자동으로 생성된다. <== 검색을 빠르게함.

  • check : 값을 넣을 때 체크해서 값을 넣는다 , 저장 가능한 데이터의 값의 범위나 조건을 지정하여 설정한 값만을 허용

📍 Unique 제약조건 : 중복된 데이터를 넣을 수 없다.

(primary key가 아니면서 중복된 데이터를 넣기 위해서)

  • NULL을 넣을 수 있다. 1 번만 넣을 수 있다.
    • 테이블 특정 컬럼에 여러번 사용 가능
    • 인덱스를 자동으로 생성 <=검색 성능 향상
    • JOIN시 ON절, Where 조건
	create table customer1 (
   id varchar(20) (not null) primary key, 
			--오류발생, primary key : not null
    pass varchar(20) not null unique, --중복되지 않는 컬럼 
    name varchar(20) null unique, --중복되지 않는 컬럼,null허용 
    phone varchar(20) null unique,
    addr varchar(20) null 
    ); 
  • 📍제약조건 확인하기
    --제약조건 확인하기 
    select * from user_constraints
    where TABLE_NAME = 'CUSTOMER1';
    ⇒ TABLE NAME = 테이블 명 으로 설정하면, 해당 테이블의 제약조건만 보여줌

📍 Check 제약조건

  • check 제약조건 : 값을 컬럼에 넣을때 범위를 체크해서 값을 넣는다.
    제약조건 이름 생성 규칙 : 테이블이름 컬럼명 제약조건유형

          ex) check salay>0 
          

salary값에 0 초과 값만 들어가게 해줌

Foreigin key (참조키)

oreigin key(참조키) : 다른 테이블(부모)의 primary key, unique 컬럼을 참조해서 값을 할당

create table ChildTbl (
    id varchar2(40) constraint ChildTbl_id_PK primary key,
    pw varchar2(40) ,
    infono number,
    constraint ChildTbl_infono_FK foreign key (infono) references ParentTbl(infono)
    );
**constraint ChildTbl_infono_FK foreign key (infono) references ParentTbl(infono));**

⇒ constriaint /칼럼명/** foreign key / (참조할 컬럼명) / refereneces 부모테이블명(부모칼럼명) );

📍 default : 컬럼의 값을 넣지 않을때 default로 설정된 값이 기본적으로 들어간다.

create table emp5(
    eno number(4) constraints emp5_eno_PK primary key,
    ename varchar2(10),
    salary number(7,2) **default 1000**
    );

insert into emp5 (eno,ename)
values(1111,'aaaa');
  • default를 설정해준것을 값을 넣지 않으면 default값이 들어감
  • default를 명시해도, 안해도 상관없다.
  • 제한 조건은 아니라 제약 조건 이름을 할당할 수 없다.

📍 테이블 삭제

drop table member;

roll back이 불가능

profile
내가 보려고 하는 업데이트

0개의 댓글