책보나 2016. 12. 27. 15:33



하나하나의 항목: 컬럼 column
하나하나의 값을 저장할 때->한 줄->하나의 정보: 레코드

type 옵션=>문자 varchar2 (=String) (4000자 까지 가능) (문자 설정 ''홑따옴표)
    숫자 number (=double, int)
    날짜 date (=Date (Timestamp)) (날짜형태의 문자)(날짜형식)


***◆ SQL: 질의응답언어/명령어체계 (대소문자 구분X)

 

 

 

SQL 테이블 생성

 

테이블생성 (create)


 create table 테이블명 (
 컬럼명  타입 옵션,     ->여러개의 컬럼은 ,쉼표로 구분
 컬럼명  타입             컬럼의 수는 상관X 옵션은 넣어도되고 안넣어도됨/여러가지 겹쳐 써도 됨(unique not null)
 );        

 

중복값X-> primary Key/default 자주 씀

 
 ▲ 옵션
 * primary Key : 중복값 허용X 테이블 컬럼 중 하나만 사용가능 (예 ID값) (unique와 not null이 합쳐진 것이 primary Key)
 * unique : 중복데이터X
 * not null : null(공백) 값이 들어갈 수 없다 (같이 쓸 수 있음 unique not null)
 * default : 기본값 (입력을 하지 않았을 때 들어가는 값) -> default와 not null을 같이 쓸 필요가 없다
               -> default와 unique도 같이 안쓴다.   =>default는 혼자 씀
            -> 문자 설정 '홑따옴표'
 * sysdate : 현재 시간을 넣어준다
 * check : 조건설정(컬럼의 값을 특정 범위로 제한한다) ==>..잘 안쓰인다
 
예)
 create table test(
    id varchar2(100) primary Key,
    pw varchar2(100) unique not null,  =>문자( pw varchar2(100) default '0000', )
    age number default 1,  =>check( age number check (age >= 1 and age <=100), )
    reg date default sysdate
 );

 

 *드래그하고 실행하면 그 부분만 실행된다.
 ((오라클은 오류 해결이 쉬움 오류번호를 검색하면 된다))

 

● 테이블 정보확인
 desc 테이블명;

 

● 테이블 삭제
 drop table 테이블명;

 

● 테이블 컬럼 추가
 alter table 테이블명 add(컬럼명 타입);
*사이에는 추가할 수 없고 마지막에 추가

 

● 테이블 컬럼 삭제
 alter table 테이블명 drop column 컬럼명;

 

● 테이블 컬럼 타입변경
 alter table 테이블명 modify(컬럼명 타입);

 

● 테이블 컬럼 이름 변경
 alter table 테이블명 rename column 컬럼명 to 변경명;

 

● BD 시스템 동기화
 commit;
(SQL Tool이 auto commit을 지원하지 않는다)

 

● 레코드 추가
 insert into 테이블명 values(값);
 넣을 때 컬럼의 순서대로 넣어야한다.

 

● 레코드 선택 컬럼 값 추가
 insert into 테이블명(컬럼명) values(값);

 

● 레코드 값 수정
 update 테이블명 set 컬럼명 = 변경값;
 모든 컬럼 값이 변경됨

 

● 레코드 값 조건 수정
 update 테이블명 set 컬럼명 = 변경값 where 조건식;
 (조건식)(java의 if문) *(, 쉼표로 구별해 여러가지 수정가능)
 ( update test set pw = '8765' where id = 'bona'; )

 

● 레코드 값 삭제 (회원탈퇴, 글 삭제)
 delete from 테이블명;

->몽땅 삭제

 

● 레코드 값 조건 삭제
 delete from 테이블명 where 조건식;
 조건식을 써서 조건 삭제를 할 수 있다.

 

● 테이블 특정 컬럼 검색
 select 컬럼명 from 테이블명;

 

● 테이블 정렬
 select * from 테이블명 order by 정렬할 컬럼명;


 (abc 순으로 레코드 정렬) ->오름차순 정렬(기본)

 ▲ asc 오름차순 (default 값)
     desc 내림차순
    ( select * from 테이블명 order by 정렬할 컬럼명 desc; )


● 테이블 전체검색
 select * from 테이블명;

 

● 테이블 조건검색
 select * from 테이블명 where 조건식;
 ( and연산자 와 or연산자 )*
 이렇게도 사용이 가능하다↓
 select 컬럼 from 테이블명 where 컬럼2 = 값;

 

● 테이블 단어검색 (like)
 select * from 테이블명 where 컬럼명 like;
 ▲
  select * from 테이블명 where 컬럼명 like 'a%'; -> a로 시작하는 단어
  select * from 테이블명 where 컬럼명 like '%a'; -> a로 끝나는 단어
  select * from 테이블명 where 컬럼명 like '%a%'; -> 문자 중 a를 포함하고 있는 단어
     ('%a%b%' 도 가능)

 

● null 검색
 select * from 테이블명 where 컬럼명 is not null; -> null 값이 아닌 것
 select * from 테이블명 where 컬럼명 is null; -> null 값 찾기

 

● in 연산자
 select * from 테이블명 where 컬럼명 in(값);
 값과 일치하는 데이터 검색

 

● not in 연산자
 select * from 테이블명 where 컬럼명 not in(값);
 값과 일치하지않는 데이터 검색 (제외하고)

 

● between 연산자
 select * from 테이블명 where 컬럼명 between 값 and 값;
 (범위표현)(and연산자와 비슷하다)

 

● count 연산자 **많이쓴다
 select count(*) from 테이블명;
 select count(컬럼명) from 테이블명;
 검색 된 레코드 수

 

● max 연산자
 select max(컬럼명) from 테이블명;
 최대값 number 컬럼에만 쓸 수 있다

 

● min 연산자
 select min(컬럼명) from 테이블명;
 최소값 number 컬럼에만 쓸 수 있다

 

● ave 연산자
 select ave(컬럼명) from 테이블명;
 평균값 number 컬럼에만 쓸 수 있다

 

● sum 연산자
 select sum(컬럼명) from 테이블명;
 해당 컬럼의 총합 number 컬럼에만 쓸 수 있다

 

SQL 시퀀스 생성

 

●시퀀스 생성
create sequence 테이블명_seq nocache;


default 값이 들어간다(기본값)
시작값 1/증가값 1/nomaxvalue/nominvalue/nocycle/cache 20


create sequence 시퀀스명 start with 1 시작값
create sequence 시퀀스명 increment by 1 증가값

 

create sequence 시퀀스명 maxvalue 100 최대값
create sequence 시퀀스명 nomaxvalue 최대값이 없다(무한대)

 

create sequence 시퀀스명 minvalue 1 최소값
create sequence 시퀀스명 nominvalue 최소값이 없다

 

create sequence 시퀀스명 cycle max와 min이 설정 된 경우 반복한다
create sequence 시퀀스명 nocycle 반복하지 않는다

 

create sequence 시퀀스명 cache 20 편집점(일정 시간동안 시퀀스를 사용하지 않았을 때 중간에 20이 들어간다)
create sequence 시퀀스명 nocache     (예) 1, 2, 3, 4  (20)  25, 26, 27, 28 ...


●시퀀스 삭제
drop sequence 시퀀스명;

 

●전체 시퀀스확인(생성된 시퀀스 정보 확인)
select * from user_sequence;
select * from seq; (둘 다 가능)

 

●시퀀스 적용
insert, update 할 때
시퀀스명.nextval