SQL
*
하나하나의 항목: 컬럼 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