Frog is cry
Lecture06_조건,함수,정렬 본문
조건(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 |