
-- DML
-- INSERT / SELECT / UPDATE / DELETE
-- INSERT 명령 규칙
-- INSERT INTO <테이블> VALUES <값목록>
-- 모든 필드 값을 입력하기
-- INSERT INTO MEMBER VALUES('newlec', '111', '홍길동', '남성', '1995-02-29', '010-2365-8956', 'newlec@newlecture.com', '2014-05-23');
-- 원하는 필드만, 원하는 순서대로 입력하기
INSERT INTO MEMBER(ID, PWD) VALUES ('newlec', '111');
INSERT INTO MEMBER(PWD, ID) VALUES ('111', 'newlec');
-- SELECT * FROM MEMBER;
⇒ 안넣는 값들은 null이 됨
⇒ 비어있는 값이 아닌 값 그 자체로 NULL이 들어감
INSERT INTO MEMBER (ID, PWD) VALUES ('newlec', '1234');
INSERT INTO MEMBER (ID, PWD) VALUES ('dragon', '1111');
SELECT id, pwd FROM MEMBER; -- id, pwd 정보만 가져옴

SELECT id as user_id, name, pwd FROM MEMBER;
-- as를 생략해도 가능!
⇒ 테이블 컬럼명을 수정하지 않고 원하는 컬럼명으로 바꾸는 방법

UPDATE 테이블명 SET 컬럼명 = 수정할 값 ;
⇒ 이렇게 했을 때 모든 데이터의 값이 변경이 됌

UPDATE MEMBER SET PWD = '111' WHERE id = 'dragon';


⇒ test 삭제하기
DELETE MEMBER WHERE id = 'test';

계좌이체
이벤트 게시글 등록
- 글을 등록하면 포인트를 받는다고 가정
- 사용자가 글을 입력하면 포인트를 업데이트 해줘야 함
- 쿼리문 하나로 끝나는게 아닌 insert(글작성), update(포인트 적립)가 필요함
⇒ 현재 세션을 위한 임시저장소에서 테스트를 하고, 그동안 다른 세션이 건드리지 못하도록 LOCK을 해줘야 함

⇒ 이러한 과정을 위해 제공받는 명령어는 COMMIT과 ROLLBACK이 존재함


⇒ insert 한 내용이 보이는 것을 확인할 수 있음

⇒ 같은 테이블에 쿼리를 썻지만, 같은 계정으로 접근했어도 접속정보가 다르면 접속자(세션)가 다르다고 판단

한쪽에서 변경한 이후에 다른 쪽에서 변경을 하게 되면 LOCK을 한 상태이기 때문에 변경이 되지 않음

만약, test를 추가한게 마음에 안들어서 이전으로 돌리고 싶다면 rollback을 해주면 된다.
rollback;

양쪽에서 COMMIT이 이루어져야 INSERT와 같은 값의 변경이 이루어 진다.
공지사항의 조회수를 조회하시오. 단 기존 값에 1을 더해서 조회하시오.
SELECT HIT + 1 FROM NOTICE;

⇒ 1이 더해진 값이 나오지만, 컬럼명이 HIT + 1로 나옴
⇒ 사용자는 결과집합에 있는 컬럼명을 가지고 데이터를 뽑아냄
⇒ 컬럼명이 “HIT”이 되도록 만들기
SELECT HIT + 1 HIT FROM NOTICE;
SELECT 1 + '3' FROM DUAL;
⇒ 이렇게 되면 ‘3’은 숫자로 변환을 시켜서 4가 나온다
⇒ 문자(ex) a)와 숫자를 더하는 방법은 다음과 같다.
SELECT 1 || 'a' FROM DUAL;

⇒ ID와 NAME을 출력
^=
<>
⇒ 둘다 같지 않다라는 의미
SELECT * FROM NOTICE WHERE WRITER_ID = 'newlec';SELECT * FROM NOTICE WHERE HIT > 3;SELECT * FROM NOTICE WHERE CONTENT IS NULL;SELECT * FROM NOTICE WHERE 0 <= HIT AND HIT <= 2;
-- OR
SELECT * FROM NOTICE WHERE HIT BETWEEN 0 AND 2;SELECT * FROM NOTICE WHERE HIT = OR HIT = 2 OR HIT = 7;
-- OR
SELECT * FROM NOTICE WHERE HIT IN (0, 2, 7);SELECT * FROM NOTICE WHERE HIT NOT IN (0, 2, 7);SELECT * FROM MEMEBER WHERE NAME LIKE '박%';SELECT * FROM MEMBER WHERE NAME LIKE '박_';SELECT * FROM MEMBER WHERE NAME NOT LIKE '박%';SELECT * FROM MEMBER WHERE NAME LIKE '%도%';