SQL 기초알기
SELECT 구문
테이터 베이스를 이요하는 때 핵심이 되는 처리가 바로 검색이다.
name(이름) | age(나이) | address(주소) |
자바 | 30 | 서울시 |
C# | 21 | 서울시 |
C++ | 40 | 경기도 |
Python | 10 | 강원도 |
Member테이블
"SELECT NAME,AGE,ADDRESS FROM MEMBER"
- SELECT뒤에 나열되어 있는 부분을 SELECT구 여러개 사용가능
- FROM[테이블이름]을 FROM구라고 부르며 테이블에서 검색할경우에는 필수 사용, 그렇지 않으면 필수X
WHERE 구문
"SELECT name FROM MEMBER WHERE AGE= 30
나이가 30인이름을 찾는다.
연산자 | 의미 |
= | 같음 |
<> | ~와 같지 않음 |
>= | ~ 이상 |
> | ~ 보다큼 |
<= | ~ 이하 |
< | ~ 보다작음 |
AND
'그리고'뜻으로 서울시에 살고 나이가 20이상인 회원을 찾으라고하면
"SELECT NAME FROM MEMBER WHERE ADDRESS = '서울시' AND AGE>20"
벤다이어 그램으로는 교집합
OR
'또는'뜻으로 서울시에살고 또는 나이가 10살이상인 사람을 찾아라.
"SELECT NAME FROM MEMBER WHERE ADDRESS='서울시' OR AGE>=10"
벤다이어 그램으로는 합집합
IN
OR이 여러개라면 단순하게 IN하나로 표현할수 있다.
"SELECT NAME FROM MEMBER WHERE ADDRESS IN('서울시','경기도','강원도')"
GROUP BY 구
테이블의 필드값을 그룹으로 나눠서 함수를 사용해 계산을 한다.라는 뜻으로 이해한다.
함수이름 | 설명 |
COUNT | 레코드 수를 계산 |
SUM | 숫자를 더함 |
AVG | 숫자의 평균을 구함 |
MAX | 최댓값을 구함 |
MIN | 최솟값을 구함 |
SQL의 대표적인 집계 함수
MEMBER 테이블에서 나이별 인원수를 찾으려고한다면 SQL작성
"SELECT AGE, COUNT(*) FROM MEMBER GROUP BY AGE"
HAVING 구
MEMBER 테이블에서 COUNT가 1인 값을 찾을때
"SELECT COUNT(*),ADDRESS FROM MEMBER GROUP BY ADDRESS HAVING COUNT(*) =1"
즉 집합에 조건을 지정하는 기능이라고 할수 있다.
ORDER BY 구
값을 순서를 보장하여 출력하기 위해서 사용한다.
DESC= 내림차순
ASC=오름차름(기본값)
나이가 많은 순으로 레코드를 정렬해야한다면
"SELECT * FROM MEMBER ORDER BY DESC"
뷰와 서브쿼리
뷰(VIEW)란 터베이스에서 가상의 테이블로, 하나 이상의 테이블에서 가져온 데이터를 기반으로 만들어진 결과 집합
-뷰 만드는 법
CREATE VIEW [뷰 이름] ([필드 이름1],[필드 이름2] ...) AS
주소별 사람수를 구하는 SELECT 구문을 뷰로 생성
CREATE VIEW CountAddress(v_address,cnt) AS
SELECT ADDRESS, COUNT(*)
FROM MEMBER
GROUP BY ADDRESS;
"SELECT v_address,cnt FROM CountAddress"
즉 '테이블 모습을 한 SELECT 구문' 이라고 생각
서브쿼리
SELECT v_address,cnt
-FROM (SELECT address AS v_address, COUNT(*) AS cnt
FROM MEMBER
GROUP BY ADDRESS) AS CountAddress;
FROM 구뒤에 SELECT문을 작성한것을 서브 쿼리라고한다.
조건분기
일반적인 프로그래밍 언어에서는 if 조건문과 switch와 같은 조건문등이 있다. 하지만 sql에서는 조건문이 없다. sql에서는 식이라고 하는데 '단순 CASE 식' 과 '검색 CASE 식' 두종류가있다.(검색 CASE은 단순 CASE식의 기능을 모두 포함)
UNION
두개의 테이블을 통해 레코드의 합집합을 구하는것
중복된 레코드는 제거후에 출력
SELECT * FROM MEMBER
UNION
SELECT * FROM MEMBER2;
INTERSECT
두 테이블에서 공통된 값만 추출하는것 즉 교집합을 구한다.
SELECT * FROM MEMBER
INTERSECT
SELECT * FROM MEMBER2;
EXCEPT
두테이블에서 차집합을 구하는것
SELECT * FROM MEMBER
EXCEPT
SELECT * FROM MEMBER2;
순서가 중요해서 SELECT TABLE 위치가 중요하다.
INSERT
데이터를 추가하기 위함
INSERT INTO [테이블명] ([필드1],[필드2],[필드3]....) VALUES ([값1],[값2],[값3].....);
DELETE
데이터를 삭제하기 위함
DELETE FROM [테이블 이름];
일부 테이블 레코드만 삭제하려면
DELETE FROM [테이블명] WHERE [필드 이름] = [값];
UPDATE
데이터를 갱신하기 위해서 사용한다.
UPDATE [테이블 이름] SET [필드 이름] = [식];
'MySQL' 카테고리의 다른 글
[MySQL] 데이터 압축이란? (1) | 2024.01.27 |
---|---|
[MySQL] MySQL의 트랜잭션과 잠금 (1) | 2024.01.26 |
[MySQL] 사용자 및 권한 (1) | 2024.01.05 |
[MySQL] 시스템 변수 (1) | 2024.01.05 |
MySQL 콘솔 접속방법 (0) | 2023.12.04 |