이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

11강 SQL 데이터 조작하기 #1 (INSERT/SELECT)

DDL: CREATE/ALTER/DROP
DML: INSERT/SELECT/UPDATE/DELETE - CRUD
DCL: GRANT/REVOKE

1. INSERT
INSERT INTO <TABLE> VALUES <VALUE LIST>

예:
INSERT INTO MEMBER VALUES(
‘newlec’,
‘111’,
‘홍길동’,
‘남성’,
‘1995-02-29’,
‘010-2345-6789’,
‘newlec@newlexture.com’,
‘2014-05-23’
)

⚠️ TABLE의 COL(flied, 속성)을 입력하지 않으면 모든 COL에 대한 값 입력이 필수가 됨
→ 원하는 필드만, 원하는 순서대로 입력하기

INSERT INTO MEMBER(ID, PWD) VALUES(
’newlec’,
‘111’
)

INSERT INTO MEMBER(PWD, ID) VALUES(
‘111’,
’newlec’
)
❓입력되지 않은 입력값은 NULL값(≠비어있음)이 됨

SELECT * FROM MEMBER;
→ MEMBER TABLE의 모든 COL 가져오기
⚠️ SQL에서 예약어는 대소문자를 가리지 않지만, 값은 대소문자를 가림

INSERT INTO MEMBER(ID, PWD) VALUES('newlec', '111');
SELECT * FROM MEMBER; --INSERT를 통해 입력된 값 불러오기

 

 

SELECT * FROM MEMBER — 모든 COL 조회

SELECT ID, NAME, PWD FROM MEMBER, — ID, NAME, PWD COL만 조회

⚠️ 값과 달리 COL, 예약어는 대소문자를 가리지 않음

❓ APPLICATION이 먼저 만들어지고, APPLICATION이 COL NAME을 미리 정해놓음 → DB TABLE COL NAME과는 다를 때, 쿼리에서 COL_NAME을 변경해서 반환시켜줄 수 있음(테이블 수정 필요X)

 

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

10강 SQL 쿼리 연습을 테이블 준비하기

 

 

CREATE TABLE NOTICE
(
	ID        NUMBER,
	TITLE     NVARCHAR2(100),
	WRITER_ID NVARCHAR2(50),
	CONTENT   CLOB,
	REGDATE   TIMESTAMP,
	HIT       NUMBER,
	FILES     NVARCHAR2(1000)
);

 

SQL 구문 작성 후,

  1. “블럭 처리” 후 ctrl + Enter
  2. 새로고침을 통해서 table 생성 확인
CREATE TABLE "COMMENT" --예약어로 인해 사용 불가 -> ""로 감싸면 사용 가능
(
	ID        NUMBER,
	CONTNET   NVARCHAR2(2000),
	REGDATE   TIMESTAMP,
	WRITER_ID NVARCHAR2(50),
	NOTICE_ID NUMBER
);

--테이블명이 부적합합니다
--TABLE명이 부적합하거나 예약어인 경우 등
CREATE TABLE ROLE
(
	ID          VARCHAR2(50),
	DISCRIPTION NVARCHAR2(500)
);
CREATE TABLE MEMBER_ROLE
(
    MEMBER_ID NVARCHAR2(50),
    ROLE_ID VARCHAR2(50)
);

 

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

09강 테이블 수정하기(ALTER TABLE)

 

 

CREATE TABLE

CREATE TABLE MEMBER
(
    ID       VARCHAR2(50),
    PWD      NVARCHAR2(50),
    NAME     NVARCHAR2(50),
    GENDER   NCHAR(2), --NCHAR(2): 4byte, CHAR(2 CHAR): 6byte
    AGE      NUMBER(3),
    BIRTHDAY CHAR(10),
    PHONE    CHAR(13),
    REGDATE  DATE
    
);

 

 

TABLE 수정 필요

1. ID VARCHAR2(50) → NVARCHAR(50) 변경
ALTER TABLE MEMBER MODIFY ID NVARCHAR2(50);
⚠️ TABLE에 DATA가 존재할 경우 DROP시, 유실되므로 DATA가 있을때에는 ALTER 사용
⚠️ DATA TYPE 변경 시, 기존 DATA를 해치지 않는 범위 내에서만 가능
2. AGE NUMBER 삭제
ALTER TABLE MEMBER DROP COLUMN AGE;
3. EMAIL VARCHAR2(200) 추가
ALTER TABLE MEMBER ADD EMAIL VARCHAR2(200);

CREATE TABLE MEMBER
(
    ID       VARCHAR2(50),
    PWD      NVARCHAR2(50),
    NAME     NVARCHAR2(50),
    GENDER   NCHAR(2), --NCHAR(2): 4byte, CHAR(2 CHAR): 6byte
    AGE      NUMBER(3),
    BIRTHDAY CHAR(10),
    PHONE    CHAR(13),
    REGDATE  DATE
    
);

DROP TABLE MEMBER;

ALTER TABLE MEMBER MODIFY ID NVARCHAR2(50);
ALTER TABLE MEMBER DROP COLUMN AGE;
ALTER TABLE MEMBER ADD EMAIL VARCHAR2(200);

	--MEMBER TABLE에서 직접 편집 가능하여 DDL 중 ALTER을 사용하는 일이 적음

 

