CREATE USER ...
CREATE SEQUENCE ...
CRATE TABLE ...
CRATE VIEW ...
DROP TABLE ...
DROP USER ...
DROP SEQUENCE ...
DROP VIEW ...
ALTER USER ...
ALTER TABLE ...
ALTER VIEW ...
SEQUENCE 는 변경 불가
표 형식 TABLE
CREATE TABLE TEST(num NUMBER, name VARCHAR2(10));
INSERT INTO TEST(num, name) VALUES(1, 'kim');
INSERT INTO TEST(num, name) VALUES(2, 'lee');
INSERT INTO TEST(num, name) VALUES(3, 'park');
---------------------
NUM | NAME
---------------------
1 | kim
2 | lee
3 | park
---------------------
INSERT INRO TEST(num, name) VALUES(4, 'kim');
---------------------
NUM | NAME
---------------------
1 | kim
2 | lee
3 | park
4 | kim
---------------------
-> 이름의 경우 중복인 경우가 많기에 중복값이 들어가도 괜찮다
INSERT INTO TEST(num, name) VALUES(1, 'kim');
---------------------
NUM | NAME
---------------------
1 | kim
2 | lee
3 | park
4 | kim
1 | kim
---------------------
-> 구분하는 숫자의 경우 중복된 값이 있다면 데이터의 구분이 힘들기에 '기본키' 제약조건 필요
COLUMN LEVEL의 제약조건 부여
CREATE TABLE TEST(
num NUMBER CONSTRAINT test_num_pk PRIMARY KEY,
name VARCHAR2(10)
);
TABLE LEVEL의 제약조건 부여
CREATE TABLE TEST(
num NUMBER,
name VARCHAR2(10),
CONSTRAINT test_num_pk PRIMARY KEY(num)
);
컬럼 데이터 타입 수정
ATLER TABLE TEST MODIFY name VARCHAR2(20);
DESC TEST
NAME Null? Type
--------- --------- --------------
NUM NUMBER
NAME NOT NULL VARCHAR2(20)
테이블 삭제
DROP TABLE TEST;
TEST TABLE 생성
CREATE TABLE TEST(
num NUMBER CONSTRAINT test_num_pk PRIMARY KEY,
name VARCHAR2(20) CONSTRAINT test_name_nn NOT NULL,
addr VARCHAR2(20)
);
SEQUENCE 생성
한 번 만들어진 SEQUENCE는 수정 불가
CREATE SEQUENCE my_seq;
자동으로 숫자 값이 증가하는 지 확인
SELECT my_seq.NEXTVAL FROM DUAL;
10씩 증가하는 SEQUENCE 생성
CREATE SEQUENCE your_seq
INCREMENT BY 10;
10부터 시작해 10씩 증가하는 시퀀스 생성
CREATE SEQUENCE your_seq
START WITH 10 -> 시작값
INCREMENT BY 10; -> 증가값
만들어진 테이블 정보
USER_TABLE VIEW에서 조회
만들어진 제약조건
USER_CONSTRAINTS VIEW에서 조회
만들어진 시퀀스 정보
USER_SEQUENCES VIEW에서 조회
해당 테이블에서 사용할 시퀀스를 만들어서 어떤 컬럼에 숫자를 저장할 때 사용 시 "테이블_SEQ"
해당 SEQUENCE 생성
CREAT SEQUENCE TEST_seq;
숫자 자동 증가값 추가
INSERT INTO TEST VALUES(TEST_seq.NEXTVAL, 'kim', 'seoul');
INSERT INTO TEST VALUES(TEST_seq.NEXTVAL, 'lee', 'seoul');
INSERT INTO TEST VALUES(TEST_seq.NEXTVAL, 'park', 'pusan');
날짜 컬럼이 들어있는 테이블 생성
CREATE TABLE TEST(
num NUMBER CONSTRAINT test_num_pk PRIMARY KEY,
name VARCHAR2(20) CONSTRAINT test_name_nn NOT NULL,
createdAt DATE
);
TO_CHAR( )와 TO_DATE( )
TO_CHAR()
-------->
날짜 문자
(DATE) (CHAR)
<--------
TO_DATE()
날짜 컬럼에 날짜 형식의 데이터 삽입
INSERT INTO TEST(num, name, createdAt)
VALUES(test_seq.NEXTVAL, 'park', TO_DATE('19990108103015', 'YYYYMMDDHHMISS'));
TEST TABLE 조회
SELECT num, name,TO_CHAR(createdAt, 'YYYY.MM.DD AM HH:MI:SS') createdAt FROM TEST;
NUM NAME CREATEDAT
---- ------- ------------------------
4 kim 2025.05.28 오전 11:45:05
5 lee 2025.05.28 오전 11:45:39
6 park 2025.05.28 오전 11:46:06
7 oh 1999.11.23 오전 12:00:00
8 park 1999.01.08 오전 10:30:15
COMMIT 하기 전까지는 임시 반영 -> 트랜잭션이 관리된다는 증거
INSERT INTO 테이블명(컬럼1, 컬럼2, 컬럼3) VALUES(데이터1, 데이터2, 데이터3);
UPDATE 테이블명 SET 컬럼1 = 데이터1 WHERE 컬럼2 = 데이터2;
DELETE FROM 테이블명 WHERE 컬럼 = 데이터;

2개 이상의 동시 작업으로 인한 TABLE에 ROCK이 걸리는 경우, 해결은 COMMIT or ROLLBACK

학원의 컴퓨터는 동일 네트워크상에 있고 각 컴퓨터 간 가상의 IP 주소가 존재
포트가 열린 경우 외부로 나가서 해당 sqlplus 접속이 가능
본인의 ip주소 확인 = ipconfig
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : XXXX::XXXX:XXXX:XXXX:XXXXXX
IPv4 주소 . . . . . . . . . : XXX.XXX.XXX.XXX
서브넷 마스크 . . . . . . . : 255.255.255.255
기본 게이트웨이 . . . . . . : XXX.XXX.XXX.XXX
외부에서 안 쪽으로 들어오는 걸 '인바운드'
sqlplus 계정/비밀번호@아이피주소:포트번호/서비스명(XE)
ex) sqlplus scott/TIGER@192.168.0.107:1521/XE