chap03 SQL 기본 문법
2023. 1. 18. 00:03ㆍ혼자 공부하는 sql
반응형
Chapter 03 SQL 기본 문법
03 - 1 기본 중에 기본 SELECT ~ FROM ~ WHERE
- SELECT 문은 구축이 완료된 테이블에서 데이터를 추출하는 기능. 따라서 사용해도 기존 데이터가 바뀌지 않는다.
- DROP
- DROP DATABASE 는 데이터베이스를 삭제하는 명령어.
- IF EXISTS 가 drop database 뒤에 있는 경우, 이미 해당 이름의 db가 존재한다면 그를 삭제 후 새로 만들라는 뜻이다.
- USE
- 데이터베이스를 선택하겠다는 문장 . USE market_db 라 하면, market_db 라는 데이터 베이스를 선택하고, 이 후 모든 SQL 문은 market_db 에서 수행되게 된다.
- 만약 USE SOMEDB 로 SOMEDB 를 지정한 후 SOMEDB에 없는 테이블을 select 문에서 접근하고자 한다면 에러가 발생한다.
- SELECT 기본 형식
SELECT select_expr
FROM
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
이 순서대로 써야 에러가 발생하지 않음.
SELECT
- SELECT 와 FROM 사이에는 보고싶은 열들을 , 로 구분지어 쭉 적는다.
- 열 이름 뒤에 " " 로 지정하고 싶은 별칭을 입력하면 열 이름이 아닌 내가 적은 별칭으로 확인 가능 하다.
WHERE
- 특정 행만 출력하고 싶을 때 사용
- WHERE 이후에 오는 조건식을 만족하는 행만 출력이 된다.
- 관계 연산자, 논리 연산자 사용
- '>' , '<' , '<=' , '>='
- AND , OR
- BETWEEN ~ AND
- 범위에 있는 값을 구함.
- IN
- 숫자의 경우 범위 내에 있다고 표현이 가능하지만 그렇지 않은 경우는 in 을 사용.
- IN ('A', 'B', 'C'); 이렇게 쓰면 A,B,C 라면 포함이 된다!
- LIKE
- 문자열의 일부 글자 검색
- '%'
- % 는 무엇이든 허용한다
- ex) '우%' -> 우주소녀, 우테코 등등 모두
- ex) '%핑크' -> 에이핑크, 블랙핑크 등 모두
- '_'
- 한 글자와 매치하기 위함
- ex) '우_' -> 우주소녀 X, 우테코 X, 우왕 O
- ex) '_핑크' -> 에이핑크 X, 블랙핑크 X, 핫핑크 O
- 사용 : WHERE mem_name LIKE '%핑크'
- 관계 연산자, 논리 연산자 사용
서브쿼리
- SELECT 안에 또다른 SELECT 가 들어가는 경우.
- 뭐라고 쓰지?
03 -2 좀 더 깊게 알아보는 SELECT 문
ORDER BY, LIMIT, GROUP BY, DISTINCT 등을 더 알아보자.
ORDER BY
- 결과의 출력 순서를 조절함.
- 기본이 ASC (오름 차순). DESC 는 내림차순으로 기입 해주어야 함.
- ORDER BY 열이름 ASC/DESC
LIMIT
- 출력의 개수를 제한한다.
- LIMIT 의 형식은 LIMIT 시작, 개수
- LIMIT 3 만 쓰면 LIMIT 0,3 과 동일하다.
- 출력의 개수를 제한한다.
DISTINCT
- 조회된 결고에서 중복된 것 1개만 남김.
GROUP BY
- 집계 함수를 이용해 데이터를 그룹화 하여 볼 수 있게 한다.
- 집계 함수
- SUM()
- AVG()
- MIN()
- MAX()
- COUNT()
- COUNT(DISTINCT) -> 행의 개수를 세되, 중복은 1개만 인정한다.
HAVING
- WHERE 과 비슷하게 조건을 제한하는 것이지만, 집계 함수에 대해서만 조건을 제한한다.
- 그렇게 때문에 GROUP BY 절 이후에 나와야 한다.
03 -3 데이터 변경을 위한 SQL 문
이 장에선 SELECT 를 제외한 INSERT, UPDATE, DELETE 를 공부한다.
- 데이터 입력 : INSERT
- 테이블에 데이터를 삽입하는 명령
- INSERT INTO 테이블 [(열1, 열2 ...)] VALUES (값1, 값2, ...)
- 만약 값을 입력하고 싶지 않은 열이 있다면 그냥 열을 안적어주면 된다.
- AUTO_INCREMENT : 1부터 증가하는 값을 입력해줌. AUTO_INCREMENT로 지정한 열은 반드시 PRIMARY_KEY 로 지정해 주어야 한다.
- INSERT문에선 NULL로 채워주면 된다.
- 처음에 1000부터 시작하도록 하고싶다면??
- @@auto_increment_increment 값을 변경한다. -> 이는 시스템 변수이다.
- 시스템 변수 : MySQL 에서 자체적으로 갖고 있는 설정값이 저장된 변수. 앞에 @@이 붙는다.
- @@auto_increment_increment 값을 변경한다. -> 이는 시스템 변수이다.
- 다른 테이블의 데이터를 한 번에 입력하는 INSERT INTO ~ SELECT
데이터 수정 : UPDATE
UPDATE 테이블이름
SET 열1=값1, 열2=값2, ...
WHERE 조건;- WHERE가 없는 UPDATE문
- update에서 where 은 생략이 가능하지만 생략되면 테이블의 모든 행이 변경된다.
- 이걸 이용해서, 인구 수 등 자료를 10000명 단위로 변경해 보는 것 등을 where 문 없는 update문을 활용해 쉽게 바꿀 수 있다.
- ex) UPDATE city_popul SET population = population / 1000;
- WHERE가 없는 UPDATE문
데이터 삭제 : DELETE
- 테이블의 행 데이터를 삭제해야 하는 경우
- DELETE FROM 테이블이름 WHERE 조건;
- 대용량 테이블의 삭제
- DELETe의 경우 삭제가 오래걸린다.
- DROP의 경우 테이블 자체를 삭제하기 때문에 시간이 훨씬 짧다.
- TRUNCATE 문 은 DELETE와 같은 효과를 내는데 속도가 훨씬 빠르다.
'혼자 공부하는 sql' 카테고리의 다른 글
Chap06 인덱스 (0) | 2023.01.24 |
---|---|
chap05 테이블과 뷰 (0) | 2023.01.20 |
chap04 SQL 고급 문법 (1) | 2023.01.18 |