SQL day2
DML | DCL |
DML
명령어 : SELECT(조회), INSERT(삽입), UPDATE(갱신), DELETE(삭제)
[데이터 조회]
SELECT [ * | DISTINCT ] 속성1, 속성2
FROM 테이블명
WHERE 조건
GROUP BY 기준
HAVING 그룹 조건
ORDER BY 속성[ASC | DESC];
* : 모든 컬럼
asc : 오름차순, 생략가능
desc : 내림차순
집계함수 : 데이터의 그룹을 집계(언산)할 수 있는 함수
count() : 개수
max() : 최대값
min() : 최소값
sum() : 합계
avg() : 평균
-- 집계함수 예시)
SELECT COUNT(*) FROM STUDENT WHERE 국어 >= 80;
-- STUDENT 테이블에서 국어점수가 80점 이상인 모든 학생의 수를 조회
SELECT 과목이름, MIN(점수) AS 최초점수, MAX(점수) AS 최대점수
FROM 성적
GROUP BY 과목이름
HAVING AVG(점수) >= 90;
-- 성적 테이블에서 과목이름에 대한 평균 점수가 90점 이상인
-- 그룹의 이름, 최저, 최고 점수를 조회
-- as 별명 주기
SELECT STDDEV(국어), VARIAN(국어) *STDDEV : 표준편차, VARIAN : 분산
FROM 학생;
-- 학생 테이블에서 국어점수의 표준편차와 분산을 조회
WHERE 조건
= : 같다
<> : 다르다
is : 왼쪽 피연산자와 오른쪽 피연산자가 같으면 참
is not : 왼쪽 피연산자와 오른쪽 피연산자가 다르면 참
between A and B : 값이 A보다는 크거나 같고, B보다는 작거나 같으면 참
in() : 연산자의 값이 인수로 전달받은 리스트에 존재하면 참
like '%a' : 접미어가 a인 연산자가 존재하면 참
[데이터 삽입]
INSERT INTO 테이블명(속성1, 속성2, ... )
VALUES (데이터1, 데이터2, ... );
INSERT INTO 학생(학번, 성명, 학년)
VALUES (6866, ‘홍길동’, 2);
-- 학생 테이블에 학번이 6866, 이름이 홍길동, 2학년인 데이터를 삽입하라.
[데이터 갱신]
UPDATE 테이블명
SET 속성 = 데이터
WHERE 조건;
UPDATE 학생
SET 주소 = ‘인천’
WHERE 이름 = ‘장길산’;
-- 학생 테이블에서 이름이 장길산인 학생의 주소를 인천으로 갱신하라
[데이터 삭제]
DELETE FROM 테이블
WHERE 조건;
DELETE FROM 학생
WHERE 이름 = ‘장길산’;
-- 학생 테이블에서 이름이 장길산인 학생의 데이터를 삭제하라
조인 : 데이터 베이스 여러 데이블에서 가져온 레코드를 하나의 테이블이나 결과 집합으로 표현
-- inner join(교집합)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member inner join tb_profile
on tb_member.mem_idx = tb_profile.pro_idx;
-- left join(테이블1 기준으로 테이블2를 조합하는 형태)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member left join tb_profile
on tb_member.mem_idx = tb_profile.pro_idx;
-- right join(테이블2 기준으로 테이블1를 조합하는 형태)
select mem_idx, mem_userid, mem_name, mem_hp, mem_gender, pro_age, pro_mbti
from tb_member right join tb_profile
on tb_member.mem_idx = tb_profile.pro_idx;
DCL
[권한 부여]
GRANT 권한 ON 테이블 TO 사용자 [WITH GRANT OPTION];
GRANT UPDATE ON 학생 TO 장길산 [WITH GRANT OPTION];
-- 장길산에게 학생테이블에 대한 UPDATE에 대한 권한을 부여하라
[권한 철회]
REVOKE 권한 ON 테이블 FROM 사용자 [CASCADE CONSTRAINT];
REVOKE UPDATE ON 학생 TO 장길산 [CASCADE CONSTRAINT];
-- 장길산에게 학생테이블에 대한 UPDATE에 대한 권한을 철회하라