<오늘의 학습-데이터 관리>
1. 오라클 데이터베이스 설치
2. CREATE TABLE
3. INSERT
4. SELECT
5. UPDATE
6. DELETE
7. COMMIT과 ROLLBACK
8. 조건 연산자
9. 함수
1. 오라클 데이터베이스 설치
★ 비밀번호를 잘 기억할 것
▶ 오라클 홈페이지 로그인 : https://www.oracle.com/kr/
▶ 다운로드
- https://www.oracle.com/kr/database/technologies/xe-downloads.html
- https://www.oracle.com/database/sqldeveloper/technologies/download/
2. CREATE TABLE
▶ 테이블을 생성한다.
CREATE TABLE 테이블명(
속성명 데이터타입
);
- PRIMARY KEY : 테이블의 기본키로 사용할 속성. 중복 없이 하나만 가지고 있는 값. NOT NULL, UNIQUE 제약
- ex) EMPNO (사번)
- UNIQUE : 대체키로 사용할 속성. 테이블 내에서 얻은 유일한 값. 중복되면 안 되는 항목을 지정한다.
- FOREIGN KEY ~ REFERENCES ~ : 외래키로 사용할 속성 지정
- ON DELETE 옵션 : 튜플이 삭제되었을 때 기본 테이블에 취할 사항을 지정한다.
- ON UPDATE 옵션 : 참조 속성 값이 변경되었을 때 기본 테이블에 취할 사항을 지정한다.
- CONSTRAINT : 제약 조건의 이름을 지정한다.
- CHECK : 속성 값에 대한 제약 조건을 정의한다.
▷ '이름', '학번', '전공'으로 구성된 학생 테이블 생성
CREATE TABLE 학생
(이름 VARCHAR(15) NOT NULL
학번 CHAR(8)
전공 CHAR(5)
);
3. INSERT
▶ 테이블에 새로운 튜플을 삽입한다.
INSERT INTO 테이블명(속성명1, 속성명2, ...)
VALUES(데이터1, 데이터2, ...);
- 속성과 데이터는 개수와 데이터 유형이 일치해야한다.
- 모든 속성을 입력한다면 속성명을 생략하고 전체(*)로 나타낼 수 있다. 컬럼을 지정해주지 않는다면 전부 다 입력해야 한다.
- 하나의 데이터 값이라도 입력하지 않으면 삽입할 수 없다.
- SELECT문을 사용하여 다른 테이블의 검색 결과를 삽입할 수 있다.
INSERT INTO STUDENT(STU_NO, STU_NAME, STU_DEPT)
VALUES(20230612,'홍길동','컴퓨터정보');
- 컬럼명과 값을 매치해야한다.
▷ 값을 삽입해 보자.
INSERT INTO STUDENT(STRU_NO, STU_NAME, STU_DEPT, STU_GRADE, STU_GENDER)
VALUES(20231234, '홍길동', '기계', 1, NULL, 'F', NULL, NULL);
INSERT INTO STUDENT
VALUES(20231234, '홍길동', '기계', 1, NULL, 'F', NULL, NULL);
▶ 출력 결과

