DB
[Oracle]dml . update(데이터 수정) , delete(데이터 삭제) , select(데이터 조회)
호ㅁl
2022. 11. 9. 17:48
데이터 수정
UPDATE USERTB --수정하고자 하는 테이블
SET id ='tester2' --변경하고자 하는 데이터
WHERE uidx = 1; --uidx가 1번인 id를 변경
여러개의 칼럼변경
UPDATE USERTB
SET PASSWORD = '0987' , id = 'tester2' --콤마(,)로 여러개의 칼럼 변경 가능
WHERE uidx = 2;
and 사용하여 칼럼변경
--id가 tester3 이면서 비밀번호가 0987인 행의 이름을 홍자 연락처를 010-1111-2222로 변경
UPDATE USERTB
SET NAME ='홍자' , phone = '010-1111-2222'
WHERE id ='tester3'
AND PASSWORD = '0987'; --and를 사용하여 변경하고자 하는 칼럼 조회
or 사용하여 칼럼변경
--id가 tester2이거나 이름이 홍자인 행의 password를 4444로 변경하세요.
UPDATE USERTB
SET PASSWORD = '4444'
WHERE id ='tester2'
OR NAME = '홍자';
연산자를 사용하여 칼럼변경
--uidx가 5보다 작은 행들의 rdate칼럼을 2022-03-12로 변경
UPDATE USERTB
SET rdate = TO_DATE('2022-03-12','yyyy-mm-dd')
WHERE uidx < 5;
--가입일이 2022년 3월 15일 이후인 행들의 주소를 천안시로 변경
UPDATE USERTB
SET addr = '천안시'
WHERE rdate > TO_DATE('2022-03-15','yyyy-mm-dd');
데이터 삭제
--데이터 삭제
DELETE
FROM usertb --usertb에서
WHERE uidx = 7; --uidx 7번 삭제
DELETE
FROM USERTB
WHERE rdate > TO_DATE('2022-03-15','yyyy-mm-dd'); --22년3월15일보다 큰 날짜 삭제
데이터 조회
--select : 데이터 조회 질의문
SELECT * --(*) 전체칼럼 조회
FROM usertb; --usertb의 전체칼럼 조회
--usertb에서 uidx, id, name 칼럼만 전체 데이터를 조회하세요.
SELECT uidx, id, NAME, TO_CHAR(rdate,'yyyy-mm-dd') AS rdate --as 조회되는 칼럼의 별칭을 변경할 수 있다.
FROM usertb;
원하는 칼럼만 선택하여 조회를 할 수 있다.
관계 연산자를 사용한 sql
--부등호 , = 기호를 사용한 연산자 => 관계연산자
SELECT *
FROM boardtb --boardtb에서
WHERE bidx >= 5; --bidx가 5보다 크거나 같은 행 칼럼 조회
--bidx가 5보다 크거나 같고 8보다 작거나 같은 전체 데이터를 조회하기
SELECT *
FROM BOARDTB
--WHERE bidx >= 5 AND bidx <= 8; --조건의 순서는 상관없다.
WHERE bidx <= 8 AND bidx >= 5;
-- = (동등비교), != (부정)
--bidx가 5가 아닌 게시글 조회
SELECT *
FROM boardtb
WHERE bidx != 5;
범위 비교시 사용하는 sql구문
between
: between 구문은 주로 날짜와 숫자 타입 칼럼에 대한 범위 조건을 지정할 때 사용한다.
--5~8 사이 bidx 데이터 조회
SELECT *
FROM BOARDTB
WHERE bidx BETWEEN 5 AND 8 --bidx가 5~8 사이 중에
AND wdate = TO_DATE('2022-08-23','yyyy-mm-dd'); --wdate가 22년 8월 23일인 칼럼조회
범위비교시 작은값부터 작성한다.
--등록일이 2022-04-01 에서 2022-08-30가지 사이에 작성된 게시글 데이터를 조회하세요.
SELECT *
FROM boardtb
WHERE wdate BETWEEN TO_DATE('2022-04-01','yyyy-mm-dd') AND TO_DATE('2022-08-30','yyyy-mm-dd');
in
: 구문 여러개의 절을 하나의 데이터로 만듦
--bidx가 1 또는 3 또는 6 또는 9인 데이터 조회
SELECT *
FROM BOARDTB
WHERE bidx IN (1, 3, 6, 9); --or인 경우에만 콤마(,) 적용
like
: 문자열 부분 검색하여 데이터 조회
--특정 문자열로 시작하는 데이터 조회
SELECT *
FROM boardtb
WHERE title LIKE '첫번째%'; --% 아무거나를 의미
--특정 문자열로 끝나느 데이터 조회
SELECT *
FROM boardtb
WHERE title LIKE '%입니다.';
--특정 문자열을 포함하고있는 데이터 조회
SELECT *
FROM boardtb
WHERE title LIKE '%섯번째%';
subQuery : sql 안에 또다른 sql이 존재하는 것
칼럼위치
: 기준 테이블이 아닌 다른 테이블의 한건을 조회해 올 수 있다.
SELECT bidx,title,content,wdate,hit,uidx, --조회하고자 하는 칼럼들
(SELECT id FROM usertb WHERE usertb.uidx = boardtb.uidx) AS id,
(SELECT NAME FROM usertb WHERE USERTB.uidx = boardtb.uidx) AS NAME
FROM boardtb;
boardtb의 uidx값과 동일한 usertbd의 uidx를 조회한 후 usertb의 id를 가져와 boardtb에 추가한다.
칼럼이름은 id로 변경.
boardtb의 uidx값과 동일한 usertbd의 uidx를 조회한 후 usertb의 name를 가져와 boardtb에 추가한다.
칼럼이름은 name 으로 변경 .
테이블 위치
: 조회 대상 테이블의 데이터를 제한 할 수 있다.
SELECT '테스트' , board.* --테스트 칼럼추가
FROM (SELECT * FROM boardtb WHERE bidx IN(1,3,5,8,9)) board;
--from절에 서브쿼리를 두면 됨
--바깥쪽에 작성한board : 테이블에서 서브쿼리 데이터에 대한 별칭
boardtb에서 bidx가 1,3,5,8,9인 데이터만 조회한다.
가상의 임시 테이블 bidx3인 행 보드 앞쪽에 테스트문자 같이 조회
조건절 위치
: 조건에 대한 값 역할을 할 수 있다.
조건연산자에 따라 조회되는 데이터가 다르다.
SELECT *
FROM boardtb
WHERE uidx IN (SELECT uidx FROM usertb WHERE NAME LIKE '%테%'); --'테'가 포함되어있는 uidx조회
조회정렬
--order by select절에 맨마지막에 와야함
SELECT *
FROM boardtb
ORDER BY title; --기본값 오름차순
SELECT *
FROM usertb
ORDER BY NAME, uidx desc; --이름이 같으면 콤마를 찍고 두번째 정렬값을 넣으면 됌
첫번째가 중복되면 두번째 값으로 정렬함.