* CRUD란? ( CREATE, READ, UPDATE, DELETE의 기본적인 구문 )
--1. 제시된 정보를 work0305테이블에 생성
create table work0305(
num number(10),
name varchar2(40),
email varchar2(50),
class char(1),
addr char(45),
gender char(6),
java number(30)
);
--2. 제시된 정보를 생성된 테이블에 추가 ( transcation은 한 건마다 처리)
insert into work0305(num,name,email,class,addr,gender,java)
values (1,'홍길동','hong@test.com','A',
'서울시 강남구 역삼동','남자',90 );
commit;
insert into work0305(num,name,email,class,addr,gender,java)
values (2,'김철수','kim@sist.co.kr','A',
'서울시 동대문구 동대문동 역삼동','여자',76);
commit;
insert into work0305(num,name,email,class,addr,gender,java)
values (3,'이재식','jaesick@naver.com','B',
'경기도 수원시 영통구','남자',99);
commit;
insert into work0305(num,name,email,class,addr,gender,java)
values (4,'상수길','sang_su@google.com','A',
'인천시 부평구 부평동','여자',83);
commit;
insert into work0305(num,name,email,class,addr,gender,java)
values (5,'남착수','nam_su@test.com','A',
'서울시 관악구 봉천동','여자',73);
commit;
--3. 모든 컬럼 조회
SELECT * FROM work0305;
--4. 번호,이름,자바점수,반,입력일 컬럼만 조회
SELECT NUM,NAME,JAVA,CLASS FROM work0305;
--5. 4번과 5번 학생의 반을 'B'반으로, 성별을 '남자'로 변경
update work0305
set class='B',gender='남자'
where num in(4,5);
SELECT * FROM work0305;
--6.이메일이 'sang_su@naver.com'인 학생의 번호를 6으로,
--이름을 '여여자'로, 성별을 '여자', 입력일을 '내일'로 변경
update work0305
set num=6,name='여여자',gender='여자'
where email='sang_su@google.com';
SELECT * FROM work0305;
--7.'A'반인 모든 학생을 삭제
delete from work0305 where class='A';
SELECT * FROM work0305;
-- 작업 취소
rollback;
SELECT * FROM work0305;
--8.테이블의 모든 레코드 절삭
truncate table work0305;
--9.테이블 삭제
drop table work0305;
--10.휴지통 확인
select * from tab;
--11.휴지통을 비움
purge recyclebin;
SELECT * FROM work0305;
* 계산 조회 및 정렬 ( where, order by )
--1.like_thes2 테이블을 생성하고
create table like_test2 (
enameno char(1),
ename varchar2(12),
addr char(35),
highsch char(15)
);
--2. 레코드를 추가
insert into like_test2(enameno,ename,addr,highsch)
values (1,'김철수','서울시 상도동','오지고');
commit;
insert into like_test2(enameno,ename,addr,highsch)
values (2,'홍길동','서울시 봉천동','오지고');
commit;
insert into like_test2(enameno,ename,addr,highsch)
values (3,'박영희','인천시 부평동','지리고');
commit;
insert into like_test2(enameno,ename,addr,highsch)
values (4,'이민수','서울시 상동','썸지고');
commit;
insert into like_test2(enameno,ename,addr,highsch)
values (5,'최수정','인천시 십정동','지리고');
commit;
insert into like_test2(enameno,ename,addr,highsch)
values (6,'정우성','서울시 동대문구 동대문동','지리고');
commit;
select * from like_test2;
--3. like_test2 테이블에서 '서울시'에 거주하며
--이름이 3글자인 학생의 번호,이름,주소,출신고를 검색하여 아래와 같이출력
-- 번호:xx,이름:xx,학교:xx,주소:xx
select ENAMENO, ENAME, ADDR, HIGHSCH
from like_test2
where addr like '서울시%' and ename like '___';
order by ename asc;
ADDR이 서울시로 시작하면서(AND), ENAME이 3글자인 데이터들만 조회되었고
이름의 오름차순으로 정렬된 모습(가나다 순)
* 만약 TABLE을 CREATE할 때 ENAME을 VARCHAR2가 아닌, ex)CHAR(12)로 만들었다면?
- CHAR 타입은 고정 길이 데이터 타입이라서,
- 실제 이름이 3글자여도 자동으로 뒤에 공백이 붙어서 12자 길이로 채워져
예: '김철수 ' ← 3글자 + 공백 9개
그래서 like '___'은 정확히 공백 없는 3글자 문자열만 찾기 때문에 매칭이 안돼서
where ename like '___' ;로 조회가 안됨. ( _ 3개 )
'SQL Oracle' 카테고리의 다른 글
[SQL] PRIMARY & FOREIGN KEY, UNIQUE, NOT NULL, NVL (0) | 2025.04.14 |
---|---|
[SQL] SYSDATE, SUM, MAX, MIN, GROUP BY, VALUES (0) | 2025.04.11 |
[SQL] to_char, instr, substr, length, initcap, as (0) | 2025.04.10 |
[SQL] Oracle 환경 설정 (1) | 2025.04.07 |