조건이란?
모든 레코드를 대상으로 하지 않고 특정 조건에 맞는 레코드만 조회/주성/삭제하고 싶을 때 사용.
SELECT,UPDATE,DELETE 명령의 마지막 부분에 ‘WHERE [컬럼명][조건]’을 추가.
예.학번이101인 학생의 점수를 90점으로 수정.
이름이 ‘홍길동‘인 학생의 연락처를 ‘010-2222-3333’으로 수정
연락처가 null인 학생들을 삭제.
김씨인 학생들의 모든 정보를 조회.
다양한 연산자와 기호로 나타내는 법
2학년인 >>WHERE st_grade=2
*SELECT*FROM student WHERE st_grade=2;
*DELETE FROM student WHERE st_grade=2;
**특정 명령어 뒤에 특정 조건을 붙힐 때 쓰는 것이 where이며, 위 두 *이 찍힌 명령어는 where를 사용하여 전체 명령어를 적은 것입니다.
학번이 5이상 10이하인 >> WHERE st_num >= 5 AND se_num <= 10
*5<= ST_NUM <=10이라는 연산자를 적을 수 없어서 둘다 속하는 것을 찾기 위한 AND를 사용합니다.
**SELECT st_name FROM student WHERE st_num >= 5 AND se_num <= 10;
학년이 3학년이 아닌 >> WHERE st_grade !=3(혹은WHERE st_grade<>3)
학년이 2,4학년인 >> WHERE st_grade =2 OR st_grade =4;
이름이 핫돌인>> WHERE st_name ='핫돌‘
이름이 ‘이’로 시작하는 >>WHERE name LIKE '이%‘
이름이 ‘이’로 끝나는 >>WHERE name LIKE '%이‘
이름에 ‘이’가 포함되는 >>WHERE name LIKE '%이%‘
등록일자가 null인>>WHERE st_regdate ISNULL
등록일자가 이번 달인 >>WHERE st_regdate LIKE'24/06/%'
등록일자가 올해 이후인 >> WHERE st_regdate >=‘24/01/01’
INSERT INTO student VALUES(3, '경제학', '010-1234-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(4, '회계학', '010-5678-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(5, '제정학', '010-5512-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(6, 'C언어', '010-6615-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(7, '자바스크립트', '010-7667-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(8, '컴퓨터개론', '010-7888-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(9, '한국어', '010-9981-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(10, '일러스트', '010-1562-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(11, '포토샵', '010-3341-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(12, '에프터이펙트', '010-2211-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(13, '프리미어프로', '010-5656-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
INSERT INTO student VALUES(14, '토익', '010-1243-5678' ,2, 80, TO_DATE('2024-06-24' , 'YYYY-MM-DD'));
1.1학년을 제외한 모든 학생들의 이름,학년,점수를 조회
SELECT st_name, st_grade, st_score FROM student WHERE st_grade != 1;
2.핫씨인 학생들의 학년을 조회
*SELECT st_grade FROM student WHERE st_name LIKE'김%';
**SELECT st_grade FROM student WHERE st_name LIKE'핫%';
*SELECT st_grade FROM student WHERE st_name LIKE'김%';
**SELECT st_grade FROM student WHERE st_name LIKE'핫%';
***SELECT st_grade,st_name FROM student WHERE st_name LIKE'핫%';
3.등록일자가 2017년 이후인 학생들의 이름, 연락처, 학번, 학년을 조회
*SELECT st_name, st_tel, st_num, st_grade FROM student WHERE st_regdate >= '17/01/01';
**날짜로 찾는 경우 오류가 있음
***SELECT st_name, st_tel, st_num, st_grade FROM student WHERE st_name LIKE'김%';
****이름으로 찾는 경우 오류가 없음
4.2학년 학생들 중 점수가 80점 이상인 학생들의 학년을 3학년으로 변경
*UPDATE student SET st_grade = 3 WHERE st_grade =2 AND st_score >=80;
5.‘한국어‘학생의 정보 삭제
*DELETE FROM student WHERE st_name ='한국어';
6.등록일자가 2018년 이전인 학생들 중, 1학년인 학생들의 학년을 2학년으로 변경
*UPDATE student SET st_grade = 2 WHERE st_regdate >= '2017/01/01' AND st_grade = 1;
**UPDATE student SET st_grade = 2 WHERE ST_REGDATE >= '2017/01/01' AND st_grade = 1;
***등록일자로 검색하거나 확인 시 ORA -00904 오류가 지속적으로 발견됨.
7.‘C언어’학생의 연락처를 NULL로 변경
*UPDATE student SET st_tel = NULL WHERE st_name = 'C언어';
**SET st_tel = NULL 는 대입해라 라는 표시.
***WHERE st_name = 'C언어같다라는 표시.
8.1학년 학생들의 등록일자를 오늘 날짜로 변경
**UPDATE student SET st_regdate = SYSDATE WHERE st_grade = 1;
**등록일자로 검색하거나 확인 시 ORA -00904 오류가 지속적으로 발견됨.
9.점수가 70점 미만인 학생들의 학년을 한 학년 감소
*UPDATE student SET st_grade = st_grade-1 WHERE st_score <= 70;
검색:[정렬]-ORDER BY [항목명][ASC/DESC];
주의!반드시 명령의 맨 마지막에 적을 것.
ASC:오름차순(ascending)
DESC:내림차순(descending)
예) 이름순으로 모든 정보를 확인
SELECT*FROM student ORDER BY st_name ASC;
예) 이름 순으로 모든 정보를 확인, 중복인 경우 번호 순으로
SELECT*FROM student ORDER BY st_name ASC st_num ASC;
*num은 만들지 않아 없습니다.
SELECT*FROM student ORDER BY st_grade ASC, st_name ASC;
>>합계 - SUM([항목명])
SELECT SUM(st_score) FROM student;
>>평균 - AVG([항목명])
SELECT AVG(st_avg) FROM student;
>>최대 - MIN([항목명])
SELECT MIN(st_regdate) FROM student;
SELECT COUNT(st_score) FROM student;
>>최대 - COUNT([항목명])
SELECT COUNT(st_tel) FROM student;
SELECT COUNT(*) FROM student;
모든 학생의 모든 정보를 학년,오름차순 같은 학년인 경우 이름 오름차순으로 조회.
SELECT *FROM student ORDER BY st_grade ASC, st_name ASC;
3학년 학생들의 평균 점수를 조회
SELECT AVG(st_score) FROM student WHERE st_grade = 3;
2017년 이후에 등록한 학생들의 점수 중 가장 높은 점수를 조회
SELECT MAX(st_score) FROM student WHERE st_regdate >= '17/01/01';
2학년 학생들 중 가장 점수가 낮은 학생의 이름, 점수, 학번 조회
SELECT st_name, st_score, st_num FROM student WHERE st_grade = 2 AND st_score (SELECT MIN (st_score)FROM student WHERE st_grade = 2);
거대한 셀렉트 문 안에 조그만 셀렉트가 들어가 있는데 셀렉트는 조회가 아닌 이자리에 값을 가져다 줘 라는 명령이고 return이라는 개념이라고 생각하면 좋다.
전체 학생들의 평균 점수보다 높은 학생의 모든 정보를 점수 높은 순으로 조회
SELECT* FROM student WHERE st_score >= (SELECT AVG(st_score) FROM student) ORDER BY st_score DESC;
*항목의 개수가 부족한 줄 알았는데 명령어를 오류로 작성한 것이었다.
************* 컴퓨터 공학부가 모두 잘 되는 날이 왔으면 좋겠습니다. *************
*************틀린 부분이 있다면 말씀해주신다면. 정정 하도록 노력겠습니다. *************
'핫돌의 잡 지식 놓는 곳' 카테고리의 다른 글
언젠가 사용할지도 모르는 JSP 테이블 만들기. (0) | 2024.06.26 |
---|---|
언젠가 사용할지도 모르는 JSP SQL시퀀스 (0) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP SQL CRUD생성,조회,수정,삭제 (0) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP DBA주요 명령 (2) | 2024.06.26 |
언젠가 사용할지도 모르는 JSP SQL SYSTEM관리자의 주요 명령. (0) | 2024.06.26 |