데이터베이스는 일반적으로 DB라는 약자로 통용된다. 데이터베이스는 저장장치 내에 정리되어 저장된 데이터의 집합이고, 이를 효율적으로 관리하는 소프트웨어를 데이터비이스 관리 시스템(DBMS)라고 부른다. DBMS를 사용하는 이유로는 생산성, 기능성, 신뢰성 등이 있다.
DBMS는 데이터베이스를 관리하는 소프트웨어이기 때문에 이를 이용하면 간접적으로 데이터베이스를 참조할 수 있고, 혹은 데이터를 추가하거나 삭제, 갱신할 수도 있다. 이 같은 DMBS와의 대화에 필요한 것이 바로 SQL이다. 그리고 SQL은 관계형 데이터베이스 관리 시스템(RDBMS)를 조작할 때 사용한다.
클라이언트 / 서버 모델
클리언트/서버 모델이란 사용자 조작에 따라 요청을 전달하는 '클라이언트'와 해당 요청을 받아 처리하는 '서버'로 소프트웨어를 나누고, 복수의 컴퓨터 상에서 하나의 모델을 구현하는 시스템이다.
웹 애플리케이션의 구조
웹 애플리케이션은 일반적으로 웹 서버와 데이터베이스 서버의 조합으로 구축된다.
이해의 편의를 위해 'member'라는 테이블명의 데이터가 다음과 같이 존재한다고 가정해보자.
no | name | sex | age |
---|---|---|---|
1 | 박상엽 | 남성 | 34 |
2 | 박은빈 | 여성 | 28 |
3 | 이형태 | null | 32 |
이 SQL명령은 특정 테이블의 모든 컬럼의 정보를 가져오게 된다. 테이블 명이 'member'라는 데이터베이스가 있다고 가정해보자. 'member'라는 테이블의 모든 정보를 가져오기 위해서는 다음과 같은 쿼리를 작성하면 된다.
SELECT * FROM member;
이 쿼리문을 작성하면 다음과 같은 정보가 나올 것이다.
no | name | sex | age |
---|---|---|---|
1 | 박상엽 | 남성 | 34 |
2 | 박은빈 | 여성 | 28 |
3 | 이형태 | null | 32 |
데이터를 선택할 때는 열이나 행을 한정한다. 먼저 열을 한정하는 방법을 알아보자
SELECT 열1,열2... FROM 테이블명
위 형식의 쿼리문을 통해 원하는 열의 정보를 가져올 수 있다.
SELECT no, name FROM member
위 쿼리문을 실행하면 다음과 같은 결과가 나올 것이다.
no | name |
---|---|
1 | 박상엽 |
2 | 박은빈 |
3 | 이형태 |
일반적으로 테이블의 열에 비해 행은 훨씬 더 많다. 이처럼 많은 행 속에서 필요한 데이터만 검색하기 위해서는 WHERE 구를 이용한다.
SELECT 열 FROM 테이블명 WHERE 조건식
그렇다면 위 데이터에서 '박상엽'이란 사람의 정보만 보고 싶다면 다음과 같은 쿼리문을 작성할 수 있다.
SELECT * FROM member WHERE name = '박상엽'
패턴 매칭으로 검색하기 위해서는 'LIKE'라는 술어를 사용하여 문자열의 일부분을 비교하는 부분검색을 할 수 있다.
위 데이터에서 성이 박씨인 사람을 모든 정보를 검색하고 싶다고 가정해보자. 그렇다면 다음과 같은 쿼리문을 통해 검색할 수 있을 것이다.
SELECT * FROM member WHERE name LIKE '박%'
위 쿼리문을 통해 다음과 같은 정보가 출력될 것이다.
no | name | sex | age |
---|---|---|---|
1 | 박상엽 | 남성 | 34 |
2 | 박은빈 | 여성 | 28 |
참고 : SQL 첫걸음