티스토리 뷰
CH1
오라클 명령어 (CREATE, INSERT 등) :
대/소문자를 구분하지 않음.
* 오라클에서는 테이블 이름과 컬럼 이름을 영문 대문자로 변환함
sysdate : 명령어 수행 시점의 시간을 저장
VARCHAR2 : 데이터 타입
제약 조건
- NOT NULL : 데이터를 반드시 입력
- UNIQUE : 중복되지 않는 데이터만 입력 가능
- PRIMARY KEY(고유키) : 테이블에서 유일한 데이터를 찾을 수 있는
칼럼 데이터가 반드시 존재해야하고, 중복되지 않아야 함
- FOREIGN KEY(외래 키) : 테이블 간의 참조 데이터 무결성을 위한 제약 조건
반드시 참조하는 테이블이 먼저 생성되어야 하며, 참조키가 참조 테이블의 기본키로 설정되어야 한다.
CHECK : 조건에 부합하는 데이터만 입력이 가능하도록 설정하는 제약 조건
ALTER TABLE : 테이블 정보를 변경할 때 사용
DESC : DESCRIBE (테이블 요약)
/*
오라클에서 여러 줄의 주석을 처리할 때
*/
-- 오라클에서 한 줄 주석을 처리할 때
CREATE TABLE EX1 (
col1 NUMBER,
col2 VARCHAR2(100),
col3 DATE
);
/*
오라클 명령어(CREATE, INSERT 등)은
대/소문자를 구분하지 않음.
오라클에서는 테이블 이름과 컬럼 이름을
영문 대문자로 변환함
*/
INSERT INTO EX1 VALUES(
100,
'HELLO',
sysdate
);
-- sysdate : 명령어 수행 시점의 시간을 저장
INSERT INTO EX1 VALUES(
'abcd',
200,
sysdate
);
-- 첫 번째 컬럼의 데이터 타입(NUMBER)과
-- 등록하려는 데이터의 타입이 다르기 때문에 에러 발생
-- VARCHAR2 데이터타입
CREATE TABLE EX2(
col1 varchar2(3), --문자열 3 바이트 까지
col2 VARCHAR2(3 byte), --문자열 3 바이트 까지
col3 VARCHAR2(3 char) --문자열 3 글자 까지
);
INSERT INTO EX2 VALUES(
'abc',
'abc',
'abc'
);
INSERT INTO EX2 VALUES(
'abc',
'abc',
'abcd'
);
INSERT INTO EX2 VALUES(
'한',
'글',
'한글날'
);
-- EX2 테이블에 COL1 - 'abc' , COL2 - 'def' 데이터를 등록
INSERT INTO EX2 (COL1,COL2)
VALUES('abc','def');
commit;
/*
* 제약 조건
- NOT NULL : 데이터를 반드시 입력
- UNIQUE : 중복되지 않는 데이터만 입력 가능
- PRIMARY KEY(고유 키) :
테이블에서 유일한 데이터를 찾을 수 있는 칼럼
데이터가 반드시 존재해야하고, 중복되지 않아야 함
- FOREIGN KEY(외래 키) :
테이블 간의 참조 데이터 무결성을 위한 제약 조건
반드시 참조하는 테이블이 먼저 생성되어야 하며,
참조키가 참조 테이블의 기본키로 설정되어야 한다.
*/
CREATE TABLE EX3 (
COL1 VARCHAR(10) NOT NULL,
COL2 VARCHAR(10) UNIQUE
);
INSERT INTO EX3
VALUES ('AA','BB');
INSERT INTO EX3
VALUES ('aa','BB');
-- COL2는 UNIQUE 해야 한다는 제약 조건에 위배
INSERT INTO EX3(col2)
VALUES ('CC');
-- COL1은 NOT NULL 제약 조건 위배
CREATE TABLE EX4(
COL1 VARCHAR2(10) PRIMARY KEY, -- 일반적으로 인덱스 용도로 사용, 그래서 중복 안됨
COL2 VARCHAR2(10)
);
INSERT INTO EX4
VALUES ('AB','CD');
INSERT INTO EX4
VALUES ('AB','EF'); -- UNIQUE 조건에 위배
INSERT INTO EX4(COL2)
VALUES ('ABC');
CREATE TABLE EX5(
COL1 VARCHAR2(10),
COL2 VARCHAR2(10),
CONSTRAINTS PK_EX5 PRIMARY KEY(COL1)
);
CREATE TABLE EX6(
COL1 VARCHAR2(10),
CONSTRAINTS UN_EX6 UNIQUE (COL1)
);
CREATE TABLE EX7(
AGE NUMBER CHECK (AGE >= 0), -- 음수값이 들어가면 Error
GENDER VARCHAR2(10),
CONSTRAINTS CHECK_GENDER
CHECK (GENDER IN ('남','여')) -- CHECK 제약조건
);
-- CHECK : 조건에 부합하는 데이터만 입력이 가능하도록
-- 설정하는 제약 조건
INSERT INTO EX7
VALUES (12,'남자'); -- '남'만 가능한데 '남자'라고 써서 조건 위배
-- ALTER TABLE : 테이블 정보를 변경할 때 사용
-- 제약 조건 추가
ALTER TABLE EX7 ADD CONSTRAINT UN_EX7 UNIQUE (AGE);
CREATE TABLE EX8(
COL1 VARCHAR2(10),
CONSTRAINTS NN_EX8
CHECK(COL1 IS NOT NULL)
);
CREATE TABLE EX9(
COL1 NUMBER,
COL2 VARCHAR2(10)
);
-- 테이블 컬럼 이름 변경
ALTER TABLE EX9 RENAME COLUM COL1 TO AGE;
DESC EX9;
-- DESC : DESCRIBE (테이블 요약)
-- 테이블 컬럼 데이터 타입 변경
ALTER TABLE EX9 MODIFY COL2 NUMBER;
DESC EX9;
-- 테이블 컬럼 추가
ALTER TABLE EX9 ADD COL3 DATE;
DESC EX9;
-- 테이블 컬럼 삭제
ALTER TABLE EX9 DROP COLUMN COL3;
DESC EX9;
-- DB에 변경 내용 저장
COMMIT;
CH2
DELETE , TRUNCATE , DROP
DELETE FROM 테이블명; -- 행 안의 데이터만 삭제, 행은 존재
DELETE FROM 테이블명
WHERE 조건명;
TRUNCATE TABLE 테이블명; -- 행 안의 데이터 + 행까지 삭제, 테이블은 남아있음
DROP TABLE 테이블명; -- 테이블 자체가 삭제
* 만약 제한조건이 있는 테이블을 삭제할 때
DROP 테이블명 CASCADE CONSTRAINTS;
UPDATE 테이블명
SET
칼럼명 = 변경할 값,
칼럼명2 = 변경할 값
..
WHERE 조건;
예시 :
-- 이름이 '진'인 사람의 이메일을 'test@gmail.com'으로 변경
UPDATE EX_HW1
SET
EMAIL = 'test@gmail.com'
WHERE NAME = '진';
SEQUENCE : 자동으로 생성되는 유일한 정수를 반환하는 데이터베이스 객체.
주로 PRIMARY KEY 값을 자동으로 생성할 때 사용
DUAL : 임시 테이블 SELECT
SELECT 시퀀스명.NEXTVAL FROM 테이블명;
-- 이 쿼리는 시퀀스에서 다음 값을 가져온다.
NEXTVAL 함수는 시퀀스의 다음 값을 반환한다.
SELECT 시퀀스명.CURRVAL FROM 테이블명;
-- 이 쿼리는 마지막으로 검색된 시퀀스 값을 가져온다.
'CURRVAL' 함수는 마지막으로 반환된 시퀀스 값을 반환한다.
INCREMENT BY @ : @ 만큼 증가한다
MINVALUE : 최솟값 설정
MAXVALUE : 최댓값 설정, 넘으면 ERROR
CYCLE : 순환구조, 끝나지 않음
-- 테이블 컬럼 데이터의 기본값 설정
CREATE TABLE EX_ORDER(
ORDER_NO NUMBER DEFAULT 0,
ORDER_DATE DATE DEFAULT SYSDATE
);
INSERT INTO EX_ORDER
VALUES (1, '2024-02-28');
INSERT INTO EX_ORDER (ORDER_NO)
VALUES (11);
INSERT INTO EX_ORDER (ORDER_DATE)
VALUES (SYSDATE);
-- SYSDATE : 시스템에 설정된 현재 시간을 의미
-- DELETE , TRUNCATE , DROP
DELETE FROM EX_ORDER; -- 행 안의 데이터만 삭제, 행은 존재
TRUNCATE TABLE EX_ORDER; -- 행 안의 데이터 + 행까지 삭제, 테이블은 남아있음
DROP TABLE EX_ORDER; -- 테이블 자체가 삭제
/*
- SEQUENCE :
자동으로 생성되는 유일한 정수를 반환하는 데이터베이스 객체
주로 PRIMARY KEY 값을 자동으로 생성할 때 사용
*/
CREATE SEQUENCE SEQ1;
SELECT SEQ1.NEXTVAL FROM DUAL; -- DUAL : 임시 테이블
-- SEQ1.NEXTVAL 많이 사용됨 !
SELECT SEQ1.CURRVAL FROM DUAL;
-- 현재 값을 출력해줌
CREATE SEQUENCE SEQ2 INCREMENT BY 2;
-- INCREMENT BY @ : @만큼 증가
SELECT SEQ2.NEXTVAL FROM DUAL;
CREATE SEQUENCE SEQ3
INCREMENT BY 2
MINVALUE 0;
-- MINVALUE : 최솟값 설정
SELECT SEQ3.NEXTVAL FROM DUAL;
CREATE SEQUENCE SEQ4
INCREMENT BY 2
START WITH 0
MAXVALUE 10
MINVALUE -10;
-- MAXVALUE : 최댓값 설정, 넘으면 Error
SELECT SEQ4.NEXTVAL FROM DUAL;
CREATE SEQUENCE SEQ5
INCREMENT BY 2
START WITH 0
MAXVALUE 10
MINVALUE -10
CYCLE
-- CYCLE : 순환구조, 끝나지 않음
NOCACHE;
SELECT SEQ5.NEXTVAL FROM DUAL;
CREATE SEQUENCE SEQ6
INCREMENT BY 2
START WITH 3
NOCACHE;
SELECT SEQ6.NEXTVAL FROM DUAL;
CREATE SEQUENCE SEQ_PK;
CREATE TABLE EX10(
COL1 NUMBER PRIMARY KEY,
COL2 VARCHAR2(10)
);
INSERT INTO EX10
VALUES (SEQ_PK.NEXTVAL, 'A');
CH3
SELECT
SELECT * FROM 테이블명;
: 전체 데이터 검색
SELECT col1, col2 .. FROM 테이블명;
: 특정 칼럼 데이터 검색
SELECT * FROM 테이블명
WHERE 조건;
: 조건에 부합하는 모든 데이터 검색
SELECT col1,col2 .. FROM 테이블명
WHERE 조건;
: 조건에 부합하는 특정 칼럼 데이터 검색
예시)
SELECT * FROM EX_MEMBER
WHERE ID = 'test';
-- 아이디가 test인 사람의 모든 데이터 검색
SELECT PW FROM EX_MEMBER
WHERE ID = 'test';
-- 아이디가 test인 사람의 PW 검색
UPDATE
UPDATE 테이블명
SET
칼럼 1 = 변경할 값,
칼럼 2 = 변경할 값 ...
WHERE 조건;
예시)
UPDATE EX_MEMBER
SET EMAIL = 'UPDATE@TEST.COM'
WHERE ID = 'guest';
-- ID 가 guest인 사람의 이메일 수정
CREATE & INSERT
CREATE TABLE 테이블명 (
col1 타입,
col2 타입,
.
.
);
INSERT INTO 테이블명
VALUES( 데이터1, 데이터2 . . );
예시)
CREATE TABLE EX1 (
col1 NUMBER,
col2 VARCHAR2(100),
col3 DATE
);
-- 테이블명 EX1인 테이블에 첫번째 컬럼(col1)은 숫자타입(NUMBER), 두번째 컬럼(col2)은 문자열 100바이트(VARCHAR2(100)) , 세번째 컬럼은 날짜형(DATE) 으로 생성
INSERT INTO EX1
VALUES( 100, 'HELLO', sysdate );
-- EX1 테이블에 첫번째 칼럼엔 100, 두번째 칼럼엔 문자열을 세번째 칼럼엔 현재 시간이 기록되는 sysdate를 등록
등록하려는 데이터는 생성할 때 만든 각 컬럼의 데이터 타입과 일치해야 함
-- SELECT, INSERT , UPDATE , DELETE
CREATE TABLE EX_MEMBER(
ID VARCHAR2(20) PRIMARY KEY ,
PW VARCHAR2(20),
EMAIL VARCHAR2(100)
);
--EX_MEMBER 테이블에 데이터 3개 추가
INSERT INTO EX_MEMBER
VALUES('admin', 'admin1234','admin1234@test.com');
INSERT INTO EX_MEMBER
VALUES('guest', 'guest1234','guest1234@test.com');
INSERT INTO EX_MEMBER(ID,PW)
VALUES('test', 'test1234');
-- 전체 데이터 검색
SELECT * FROM EX_MEMBER;
-- ID, PW 열 데이터 검색
SELECT ID, PW FROM EX_MEMBER;
-- 특정 컬럼의 데이터 검색 쿼리
-- ID가 'test'인 사람의 모든 데이터 검색
SELECT * FROM EX_MEMBER
WHERE ID = 'test';
SELECT PW FROM EX_MEMBER
WHERE ID = 'test';
-- ID가 guest인 사람의 이메일 수정
UPDATE EX_MEMBER
SET EMAIL = 'UPDATE@TEST.COM'
WHERE ID ='guest';
-- ID가 guest인 사람의 데이터 삭제
DELETE EX_MEMBER
WHERE ID = 'guest';
CREATE TABLE EX_STUDENT(
ID NUMBER PRIMARY KEY,
NAME VARCHAR2(20) NOT NULL,
BIRTHDAY TIMESTAMP DEFAULT SYSDATE,
EMAIL VARCHAR2(100)
);
-- TIMESTAMP : 시간 표현이 가능한 날짜 타입
INSERT INTO EX_STUDENT
VALUES('1','hongjian','1998-07-21','jian@test.com');
INSERT INTO EX_STUDENT(ID,NAME)
VALUES('2','Bbb');
INSERT INTO EX_STUDENT
VALUES('3','hOji','1998-11-28','jIHO@test.com');
INSERT INTO EX_STUDENT (ID,NAME,BIRTHDAY)
VALUES('4','aaa','2000-01-01');
SELECT ID,NAME FROM EX_STUDENT
ORDER BY ID DESC;
-- DESC : 내림차순
-- BIRTHDAY 기준으로 오름차순된
-- EX_STUDENT 테이블의 모든 데이터 검색
SELECT * FROM EX_STUDENT ORDER BY BIRTHDAY;
SELECT * FROM EX_STUDENT ORDER BY NAME;
-- NAME 의 데이터 중 A로 시작하는 문자열을 갖는
-- 모든 데이터를 검색
SELECT * FROM EX_STUDENT
WHERE NAME LIKE 'h%'; -- h로 시작하는
SELECT * FROM EX_STUDENT
WHERE NAME LIKE '%b'; -- B로 끝나는
-- NAME 의 데이터 중 b를 포함하는 문자열을 갖는
-- 모든 데이터를 검색
SELECT * FROM EX_STUDENT
WHERE NAME LIKE '%j%';
-- 2000년 1월 1일 이후에 출생한 학생들의 모든 데이터를 검색
SELECT * FROM EX_STUDENT
WHERE BIRTHDAY >= '2000-01-01';
-- NAME 값이 h로 시작하고,
-- EMAIL의 값이 NULL이 아닌 모든 데이터 검색
SELECT * FROM EX_STUDENT
WHERE NAME LIKE 'h%' AND
EMAIL IS NOT NULL;
-- NAME 의 값이 A로 시작하거나, B로 시작하는
-- 모든 데이터 검색
SELECT * FROM EX_STUDENT
WHERE NAME LIKE 'A%' OR NAME LIKE 'B%';
COMMIT;
'백엔드 교육과정 > 2월' 카테고리의 다른 글
2024.02.29_SQL_ch 5,6 / JDBC (0) | 2024.02.29 |
---|---|
2024.02.28_연락처 프로그램 ver.0.5 (0) | 2024.02.28 |
2024.02.27_연락처 프로그램 (Ver. 0.5) , GUI09 ~14 (0) | 2024.02.27 |
2024.02.26_GUI_Window Builder 설치 , 사용(GUI01~GUI08) (0) | 2024.02.26 |
2024.02.23_File 클래스(생성,삭제) , 연락처 ver 0.3 , 복습시 사용 사이트 추천 (0) | 2024.02.23 |