⚠️ SQL 대소문자 구분
명령어 대소문자 구분X, 값 대소문자 구분O

⚠️ SQL 실행 시, 범위 블럭 설정 후 ctrl + Enter

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

08강 오라클 데이터 형식 #2 (숫자,날짜 형식)

 

1. Character 형식: ‘’

 

2. Numeric 형식
`NUMBER`: 정수, 실수를 한 번에 표현 가능
예: NUMBER(4): 최대 4자로 이루어진 숫자 표현 가능
`NUMBER(6, 2)`: 소수점 2자리를 포함하는 최대 6자리의 숫자(소수점 둘째 자리에서 반올림)
`NUMBER(6, -2)`: 소수점 -2자리에서 반올림하는 최대 6자리 숫자
`NUMBER`: NUMBER(38—최대값, *)로 인식
`NUMBER(*, 5)`:  NUMBER(38, 5)로 인식

CREATE TABLE MEMBER
(
    ID       VARCHAR2(50),
    PWD      NVARCHAR2(50),
    NAME     NVARCHAR2(50),
    GENDER   NCHAR(2), --NCHAR(2): 4byte, CHAR(2 CHAR): 6byte
    AGE      NUMBER(3),
    BIRTHDAY CHAR(10),
    PHONE    CHAR(13),
    REGDATE  DATE
    
);

DROP TABLE MEMBER;

 

3. Date 형식
DATE(yyyy-mm-dd): 시작 기준 4712 BC
TIMESTAMP(yyyy-mm-dd hh:mm:ss): NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값에 따름
TIMESTAMP WITH TIME ZONE: NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따름
TIMESTAMP WITH LOCAL TIME ZONE: NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름

 

4. LOB 형식
Character Type +
(deprecated) LONG: variable-length character strings containing up to 2Gbyte-1
CLOB: 대용량 텍스트 데이터 타입(최대 4Gbyte)
NCLOB: 대용량 텍스트 유니코드 데이터 타입(최대 4Gbyte)

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL

이 글은 뉴렉쳐 오라클 데이터베이스 SQL 강의 수강하며 정리한 글입니다.

 

 

07강 오라클 데이터 형식 #1 (문자 형식)

 

Oracle Built-in Data Type

1. Character 형식: ‘’

CHAR(50): 크기가 50byte인 CHAR

→ 고정 길이이므로 다 사용하지 않아도 빈칸으로 남아있게 됨

⚠️ 가변 길이 데이터의 경우 공간의 비효율성 발생

예: 생일, 전화번호 등

 

VARCHAR2(500): 크기가 최대 500개인 CHAR

→ 쓰지 않는 데이터 공간은 반환

예: ID

 

⚠️ 고정길이가 아니기때문에 데이터 검색 시, 처음부터 살펴봐야하는 불편함 발생

→ 검색 속도를 고려했을 때, 고정길이 Data는 CHAR, 가변길이 Data는 VARCHAR 사용이 바람직

 

NCHAR(n): 세계 각국의 언어를 사용하여 저장할 수 있음

→ ⚠️ size가 2~3byte로 1byte인 CHAR보다 용량이 큰 단점

영어, 숫자가 아닌 다른 나라 언어를 사용할 경우 사용

 

(⭐ CHAR(1 CHAR)이 아닌 NCHAR을 사용하는 게 좋은 이유 → 1 CHAR: 3byte, NCHAR: 2byte)

NVARCHAR(n): NCHAR(n) + VARCHAR(n)

⭐ 2byte: ‘ab’, 6 byte: ‘한글’

 

CHAR MAX SIZE

32767 bytes or characters if MAX_STRING_SIZE = EXTENDED

4000 bytes or characters if MAX_STRING_SIZE = STANDARD

 

데이터 특성에 맞게 CHAR type 변환

CREATE TABLE MEMBER
(
    ID       VARCHAR2(50),
    PWD      VARCHAR2(50),
    NAME     VARCHAR2(50),
    GENDER   VARCHAR2(50),
    AGE      NUMBER,
    BIRTHDAY VARCHAR2(50),
    PHONE    VARCHAR2(50),
    REGDATE  DATE
    
);
CREATE TABLE MEMBER
(
    ID       VARCHAR2(50),
    PWD      NVARCHAR2(50),
    NAME     NVARCHAR2(50),
    GENDER   NCHAR(2), --여성, 남성
		--CHAR(2 CHAR): 6byte, NCHAR(2): 4 byte
		--공간 절약을 위해 NCHAR 사용
    AGE      NUMBER,
    BIRTHDAY CHAR(10), --2000-01-02
    PHONE    CHAR(13), --010-1234-2345
    REGDATE  DATE
    
);

-- 주석 표시

 

2. Numeric 형식: 정수 또는 소수

3. Date 형식: Date(yyyy-mm-dd), TIMESTAMP(yyyy-mm-dd hh:mm:ss)

4. LOB 형식: Large Object 형식, 그래픽 이미지나 음성, 바이너리 데이터, 사이즈가 큰 텍스트 데이터를 다루는 데이터 타입

 

 

소스 코드

🔗 HJ0216/TIL/OracleSQL