JSP

SQL 기본문법

모자 2021. 8. 15. 18:19
728x90
반응형

SQL이란?

SQL은 Structured Query Language (구조적 질의 언어)의 줄임말로, 관계형 데이터베이스 시스템에서 자료를 관리 및 처리하기 위해 설계된 언어이다.

 

SQL에서 사용하는 기본문법들을 알아보자.

 

 

테이블 생성  (테이블:데이터가 담기는 곳)

 

CREATE TABLE book2란 이름의 table을 생성해주었다.

각각의 book_id, book_name, book_loc는 테이블 안쪽 열의 이름이고, number varchar2 은 데이터 타입이고 괄호안은 데이터의 크기이다.

 

제약조건을 건 table 생성

CONSTRAINT book_id_pk PRIMARY KEY

BOOK2라는 테이블이 생성된 것을 볼 수 있고 BOOK2를 열어보면 각각의 열들도 생성이 되었다.

 

테이블 검색

SELECT*FROM tab; 코드를 실행해보면,

테이블들이 쨔란~! 하고 나온다.

 

테이블 삭제

 

DROP TABLE bookname;코드를 통해 Book2 테이블을 삭제해 주었다.

 

실행결과

조건을 건 테이블 생성

CONSTRAINT book_id_pk PRIMARY KEY 코드를 통해 유일하게 한 아이디만 가질 수 있게 만들어 주었다.

만약, book_id가 3번이란 이름을 갖고있으면 다음에 3번이 들어올 경우 데이터를 데이터베이스에 넣지 않는다. 오직 하나의 이름만 가질 수 있다.

 

 

시퀀스 생성

값을 자동적으로 하나 증가시켜주거나 감소시켜준다.

CREATE SEQUENCE book2_seq; 코드로 시퀀스를 생성.

 

시퀀스 삭제

DROP SEQUENCE book2_seq;로 seq를 삭제해준다.

 

데이터 추가

book_id를 시퀀스를 이용해 증가하도록 해주었고 book_name과 book_loc에는 'book1'과 '001-00001'을 넣어주었다.

테이블의 데이터를 보면 데이터가 하나 들어온 것을 확인해 볼 수 있다.

시퀀스가 제대로 작동하는지 하나 더 넣어 보았다.

book_id가 자동적으로 1이 증가해 2가 된 것을 확인 할 수 있다.

 

시퀀스 오류

시퀀스를 사용해 데이터를 넣었는데 1이 증가하지 않고 10,20이 증가하는 경우가 생길 수 있다.

이러한 일이 생기는 이유는 시퀀스에 cache옵선이 선택 되었기 때문이고  cache옵션을 사용하면 속도를 증가시키기 위해 sequence번호를 한번에 여러개씩 메모리에 올려놓고 작업을 하는데, 이 때 DB를 중지시키거나 전원이 꺼지면 메모리에 있던 번호가 삭제되어 다음에 실행했을 때, 메모리에 올라와 있던 번호 이후부터 시작되기 때문에 오류가 생긴다.

cache옵션이 20개씩 시퀀스 번호를 생성하도록 되어있따면 1, 21, 41로 증가할 수 있다.

 

해결법.

alter sequence message_id_seq nocache;

코드로 cache를 사용하지 않도록 설정을 변경한다.

 

 

데이터 수정

테이블 book2의 book_name이 'book1'인 데이터의 book_loc를 '005-00005'로 변경해준다.

 

데이터 삭제

DELETE FROM book2 WHERE book_id=2 코드를 통해

book2의 book_id가 2인 데이터를 삭제했다.

데이터 수정이나 삭제할 경우에는 조건을 정확히 명시해줘야한다. 만약 정확히 명시해주지 않는다면 다른 데이터들이 같이 없어질 수 있으니 주의..

 

 

데이터 검색

테이블 BOOK2에 있는 데이터들

위의 데이터들로부터 검색을 해보겠다.

실행결과

조건을 건 데이터 검색

실행결과

book_loc의 데이터들만 출력되었다.

 

 

조건 -WHERE

실행결과

book_id >3인 조건을 걸어 book_id가 3이상인 경우만 출력

3보다 크고 5이하인 데이터가 없으으로 아무것도 나오지 않았다.

 

조건 -BETWEEN AND

 

실행결과

2와 4 사이의 데이터들을 출력한다.

 

조건 -LIKE

LIKE 뒷부분에 조건을 걸어주어 데이터를 검색한다.

 

실행결과

book_id가 3인 데이터 출력.

'

book_loc의 맨 뒤에 3이 들어가는 데이터 출력.

book_name에 book으로 시작하는 데이터 출력.

 

 

데이터 정렬

데이터를 오름차순, 내림차순으로 정렬해준다.