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 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 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');
수정 시, where 절에 사용되는 컬럼은 중복되지 않는 컬럼을 사용해서 수정 :primary key, unique key // 중복될 경우 모조리 수정
update 테이블 명
set 컬럼명 = 바꿀값, 컬럼명 = 바꿀 값
where 조건
delete member
where id = 'cccc';
cccc 로 시작하는 id 컬럼 삭제 -- where 조건이 없이 사용한다면 모든 table날라감
create table emp
**as**
select * from employee;
as 를 넣고 select * from employee ⇒ employee 테이블 전체를 그대로 복사
not null : 컬럼에 NULL을 넣을 수 없다.
primary key : 하나의 테이블에서 하나만 존재 할 수 있다.
=> primary key 가 적용된 컬럼은 중복된 값을 넣을 수 없다
인덱스가 자동으로 생성된다. <==검색을 빠르게 할때 사용됨
NULL을 넣을 수 없다.
Unique : 중복된 값을 넣을 수 없다. 테이블에 여러번 넣을 수 있다.
NULL을 넣을 수 있다. 단 1번만 넣을 수 있다.
인덱스가 자동으로 생성된다. <== 검색을 빠르게함.
check : 값을 넣을 때 체크해서 값을 넣는다 , 저장 가능한 데이터의 값의 범위나 조건을 지정하여 설정한 값만을 허용
(primary key가 아니면서 중복된 데이터를 넣기 위해서)
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 제약조건 : 값을 컬럼에 넣을때 범위를 체크해서 값을 넣는다.
제약조건 이름 생성 규칙 : 테이블이름 컬럼명 제약조건유형
ex) check salay>0
salary값에 0 초과 값만 들어가게 해줌
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 부모테이블명(부모칼럼명) );
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');
drop table member;
roll back이 불가능