Oracle SQL Developer 프로그램으로 SQL을 배워보았다.
* 데이터베이스 DB?
- 창고 안에 데이터를 넣어두고 사용자의 입맛대로 활용(CRUD)할 수 있도록 저장소 역할
- CRUD 중 Read == select, 검색 방법이 다양함
- DBMS : Database Management System (DB 관리 시스템_담당자)
* SQL?
- Structured Query Language
- 구조적인 질의 언어
먼저,
쿼리문을 작성하기 위해 데이터베이스 파일을 생성해주기
저 버튼을 누르거나 파일 - 새로 만들기
파일명과, 저장할 디렉토리를 설정해주기
-- Query문 (질의어) : 문장식으로 데이터를 가져옴, 가공해서 원하는 데이터를 시각화(안드로이드, 웹)
SELECT * FROM employees;
employees 테이블 안의 모든것(*)을 검색하라는 뜻
-- 주석문
-- 한줄 주석문
/*
범위주석문
*/
-- table : row(행), column(열) / 데이터를 삽입하기 위해 정형화된 틀
형식 :
CREAT TABLE 테이블명(
컬럼명1 자료형,
컬럼명2 자료형,
: 여러개 가능
);
-- SQL 데이터 유형
Java와 비교해보기
Java | DB |
String | VARCHAR2, CHAR, LONG (MySQL : VARCHAR) |
int | INTEGER, NUMBER |
double | NUMBER |
Date | DATE |
- VARCHAR2, NUMBER, DATE 많이 씀
-- 문자형
-- VARCHAR2
-- 테이블 생성
CREATE TABLE TB_VARCHAR (
COL1 VARCHAR2(10 BYTE),
COL2 VARCHAR2(10),
COL3 VARCHAR2(20)
);
- 용량을 정해놓아야 함 (BYTE는 생략 가능)
-- 데이터 삽입
INSERT INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES('ABC', 'ABC', 'ABC');
INSERT INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES('가나다', '가나다', '가나다');
-- 데이터 검색
SELECT * FROM TB_VARCHAR;
- 데이터를 삽입한 해당 테이블을 검색하면
- 위와 같은 값이 출력된다.
SELECT COL1, COL2, COL3, lengthb(COL1), lengthb(COL2), lengthb(COL3)
FROM TB_VARCHAR;
- 칼럼의 바이트를 알고 싶을 때 검색할 수 있다.
- 영문 1바이트, 한글 3바이트라는 것을 알 수 있다.
- 컬럼마다 지정한 바이트에 맞춰서 삽입해야 한다.
INSERT INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES('가나다', '가나다', '가나다라');
- COL3 컬럼은 20BYTE 이기 때문에 '가나다라'를 입력할 수 있지만
INSERT INTO TB_VARCHAR(COL1, COL2, COL3)
VALUES('가나다라', '가나다라', '가나다라');
- COL1, COL2 컬럼은 10BYTE라서 오류가 뜬다.
- "HR"."TB_VARCHAR"."COL1" 열에 대한 값이 너무 큼(실제: 12, 최대값: 10)
-- LONG
- 최대 2GB까지 저장 가능
- TABLE당 1개의 컬럼만 사용 가능
CREATE TABLE TB_LONG(
COL LONG
-- COL1 LONG (사용 불가 - 에러)
);
INSERT INTO TB_LONG(COL)
VALUES('ABCDE');
SELECT * FROM TB_LONG;
- 예시
CREATE TABLE BOOK( -- 책 내용 넣는다고 가정
TITLE VARCHAR2(200), -- 책 제목
CONTENT LONG -- 책 내용
);
-- 숫자형
-- INTEGER
CREATE TABLE TB_INTEGER(
COL1 INTEGER,
COL2 INTEGER
);
-- 기본
INSERT INTO TB_INTEGER(COL1, COL2)
VALUES(123, 456);
-- 문자열로 넣기
INSERT INTO TB_INTEGER(COL1, COL2)
VALUES('123', '456');
-- 소수점
INSERT INTO TB_INTEGER(COL1, COL2)
VALUES(123.1, 456);
-- 검색
SELECT * FROM TB_INTEGER;
- 숫자형이 아닌 문자열을 넣어도 DB는 받아들인다.
- 소수점은 잘려서 출력된다. (강제형 변환과 비슷)
-- NUMBER 정수, 실수
CREATE TABLE TB_NUMBER(
COL1 NUMBER, -- 무조건 수용
COL2 NUMBER(5), -- 정수 5자리(소수점 반올림)
COL3 NUMBER(5, 2), -- 5자리, 소수점 2째자리까지(반올림)
COL4 NUMBER(*, 2) -- 모든자리 수용, 소수점 2째자리까지(반올림)
);
INSERT INTO TB_NUMBER(COL1, COL2, COL3, COL4)
VALUES(1234.5678, 12345.67, 123.456, 12345.6789);
SELECT * FROM TB_NUMBER;
- 설정해준대로 맞춰서 반올림됨
- NUMBER(5, 2)라면 소수점까지 5자리로 맞춰짐 (정수 5자리가 아님)
-- 날짜
-- DATE (연도, 월, 일, 시, 분, 초)
CREATE TABLE TB_DATE(
COL1 DATE,
COL2 DATE
);
-- SYSDATE == 현재 날짜와 시간
INSERT INTO TB_DATE(COL1, COL2)
VALUES(SYSDATE, SYSDATE-1); -- 오늘 날짜, 오늘날짜-하루
SELECT * FROM TB_DATE;
-- String date = "2021-12-31 11:50:10" 외부 데이터 넣기
INSERT INTO TB_DATE(COL1, COL2)
VALUES(SYSDATE, '2021-12-31 11:50:10'); -- X (시간 넣으면 안돌아감)
INSERT INTO TB_DATE(COL1, COL2)
VALUES(SYSDATE, '2021-12-31'); -- O 시간을 빼고 넣으면 들어감 (시간은 00:00:00)
INSERT INTO TB_DATE(COL1, COL2)
VALUES(SYSDATE, '2021/12/31'); -- O /넣어도 들어감
-- 형식 지정해주기
INSERT INTO TB_DATE(COL1, COL2)
VALUES(SYSDATE, TO_DATE('2021-12-31 11:50:10', 'YYYY-MM-DD HH:MI:SS')); -- 형식을 입력해줌
COMMIT; -- 입력한 것을 적용(이클립스는 오토커밋)
- TO_DATE('넣고자 하는 문자열', '형식') : DATE 형태로 바꿔서 넣으라는 함수
- SQL Developer는 시간이 나오지 않는다.
'Coding Note > SQL' 카테고리의 다른 글
SQL DUAL 테이블 / SELECT문 WHERE절 (비교연산자, NULL, IS NULL, IS NOT NULL, AND, OR, IN, LIKE) (0) | 2021.12.26 |
---|---|
SQL SELECT 기초 예제 (DESC / ALIAS / 연산 / NVL / DISTINCT) (0) | 2021.12.26 |
SQL TABLE DATA 처리 / 가장 많이 쓰이는 SELECT 알아보기 (ALIAS, DISTINCT, DESC) (0) | 2021.12.26 |
Eclipse 이클립스에서 DB 연동하는 법 (0) | 2021.12.21 |
오라클 / SQL Developer 다운로드 및 초기 설정 (0) | 2021.12.21 |
댓글