데이터베이스 SQL 구문 기초(CREATE, SELECT, UPDATE, DELETE)
ORACLE DATEBASE 특징
oracle XE: 기업형, export edition(무료)
무료버전은 파티셔닝 안됨.
설치는 바이너리 방식과 인스톨 방식이 있는데 인스톨 방식은 제어판 또는 운영체제의 영향을 받기 쉽다.
ORACLE DB 설치는 인스톨 방식.
jdk 파일 확인해보면 dll 파일 확장자있음(윈도우용 설치 파일?? 함부로 못 연다)
jdk 1.8 버전까지가 개발자가 다 열어볼 수 있는 버전
listen : 요청을 받아들이는 것. 오라클은 1521
알면 좋은 데이터 타입
null
없는 상태. 모르는 데이터(unknown data)
연산을 할 때 null이 있으면 null 값이 나옴
날짜형 데이터
연월일시분
YYYY-MM-DD HH24:MI:SS
현재시간 확인
mysql mariadb now
oracle sysdate
VARCHAR, VARCHAR2, CHAR
varchar2(20byte) : 20바이트 들어가는 문자열 데이터
그냥 varchar는 바이너리.
varchar의 var은 가변적을 의미
char은 고정.
DDL, DML, DCL + TCL
DDL : 데이터 정의어(CREATE, DROP, ALTER)
create 뒤에 객체(유저, 테이블)를 넣어 생성
DML : 데이터 조작어(insert(c), select(r), update(u), delete(d)) : crud set
DCL : 데이터 제어어(GRANT, REVOKE)
DCL을 세부적으로 보자면
1. 권한
2. 트랙잭션(일련의 처리 과정) -> TCL : 트랜잭션 제어어(COMMIT, ROLLBACK)
일련의 처리과정(select->insert->…->…의 과정의 흐름. 이 과정이 잘못되면 올 스탑)
정상적으로 수행되면 COMMIT, 잘못되면 다시 처음으로 ROLLBACK
DDL은 낙장불입. 이미 만든 건 ROLLBACK 불가
실습
만든 테스트 테이블
CREATE TABLE TEST(UUID VARCHAR2(20), PW
VARCHAR2(20);
INSERT INTO TEST VALUES('KK', '11);
INSERT INTO TEST VALUES('KK', NULL);
커밋 단축키 : F11(COMMIT)
스키마: 뼈대 구조를 보는 것.
SQL: 데이터 핸들링 목적
CRUD(CREATE, READ, UPDATE, DELETE)
Insert
INSERT INTO 테이블명 VALUES ('문자', '123');
-- 컬럼 자료형이 숫자라면 오라클 옵티마이저가 ' '안에 숫자 넣어도 숫자로 인식해서 숫자로 넣어준다.--
특정 컬럼에만 값을 넣고 싶을 때
INSERT INTO 테이블명(COLUMN1, COLUMN2)
VALUES ('컬럼1 값', '컬럼 2값');
가시성 있게 쿼리 짜는 법
INSERT
INTO 테이블명(COLUMN1, COLUMN2)
VALUES ('컬럼1 값', '컬럼 2값');
select
SELECT * 또는 (컬럼 1, 컬럼2...)
FROM 테이블명;
조건에 해당하는 컬럼 조회(where 사용)
SELECT UPW, UID
FROM 테이블명
WHERE UPW = '123' AND UID = 'KIM';
update
UPDATE 테이블명
SET UPW = '123', UID = 'KIM';
-- AND OR 들어가는 건 WHERE문만!!!--
조건에 해당하는 컬럼만 업데이트
UPDATE 테이블명
SET UPW = '12'
WHERE UPW = '123'AND UID = 'KIM';
배치 권한은 담당자에게 있음
delete
DELETE
FROM 테이블명
WHERE UPW = '123', UID = 'KIM';
회사에서 개발 서버를 따로 두는 이유.
실서버에선 개발자가 함부로 DB 명령어 입력 X
DBA만 가능.
DB 설계 과정에서 공백 데이터가 없어야 하는 컬럼의 경우 NOT NULL로 설정해야 한다.
날짜 데이터의 경우 날짜 값이 무조건 입력되어야 한다면 DEFAULT로 SYSDATE(MYSQL의 경우 NOW)