이번 글에서는 SQL 활용해 간단한 문법 연습을 하겠습니다.

목차

테이블 생성 > 데이터 조회 > 데이터 삽입 > 제약 조건 > 조건절을 이용한 정보 조회 순서로 진행하겠습니다.

sun cloud

테이블 생성

먼저 자료를 저장해야하기 때문에 테이블을 생성하겠습니다.

테이블을 생성하는 SQL의 분류를 DDL이라고 하며 방식은 아래와 같습니다.

1
2
3
4
5
6
7
-- DDL : 테이블 생성
CREATE TABLE member(
    id VARCHAR2(100) PRIMARY KEY,
    password VARCHAR2(100) NOT NULL,
    name VARCHAR2(100) NOT NULL,
    address VARCHAR2(100)
)

코드를 보시면 전에 배운 데이터 타입과 제약 조건을 사용한 것을 알 수 있습니다.

저장할 데이터는 4종류로 모두 데이터 타입이 VARCHAR2(100)로 선언되었기에 문자형에 길이가 100까지 가능한 데이터가 저장 가능합니다. id는 PRIMARY KEY 이므로 유일값인 동시에 반드시 내용이 들어가야하고 password와 name은 NOT NULL이므로 중복은 가능하되 내용이 들어가야 합니다. 그리고 address는 제약조건 없이 저장 가능합니다.

sun cloud

테이블을 사용해 저장할 데이터의 종류와 조건을 명시해주었고, 이제 DML을 이용해 데이터를 저장하고 제어해보도록 하겠습니다.

INSERT

1
2
-- DML - 데이터 삽입 Create(정보 생성), 컬럼 정보를 다 기입할 경우 비워둬도 됨
INSERT INTO member(id, password, name, address) VALUES('java','a','아이유','오리');

데이터 삽입입니다. CRUD 중 Create와 같이 정보를 생성하며 아래와 같이 사용합니다. INSERT INTO + 테이블 이름(컬럼) + VALUES(데이터);

SQL에서는 대소문자를 구분하지 않지만, 가독성을 위해 예약어는 대문자, 저희가 사용하는 이름은 소문자로 작성하겠습니다.

데이터값은 별개로 대소문자를 구분합니다.


SELECT

1
2
3
4
-- DML - 데이터 조회 Read(정보를 읽는다)
SELECT * FROM member;
-- 특정 컬럼(id, name)만 조회
SELECT id, name FROM member;

데이터 조회입니다. CRUD에서는 Read 역할로 SELECTFROM이라는 예약어로 조회를 할 수 있습니다. * 별표 모양은 특정 컬럼이 아닌 모든 컬럼의 값을 선택하겠다는 뜻을 가집니다.


CONSTRAINT

제약 조건을 살펴보겠습니다.

1
INSERT INTO member(id, password, name, address) VALUES('java','b','아이요','죽전');

위 코드는 전에 이미 동일한 ID가 있기 때문에 PRIMARY KEYunique 조건을 충족하지 못해 에러가 발생합니다.


1
INSERT INTO member(password, name, address) VALUES('b','아이요','죽전');

이 코드는 ID를 생략했는데 PRIMARY KEYnot null 조건을 충족하지 못해 에러가 발생합니다.


1
INSERT INTO member(id, password, name) VALUES('jdbc','c','박보검');

이 코드는 마지막 요소인 address를 생략하였는데 별도의 제약 조건이 없었기에 null이 허용되어 정상 작동합니다.

sun cloud

WHERE

이제 조건절을 이용한 정보 조회를 해보겠습니다.

1
2
SELECT name, address FROM member WHERE id='java';
SELECT name, address FROM member WHERE id='java2';

새로운 예약어가 등장합니다. WHERE를 사용해 특정 조건을 걸 수 있습니다. idjava인 데이터와 java2인 데이터를 찾아 name, address를 조회하는 코드입니다.

idjava인 회원의 nameaddress를 조회하면 정상적으로 출력을 해줍니다. 그리고 java2는 존재하지 않지만 에라가 발생하는 것이 아닌 조회 결과에 아무런 출력을 해주지 않습니다.

이처럼 조회를 할 때에는 정보가 없더라도 에러가 발생하지 않고 빈 정보를 반환합니다.


1
SELECT id FROM member WHERE name='아이유' AND address='오리';

이번에는 조건이 추가되었는데 AND를 사용해서 name아이유이면서 address오리인 정보를 찾을 수 있습니다.


1
UPDATE member SET address='제주' WHERE id='jdbc';

정보를 수정해야 할 경우도 있을텐데 UPDATESET을 사용해 id가 jdbc인 회원의 주소를 제주로 업데이트했습니다.


1
DELETE FROM member WHERE id='jdbc';

삭제는 DELETE를 사용합니다. id가 jdbc인 회원 정보를 삭제하는 코드입니다.


그리고 간혹 실제 DB를 실행할 때 결과가 예상과 달리 제대로 출력되지 않을 수 있다고 합니다. 이런 경우 COMMIT 예약어를 입력해서 실제 DB에 작업 결과를 즉각적으로 반영할 수 있습니다. 설정에서 미리 자동 커밋 체크를 했지만 이렇게 작업 결과가 제대로 반영되지 않는 경우가 종종 있다고 합니다.

sun cloud

예제 코드

마지막으로 지금까지 살펴본 DML(CRUD: Create - insert, Read - select, Update - update, Delete - delete) 연습을 해보겠습니다.

1. 회원 아이디 angel, 패스워드 kind, 이름 이상순, 주소 애월읍 정보를 insert합니다.
INSERT INTO member VALUES('angel', 'kind', '이상순', '애월읍');


2. 회원 name이 이상순이고 address가 애월읍인 회원의 id와 password를 select합니다.

SELECT id, password FROM member WHERE name='이상순' AND address='애월읍';


3. 회원의 address가 애월읍인 회원의 address를 오리로 update

UPDATE member SET address='오리' WHERE address='애월읍';


4. 회원의 address가 오리인 회원의 id와 name을 select

SELECT id, name FROM member WHERE address='오리';


5. 회원의 id가 angel이고 password가 kind인 회원 정보를 삭제

DELETE FROM member WHERE id='angel' AND password='kind';


6. 회원 id가 angel인 회원의 name을 조회 select(삭제했으므로 조회하면 공백이 나타납니다)

SELECT name FROM member WHERE id='angel';


Database 카테고리 내 다른 글 보러가기

태그: ,

카테고리:

마지막 수정일:

댓글남기기