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; --이름이 같으면 콤마를 찍고 두번째 정렬값을 넣으면 됌

첫번째가 중복되면 두번째 값으로 정렬함.