▷ <사원> 테이블에 있는 편집부서의 모든 튜플을 편집부원(이름,생일,주소) 테이블에 삽입하는 코드를 작성하시오.
INSERT INTO 편집부원(이름, 생일, 주소)
SELECT 이름, 생일, 주소
FROM 사원
WHERE 부서 = '편집';
4. SELECT
▶ 테이블에서 튜플을 검색한다. 테이블에 영향을 주지 않는다.
SELECT [DISTINCT] 속성명1, 속성명2, ... [AS 별칭]
FROM 테이블명, ...
WHERE 조건
GROUP BY 속성명1, 속성명2, ...
HAVING 그룹 조건
ORDER BY 속성명 [ASC | DESC]
- DISTINCT : 중복된 튜플이 있으면 그 중 첫 번째 하나만 검색한다.
- AS : 속성이나 연산의 이름을 다른 이름으로 표시하기 위해서 사용한다.
- FROM 절 : 검색할 데이터가 들어있는 테이블의 이름을 기술한다.
- WHERE절 : 검색할 조건을 기술한다.
- GROUP BY 절 : 특정 속성을 기준으로 그룹화하여 검색할 때 사용한다.
- HAVING 절 : GROUP BY 와 함께 사용되며, 그룹에 대한 조건을 지정한다.
- ORDER BY 절 : 데이터를 정렬하여 검색할 때 사용한다. 정렬의 기준이 되는 속성명을 기술한다.
- ASC : 오름차순 (1~10). 생략시 오름차순을 뜻한다.
- DESC : 내림차순 (10~1)
▶ 실습 내용
[SQL] SELECT 실습 (19일차)
1. STUDENT 테이블 조회 ▶ 코드 SELECT * FROM STUDENT; ▶ 출력 결과 2. STUDENT 테이블 레코드 개수 구하기 - 별칭 CNT ▶ 코드 SELECT COUNT(*) AS CNT FROM STUDENT; ▶ 출력 결과 3. STUDENT 테이블에서 학번 이름 학과
deliciouscode.tistory.com
5. UPDATE
▶ 테이블에서 튜플의 내용을 변경한다.
UPDATE 테이블명
SET 속성명 = 데이터, ...
[WHERE 조건];
▷ <사원> 테이블에 '홍길동'의 주소를 '수색동'으로 변경하라.
UPDATE 사원
SET 주소 = '수색동'
WHERE 이름 = '홍길동';
▶ 실습 내용
[SQL] UPDATE 실습 (19일차)
1. STUDENT 테이블에서 옥성우의 학과를 기계과로 변경 ▶ 코드 UPDATE STUDENT SET STU_DEPT = '기계' WHERE STU_NAME = '옥성우'; ▶ 출력 결과 2. STUDENT 테이블에서 키가 NULL인 레코드의 키 값을 175로 변경 ▶ 코
deliciouscode.tistory.com
6. DELETE
▶ 튜플을 삭제한다.
DELETE
FROM 테이블명
WHERE 조건;
- 모든 레코드를 삭제해도 테이블 구조는 남는다.
- 모든 레코드를 삭제할 때는 WHERE 절을 생략한다.
▶ 실습 내용
[SQL] DELETE 실습 (19일차)
※ DELETE를 작성할 때 조건을 먼저 작성하고, 마지막에 FROM 테이블을 작성하는 것을 습관화하면 좋다. (사고 방지) 1. EMP 테이블에서 이름이 SMITH인 테이블 삭제 ▶ 코드 DELETE FROM EMP WHERE ENAME = 'SMITH
deliciouscode.tistory.com
7. COMMIT 과 ROLLBACK
- COMMIT : 데이터베이스에 현재 상태를 저장한다. COMMIT 이후에는 ROLLBACK 할 수 없다.
- 트랜잭션이 수행한 내용을 데이터베이스에 반영하는 명령어이다.
- COMMIT을 하지 않아도 성공적으로 완료가 된다면 자동으로 COMMIT이 되고, 실패하면 자동으로 ROLLBACK 되도록 Auto Commit 기능을 설정할 수 있다.
- ROLLBACK : 변경되었으나 아직 COMMIT 되지 않은 내용들을 취소하고 데이터베이스를 이전 상태로 되돌리는 명령어이다. 마지막으로 COMMIT 된 데이터베이스 상태로 되돌린다.
8. 조건 연산자
▶ 테이블에서 튜플의 내용을 변경한다.
1) 비교 연산자
| = | <> | > | < | >= | <= |
| 같다 | 같지 않다 | 크다 | 작다 | 크거나 같다 | 작거나 같다 |
2) 논리 연산자 : NOT, AND, OR
3) NULL
- IS NULL : NULL 값이다.
- IS NOT NULL : NULL 값이 아니다.
4) LIKE 연산자 : 대표 문자를 이용해 지정된 속성의 값이 문자 패턴과 일치하는 튜플을 검색한다.
| % | _ | # |
| 모든 문자를 대표한다. | 문자 하나를 대표한다. | 숫자 하나를 대표한다. |
5) BETWEEN A AND B : A에서 B 사이의 값을 검색한다.
WHERE 생일 BETWEEN #01/01/69# AND #12/12/12#;
6) IN(조건1, 조건2, ..) : 조건1이거나 조건2인 값을 검색한다.
VALUES IN('남','여');
실습
▷ 예제) DEPT 테이블을 만들고 값을 넣어 출력
CREATE TABLE DEPT (
DEPTNO NUMBER(2),
DNAME VARCHAR2(14),
LOC VARCHAR2(13)
);
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
▷ DEPT 테이블의 전체 내용을 출력한 결과
SELECT *
FROM DEPT;

▷ DEPT 테이블의 DEPTNO, DNAME 만 출력
SELECT DEPTNO, DNAME
FROM DEPT;

심화 문제 풀이
[SQL] 심화 문제 (19일차)
1. STUDENT 테이블에서 기계과 이면서 키가 170 이상인 학생 조회 ▶ 코드 SELECT STU_NAME FROM STUDENT WHERE STU_DEPT IN ('기계') AND STU_HEIGHT >= 170; ▶ 출력 결과 2. STUDENT 테이블에서 반(STU_CLASS)가 A이거나 B인 학
deliciouscode.tistory.com
다음 학습
[SQL] SQL 함수(1/2) (19일차)
deliciouscode.tistory.com
'HRD_훈련 > ORACLE SQL' 카테고리의 다른 글
| [SQL] 시간 함수 (21일차) (0) | 2023.06.14 |
|---|---|
| [SQL] SELF, OUTER JOIN (21일차) (0) | 2023.06.14 |
| [SQL] INNER JOIN (20일차) (0) | 2023.06.13 |
| [SQL] SQL 함수 (2/2) (19일차) (0) | 2023.06.12 |
| [SQL] SQL 함수(1/2) (19일차) (0) | 2023.06.12 |