1. SQL
SQL의 역사
- SEQUEL (IBM, 1974) 에서 유래 : 최초의 관계데이터베이스관리시스템(RDBMS)인 System R의 데이터베이스 언어로 제안되었다.
- 비절차적 데이터베이스 언어이며, 관계 해석을 위주로 관계 대수의 기능을 혼합한다.
- 미국 표준(ANSI) 및 국제 표준(ISO) 으로 채택되었다.
- SQL-86 (SQL 1) 최초의 표준
- SQL-92 또는 SQL/92
- SQL : 1999(SQL3) → 객체지향 기능 일부 추가
- SQL : 2003 → XML 지원
- SQL : 2006, SQL : 2008, SQL : 2011, SQL : 2016
- SQL : 2019 → 다차원 배열 기능 추가
- SQL : DDL, DML, DCL 기능을 모두 포함한다.
SQL 관련 용어
- Relation → 테이블(Table)
- Tuple → 행 (row)
- 속성 (Attribute) → 열(column)
한마디로 설명하자면, SQL은 질의만을 수행하는 것이 아니라 데이터베이스의 모든 작업을 통제하는 비절차적(Non-procedural) 언어이다.
2. 테이블(릴레이션)의 생성
CREATE TABLE <테이블 이름>
(
컬럼1 자료형1,
컬럼2 자료형2,
.
.
컬럼N 자료형N
); --한 줄로 써도 되고, 여러 줄로 써도 됨--
- SQL 키워드, 테이블명, 컬럼명은 대소문자를 가리지 않는다.
- 모든 명령은 세미콜론 (;)으로 종료해야 한다!
3. 자료형
표준 SQL 자료형 | 오라클 자료형 | 의미 |
CHARACTER(n) CHAR(n) |
CHAR(n) | 길이가 n인 고정길이 문자열 길이보다 짧게 입력된 값은 공백(' ') 문자로 채워짐 |
CHARACTER VARYING(n) CHAR VARYING(n) |
VARCHAR2(n) | 길이가 최대 n인 가변길이 문자열 입력된 길이만큼 저장됨 |
NATIONAL CHARACTER(n) NATIONAL CHAR(n) NCHAR(n) |
NCHAR(n) | 고정길이 유니코드 문자열 |
NATIONAL CHARACTER VARYING(n) NATIONAL CHAR VARYING(n) NCHAR VARYING(n) |
NVARCHAR2(n) | 길이가 최대 n인 가변길이 유니코드 문자열 한글을 쓸려면 이 자료형을 선언하면 됨 |
NUMERIC[(p,s)] DECIMAL[(p,s)] |
NUMERIC(p,s) | 정밀도 p, 스케일(소숫점 아래 자리수) s인 고정소수점 숫자 NUMBER(5,2)는 999.99 형태로 숫자값을 저장 예를 들어, 45.1은 NUMBERIC(3,1)로 전체 3자리 숫자를 가질 수 있으며, 소수점 이하 한자리까지의 정밀도를 가진다. |
INTEGER INT SMALLINT |
NUMBER(38) | 정수형, 최대 십진수 38자리 표현 |
FLOAT DOUBLE PRECISION(정밀도 24 이상 FLOAT) REAL(정밀도 23 이하 FLOAT) |
FLOAT(n) FLOAT(126) FLOAT(63) |
최대 이진수 n자리를 갖는 부동소수점 숫자 이진수 126자리 갖는 부동소수점 숫자 이진수 63 자리를 갖는 부동소수점 숫자 |
DATE | DATE | 날짜형 |
TIMESTAMP | TIMESTAMP | 날짜와 초 |
💡 char과 varchar의 차이점
예를 들어, name char(5);인 경우에는
a | ' ' | ' ' | ' ' | ' ' |
고정길이여서 나머지는 공백으로 채운다.
반면에, name varchar2(5);인 경우에는
최대 5글자까지 가능하며, 문자를 주어진 문자길이만큼만 넣을 수 있다.
즉, 나머지를 채우지 않는다!
4. 테이블 조작 명령어
1. 테이블 삭제
DROP TABLE <테이블 이름>;
2. 데이터 삽입
INSERT INTO <테이블 이름> values(컬럼값1,컬럼값2, ...,컬럼값N);
-- 문자일 경우 따옴표 꼭 하기!! --
3. 데이터 검색
SELECT * FROM <테이블 이름> [where <조건식>];
5. 실습
Q. 대학 데이터베이스에 해당하는 테이블들을 생성하라.
1. 과목 테이블
과목번호(cno) | 과목이름(cname) | 학점(credit) | 학과(dept) | 담당교수(professor) |
C123 | C프로그래밍 | 3 | 컴퓨터 | 김성국 |
C312 | 자료구조 | 3 | 컴퓨터 | 황수관 |
C324 | 화일구조 | 3 | 컴퓨터 | 이규찬 |
C413 | 데이터베이스 | 3 | 컴퓨터 | 이일로 |
E412 | 반도체 | 3 | 전자 | 홍봉진 |
CREATE TABLE COURSE(
cno char(4),
cname nvarchar2(20),
credit number(1),
dept nvarchar2(20),
professor nvarchar2(20)
);
2. 학생 테이블
학번(sno) | 이름(sname) | 학년(year) | 학과(dept) |
100 | 나수영 | 4 | 컴퓨터 |
200 | 이찬수 | 3 | NULL |
300 | 정기태 | 1 | 컴퓨터 |
400 | 송병길 | NULL | 컴퓨터 |
500 | 박종화 | 2 | 산공 |
CREATE TABLE STUDENT(
sno number(3),
sname nvarchar2(5),
year number(5),
dept nvarchar2(10)
);
3. 등록 테이블
학번(sno) | 과목번호(cno) | 성적(grade) |
100 | C413 | A |
100 | E412 | A |
200 | C123 | B |
300 | C312 | A |
300 | C324 | C |
300 | C413 | A |
400 | C312 | A |
400 | C324 | A |
400 | C413 | B |
CREATE TABLE ENROL(
sno number(20),
cno char(4),
grade char(1),
mideterm integer,
finterm integer
);
4. 생성된 테이블들에 예제의 데이터를 추가하라.
INSERT INTO COURSER VALUES(C413, 자료구조, 3, 컴퓨터, 이름);
5. 각 테이블에 저장된 투플들을 모두 출력하라.
SELECT * FROM STUDENT;
SELECT * FROM COURSE;
SELECT * FROM ENROL;
6. 테이블을 모두 삭제하라.
DROP TABLE STUDENT;
DROP TABLE COURSE;
DROP TABLE ENROL;
'Computer Science > DB' 카테고리의 다른 글
[데이터베이스] 5. SQL - DML, DCL이란? (4) | 2024.08.23 |
---|---|
[데이터베이스] 4. SQL - SELECT문을 사용하여 데이터 조회하기 (0) | 2024.08.20 |
[데이터베이스] 2. 데이터베이스 관리 시스템(DBMS) 이란? (0) | 2024.07.16 |
[데이터베이스] 1. 데이터베이스의 개념 및 구조 (1) | 2024.05.11 |