관리 메뉴

Frog is cry

Lecture06_조건,함수,정렬 본문

JSP/실습

Lecture06_조건,함수,정렬

Frog is cry 2020. 8. 3. 17:43

조건(WHERE) :
모든 레코드를 대상으로 하지 않고 특정 조건에 맞는 레코드만 조회/수정/삭제하고 싶을때 사용
SELECT, UPADATE, DELETE 명령의 마지막 부분에 'WHERE [컬럼명][조건]'을 추가
Ex) 
> 학번이 101인 학생의 점수를 90점으로 수정
> 이름이 '홍길동'인 학생의 연락처를 '010-2222-3333'으로 수정
> 연락처가 null인 학생들을 삭제
> 김씨인 학생들의 모든 정보를 조회

2학년인
> SELECT * FROM student WHERE st_grade = 2;

학번이 5이상 10이하인 
> WHERE st_num >= 5 AND st_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 IS NULL

등록일자가 이번 달인
> WHERE st_regdate LIKE '18/04/%';

등록일자가 올해 이후인
> WHERE st_ragdate >= '18/01/01'

Ex)
INSERT INTO student VALUES(3, '홍길동', '010-1122-3442', 2, 80, TO_DATE('2015-11-27', 'YYYY-MM-DD'));
INSERT INTO student VALUES(4, '김지환', '010-7595-8879', 3, 82, TO_DATE('2017-01-11', 'YYYY-MM-DD'));
INSERT INTO student VALUES(5, '정지욱', '010-0153-8951', 1, 80, TO_DATE('2016-06-17', 'YYYY-MM-DD'));
INSERT INTO student VALUES(6, '김민아', '010-7443-1781', 4, 100, TO_DATE('2018-01-02', 'YYYY-MM-DD'));
INSERT INTO student VALUES(7, '서제환', '010-7758-9963', 2, 67, TO_DATE('2018-03-11', 'YYYY-MM-DD'));
INSERT INTO student VALUES(8, '고제연', '010-3745-7946', 1, 88, TO_DATE('2017-11-23', 'YYYY-MM-DD'));
INSERT INTO student VALUES(9, '민하연', '010-2311-8596', 1, 92, TO_DATE('2016-01-03', 'YYYY-MM-DD'));
INSERT INTO student VALUES(10, '김민주', '010-7645-1234', 4, 63, TO_DATE('2017-05-05', 'YYYY-MM-DD'));
INSERT INTO student VALUES(11, '황희재', '010-1885-4456', 3, 82, TO_DATE('2015-01-30', 'YYYY-MM-DD'));
INSERT INTO student VALUES(12, '지민아', '010-1132-8516', 3, 65, TO_DATE('2016-11-12', 'YYYY-MM-DD'));
INSERT INTO student VALUES(13, '이정우', '010-7753-9461', 2, 58, TO_DATE('2018-09-03', 'YYYY-MM-DD'));
INSERT INTO student VALUES(14, '박지훈', '010-1122-3442', 2, 100, TO_DATE('2016-10-10', 'YYYY-MM-DD'));

WHERE Ex)
1학년을 제외한 모든 학생들의 이름, 학년, 점수를 조회
> SELECT st_name, st_grade, st_score FROM student

김씨인 학생들의 학년을 조회
> SELECT st_grade, st_name FROM student WHERE st_name LIKE '김%';

등록일자가 2017년 이후인 학생들의 이름, 연락처, 학번, 학년을 조회
> SELECT st_name, st_tel, st_num, st_grade, st_regdate FROM student WHERE st_regdate >= '17/01/01';

2학년 학생들 중 점수가 80점 이상인 학생들의 학년을 3학년으로 변경
> UPDATE student SET st_grade = 3 WHERE st_grade = 2 AND st_score >= 80;
> 변경후 확인 : SELECT st_name, st_grade, st_score FROM student;

'서제환' 학생의 정보 삭제
> DELETE FROM student WHERE st_name = '서제환';

등록일자가 2017년 이전인 학생들 중, 1학년인 학생들의 학생을 2학년으로 변경
> UPDATE student SET st_grade = 2 WHERE st_regdate >= '2017/01/01' AND st_grade = 1;

'민하연' 학생의 연락처를 NULL로 변경
> UPDATE student SET st_tel = NULL WHERE st_name = "민하연";

1학년 학생들의 등록일자를 오늘날짜로 변경
> UPDATE student Set st_regdate = SYSDATE WHERE st_grade = 1;

점수가 70점 미만인 학생들의 학년을 한 학년 감소
> UPDATE student SET st_grade = st_grade-1 WHERE st_Score <= 70;

Order & Fuctions
검색 : [정렬] - ORDER BY [항목명] [ASC/DESC];
> 주의! 반드시 명령의 맨 마지막에 적을 것.
> ASC : 오름차순(ascending)
> DESC : 내림차순(descending)

Ex)
이름 순으로 모든 정보를 확인
> SELECT * FROM student ORDER BY st_name ASC;
이름 순으로 모든 정보를 확인, 중복인 경우 번호 순 으로
> SELECT * FROM student ORDER BY st_name ASC;

함수 :
합계 - SUM([항목명])
> SELECT SUM(st_score) FROM student;

평균 - AVG([항목명])
> SELECT AVG(st_avg) FROM student;

최대 - MAX(st_num) FROM student;
> SELECT MAX(st_num) FROM student;

최소 - MIN(st_regdate) FROM student;
> SELECT MIN(st_regdate) FROM student;

개수 - COUNT([항목명])
> SELECT COUNT(st_tel) FROM student; 모든 레코드의 수 (행의 개수)
> SELECT COUNT(*)  FROM student;
 
Ex)
모든 학생의 모든 정보를 학년 오름차순, 같은 학년인 경우 이름 오름차순으로 조회
> SELECT * FROM student ORDER BY  st_grade ASC, st name ASC;

2학년 학생들의 이름, 연락처, 학번을 연락처 오름차순으로 조회
> SELECT st_name, st tel, st num WHERE st_grade = 2 ORDER BY st_tel ASC;

3학년 학생들의 평균 점수를 조회
> SELECT AVG(st_score) FROM student WHERE st_grade = 3;

2017년 이후에 등록한 학생들의 점수 중 가장 높은 점수를 조회
> SELECT MAX(st_score) FROM student WHERE regdate > '17/01/01';

3학년 학생들 중 가장 점수가 낮은 학생의 이름 점수, 학번 조회
> SELECT st_name, st_score, st_num 
FROM student 
WHERE st_grade = 3
AND st_score = (SELECT MIN(st_score) FROM student WHERE st_grade =3);

전체 학생들의 평균 점수보다 높은 학생의 모든 정보를 점수 높은 순으로 조회
> SELECT * FROM student WHERE st_score >= (SELECT AVG(st_score) FROM student) ORDER BY st_score DESC;

'JSP > 실습' 카테고리의 다른 글

Lecure08_학생 테이블 생성  (0) 2020.08.03
Lecture07_Sequence  (0) 2020.08.03
Lecture05_CRUD  (0) 2020.08.03
Lecture04_DBA  (0) 2020.08.03
Lecture03_SYSTEM 관리자의 주요 명령  (0) 2020.08.03
Comments