SQL의 분류
SELECT문
- 원하는 데이터를 가져와 주는 기본적인 <SELECT * FROM 테이블 명>
- 가장 많이 사용되는 구문
- 데이터베이스 내 테이블에서 원하는 정보 추출하는 명령
USE 구문
- SELECT문 학습 위해 사용할 데이터베이스 지정
- Workbench 에서 직접 선택해서 사용가능
USE database명;
SELECT *
- 선택된 DB가 employees라면 다음 두 쿼리는 동일
SELECT * FROM employees.titles;
SELECT * FROM titles;
SELECT 열 이름
- 테이블에서 필요로 하는 열만 가져오기 가능
SELECT first_name FROM employees;
- 여러 개의 열을 가져오고 싶을때는 콤마로 구분
SELECT first_name, last_name, gender FROM emplyees;
select first_name as 이름, last_name as 성 , from employees;
- 열 이름의 순서는 출력하고 싶은 순서대로 배열 가능
주석
- MySQL은 ‘--’ 이후부터 주석으로 처리된다.
- -- 뒤에 바로 붙여서 쓰면 안되고 공백이 하나 이상 있어야 한다.
- 여러 줄 주석은 ‘/* */’로 묶는다.
DB, TABLE, 열의 이름이 확실하지 않을 때 조회하는 방법
현재 서버에 어떤 DB가 있는지
SHOW DATABASES;
현재 서버에 어떤 TABLE이 있는지 보기
- 데이터베이스에 있는 테이블 정보 조회
SHOW TABLE STATUS;
- 테이블 이름만 간단히 보기
SHOW TABLES;
employees 테이블의 열이 무엇이 있는지 확인
DESCRIBE employees or DESC employees;
특정한 조건의 데이터만 조회
- <SELECT … FROM … WHERE>
- 기본적인 WHERE절
- 조회하는 결과에 특정한 조건을 줘서 원하는 데이터만 보고 싶을 때 사용
select * from usertbl where name = '조관우';
select * from usertbl where name LIKE '김%' ;
select name, height from usertbl where name LIKE '김%' ;
select name, height from usertbl where name LIKE '_종신' ;
select * from usertbl where height = 182;
select * from usertbl where height >= 182 AND birthYeaar >=1970;
select * from usertbl where height >= 180 and height <= 183;
select * from usertbl where height between 180 and 183;
select name, height from usertbl where height > 177 ;
select name, height from usertbl
where height > ( SELECT height FROM usertbl WHERE name = '임재범' );
select * from usertbl where addr = '서울' or addr = '경남' ;
select * from usertbl where addr IN ( '서울' , '경남') ;
select name, height from usertbl
where height > ANY( SELECT height FROM usertbl WHERE addr = '경남' );
select name, height from usertbl
where height > ALL( SELECT height FROM usertbl WHERE addr = '경남' );
SELECT DISTINCT addr FROM usertbl; -- 중복 제외
SELECT name, mdate FROM usertbl;
SELECT name, mdate FROM usertbl ORDER BY mDate; -- 오름차순
SELECT name, mdate FROM usertbl ORDER BY mDate DESC; -- 내림차순
SELECT * FROM employees ORDER BY hire_date ASC LIMIT 5; --5개만
SELECT * FROM employees ORDER BY hire_date ASC LIMIT 0, 5;
SELECT * FROM employees ORDER BY hire_date ASC LIMIT 10, 5; --10번째부터 5개만
CREATE TABLE buytbl2 (SELECT * FROM buytbl); -- 테이블 복사하기
CREATE TABLE buytbl3 (SELECT userID, prodName FROM buytbl); -- 특정 열만 복사
GROUP BY 및 HAVING 그리고 집계함수
GROUP BY 절
- 그룹으로 묶어주는 역할
- 집계함수와 함께 사용
- 효율적인 데이터 그룹화
- 자주 사용되는 집계함수
- AVG(), MIN(), MAX(), COUNT(), SUM() 등
- 읽기 좋게 하기 위해 별칭(Alias) AS 사용
HAVING 절
- WHERE와 비슷한 개념으로 조건 제한하는 것이지만, 집계 함수에 대해서 조건을 제한하는 것
- WHERE 절 뒤에는 집계함수를 쓸 수 없다.
- ⇒ HAVING 절 써주면 뒤에 집계함수 사용가능
- HAVING 절은 꼭 GROUP BY 절 다음에 나와야함 (순서 바뀌면 안됨)
SELECT userID AS'사용자 아이디', SUM(amount) AS'총 구매'
FROM buytbl GROUP BY userID;
-- 각 userID의 amount를 다 더해서 알려준다.
SELECT userID AS'사용자 아이디', SUM(amount * price) AS'총 구매액'
FROM buytbl GROUP BY userID;
SELECT userID, AVG(amount) AS '평균구매개수'
FROM buytbl GROUP BY userID;
SELECT name, height
FROM usertbl
WHERE height = (SELECT MAX(height)FROM usertbl)
OR height = (SELECT MIN(height)FROM usertbl);
-- 키가 제일 큰사람과 제일 작은사람 둘을 불러온다.
SELECT COUNT(*) FROM usertbl; --갯수
SELECT COUNT(mobile1) FROM usertbl;
SELECT userID AS'사용자' , SUM(price*amount) AS'총 구매액'
FROM buytbl GROUP BY userID
HAVING SUM(price * amount) > 1000;
SELECT userID AS'사용자' , SUM(price*amount) AS'총 구매액'
FROM buytbl GROUP BY userID
HAVING SUM(price * amount) > 1000
ORDER BY SUM(price*amount) DESC;
ROLLUP
- 총 합과 중간 합 구할 수 있다. num에 null이 들어갈 때 groupName의 중간 합이 나타나고 마지막 열에 총 합이 나타난다.
- GROUP BY 절과 함께 WITH ROLLUP문 사용
SELECT num, groupName, SUM(price * amount)
FROM buytbl
GROUP BY groupName, num
WITH ROLLUP;
SQL분류
DML(Data Manipulation Language, 데이터 조작 언어)
- 데이터를 조작(선택, 삽입, 수정, 삭제)하는 데 사용되는 언어
- DML 구문이 사용되는 대상은 테이블의 행
- DML 사용하기 위해서는 테이블이 정의되어 있어야 함
- SQL문 중 SELECT, INSERT, UPDATE, DELETE 가 이 구문에 해당
- 트랜잭션(Transaction)이 발생하는 SQL도 DML에 속함
- 테이블의 데이터를 변경(입력/수정/삭제)할 때 실제 테이블에 완전히 적용하지 않고, 임시로 적용 시키는 것
- 취소 가능
DDL(Data Definition Language, 데이터 정의 언어)
- 데이터베이스, 테이블, 뷰, 인덱스 등의 데이터베이스 개체를 생성/삭제/변경하는 역할
- CREATE, DROP, ALTER 자주사용
- DDL은 트랜잭션 발생시키지 않음
- 되돌림(ROLLBACK)이나 완전적용(COMMIT) 사용불가
- 실행즉시 MySQL에 적용
DCL(Data Control Language, 데이터 제어 언어)
- 사용자에게 어떤 권한을 부여하거나 빼앗을 때 주로 사용하는 구문
- GRANT/REVOKE/DENY 구문
'빅데이터 분석가 양성과정 > MySQL' 카테고리의 다른 글
MySQL의 데이터 형식 (2) | 2024.07.11 |
---|---|
SQL 기본 쿼리문 ( 2 ) (0) | 2024.07.11 |
유틸리티 사용법 (0) | 2024.07.11 |
MySQL DB Modeling (1) | 2024.07.11 |
MySQL DB 운영 (0) | 2024.07.11 |