728x90
- 관계형 데이터베이스의 장점 중 하나는 사용자들이 쉽게 사용할 수 있는 SQL (Structured Query Language) 언어를 제공한다는 것
- 사용자는 간단한 SQL문을 사용하여 DBMS에게 작업 요청 가능
- 기본적인 SQL문들은 표준화되어 있기 때문에 거의 DBMS 제품에 동일하게 적용
- SQL 언어는 비절차적 언어 (non_procedural language)
- 사용자는 자신이 원하는 것만을 명시하며, 원하는 것을 DBMS가 어떻게 처리할지는 명시할 필요가 없음
- SQL 언어는 자연어와 비슷한 문법체계를 가지고 있기 때문에 처음 보는 사람도 SQL문의 의미를 이해하는 것이 어렵지 않음
- 사용자들은 SQL이 다른 언어에 비해 배우기 쉬운 것으로 느낀다
- 사용자/개발자는 두가지 방식으로 SQL 이용할 수 있음

- 대화식 SQL이란 DBMS 회사에서 제공하는 유틸리티 프로그램을 이용하여 사용자가 직접 SQL문을 입력하고 실행결과를 확인하는 방식을 말함
- 내장 SQL은 SQL문이 C, JAVA 등의 다른 언어로 작성된 삭제 프로그램 안에 포함되어져서 사용하는 방식

<HTML>
<HEAD>
<TITLE> Dept </TITLE>
</HEAD>
<BODY>
<center><h2>부서정보 조회 (전체)</h2>
<%
String deptid, dname, dloc ;
Class.forName("org.git.mm.mysql.Driver");
con = DriverManager.getConnection(DB_URL, DB_USER,
DB_PASSWORD);
String query = "SELECT * FROM dept";
preparedstatement pstmt =
con.prepareStatement(query);
ResultSet result = pstmt.executeQuery();
while (result.next()){
deptid = result.getString(1);
dname = result.getString(2);
dloc = result.getString("loc");
%>
<tr>
<td><%=deptid%></td><td><%=dname%></td><td>
<%=dloc%></td>
</tr>
<%
pstmt.close();
%>
</table>
</BODY>
</HTML>
- 데이터베이스를 설계하기 위해서는 SQL 언어에 익숙할 필요가 있음
- 데이터베이스 설계의 목표 중 하나는 개발자나 사용자들의 SQL 질의를 효과적으로 처리해 줄 수 있는 구조로 데이터베이스를 구성하는 것
- 설계자는 사용자들이 어떤 SQL을 사용하게 될지를 사전에 파악하고 그에 맞추어 데이터베이스를 설계해야 함
- SQL 언어에는 다음과 같은 명령어가 있음
- SELECT
- INSERT
- UPDATE
- DELETE
- CREATE
- ALTER
- DROP
- DBMS는 SQL문을 실행할 때 대소문자를 구분하지 않음
- 테이블 이름, 컬럼의 이름에 대해서도 마찬가지
- 편의상 SQL 문법에 있는 예약어에 대해서는 대문자로, 테이블이나 컬럼 이름은 소문자로 기술하기로 함
- 대화식 SQL에서 많은 경우 SQL문이 끝났음을 알려주기 위해 ';'를 사용하므로 SQL문 끝에 ';'를 붙임
- SQL문은 한 줄에 이어서 기술해도 되고 여러 줄에 나누어 기술해도 됨
SELECT
- 테이블에 저장된 정보를 조회하는 데 사용
- 데이터베이스의 목적이 정보를 한 곳에 모아 관리하면서 다수가 공유하는 것임을 생각할 때 SQL 명령어 중에서 가장 빈번히 사용되는 명령어가 SELECT임을 을 쉽게 짐작 할 수 있음
- SELECT는 다양한 형태의 문법을 갖는다
# 사원에 대한 모든 정보를 보이시오.
SELECT *
FROM emp ;
# 곽희준 사원의 담당업무는 무엇인가?
SELECT job
FROM emp
WHERE ename = '곽희준' ;
# 급여가 300을 넘고 담당업무가 영업관리인 사원의 모든 정보를 보이시오.
SELECT *
FROM emp
WHERE salary > 300 AND job = '영업관리' ;
# 모든 사원의 이름과 급여를 보이되 사원 이름을 가나다순으로 보이시오.
SELECT ename, salary
FROM emp
ORDER BY ename ;
# 부서번호와 그 부서에 속한 사원들의 급여액 합계를 보이시오
SELECT deptid, SUM(salary)
FROM emp
GROUP BY deptid ;
INSERT
- 테이블에 튜플을 삽입할 때 사용함
- 기본적으로 한 번에 하나의 튜플을 삽입할 수 있음
INSERT INTO emp (empid, ename, deptid, hire_date, job, salary)
VALUES (106, '강윤호', 200, '2001-01-10', '연말정산', 400);
(사원 정보에 튜플 삽입, 위와 같이 모든 컬럼의 값에 대해 테이블에 있는 컬럼
순서대로 저장하는 경우는 다음과 같이 간단히 기술 가능)
INSERT INTO emp
VALUES (106, '강윤호', 200, '2001-01-10', '연말정산', 400);
-------------------------------------------------------------------
INSERT INTO emp (empid, ename, salary)
VALUES (107, '남진선', 500);
(이와 같이 일부 컬럼을 생략하고 튜플을 삽입하는 경우, 생략된 컬럼들의 값은
NULL로 저장됨)
UPDATE
- 테이블에 저장되어 있는 튜플의 값을 변경할 때 사용함
# 홍성길 사원의 부서번호를 400으로, 급여를 500으로 변경하시오.
UPDATE emp
SET deptid = 400, salary = 500
WHERE ename = '홍성길'
DELECT
- 테이블 에 있는 튜플을 삭제할 때 사용함
# 홍성길 사원의 정보를 사원 정보애서 삭제하시오
DELECT FROM emp
WHERE ename = '홍성길' ;
CREATE
- 테이블, 뷰, 사용자 등 데이터베이스 내의 객체들을 생성하는 데 사용됨
- 명령어이나 CREATE는 데이터베이스의 구조와 관련이 있기 때문에 데이터베이스 관리자나 설계자들이 사용하게 됨
- CREATE문은 표준화된 문법을 가지고 있지만 DBMS 제품마다 상이한 부분이 있으므로 사용할 제품에서 어떤 문법을 제공하는지 살펴보아야 함
# 다음은 dept, emp 테이블을 연결하여 뷰를 만드는 문장이다
CREATE VIEW new_emp
AS SELECT e.empid, e.ename, d.dname, e.salary
FROM emp e, dept d
WHERE e.deptid = d.deptid ;
ALTER
- CREATE로 생성한 데이터베이스 내의 객체를 변경할 때 사용함
# 다음 emp 테이블에 전화번호 컬럼을 추가하는 SQL문이다
ALTER TABLE emp
ADD tel varchar(30);
DROP
- CREATE의 반대 역할을 하는 명령어로 데이터베이스 내의 객체를 제거하는 역할
# 다음은 dept 테이블과 뷰 new_emp를 제거하는 문장
DROP TABLE dept ;
DROP VIEW new_emp ;
사용한 책 : 데이터베이스 설계 및 구축
'coding base > DataBase' 카테고리의 다른 글
[DB] 데이터베이스 설계 (0) | 2024.04.10 |
---|---|
[DB] 추상화(abstraction) & 모델링(modeling) (0) | 2024.04.10 |
[DB] 뷰 (View) (0) | 2024.04.10 |
[DB] 기본키와 외래키 (1) | 2024.04.10 |
[DB] 관계형 데이터베이스 (0) | 2024.04.05 |