1. SELECT문
데이터의 내용을 검색, 추출
데이터베이스에서 원하는 데이터를 가져와 주는 SELECT .. FROM ..
많이 사용되는 구조: SELECT 열 이름 FROM 테이블 이름 WHERE 조건
데이터베이스를 선택했을 때: SELECT * FROM title;
데이터베이스를 선택하지 않았을 때: SELECT * FROM employees.title;
데이터베이스에서 여러 열도 선택 가능: SELECT first_name, last_name, gender FROM employees
2. USE
USE 데이터베이스이름 or 데이터베이스 더블클릭 => 데이터베이스 이름이 볼드처리됨
이렇게 데이터 베이스를 지정하면 "지금부터 이 DB만 사용할 것이니 모든 쿼리는 이 DB에서 수행하라"라는 의미
3. 주석
한 줄 주석: '-- ' 여러 줄 주석: /* */
4. DESCRIBE
DESCRIBE 테이블이름: 테이블에 대한 정보를 보여줌(어떤 열이 있고, 각 열의 자료형 등등)
5. SHOW TABLE STATUS
현재 선택된 데이터베이스 안에 있는 테이블에 대한 정보들을 보여줌(테이블 이름, 자료량 등등)
6. PK, FK
PK: prime key
FK: foreign key
7. WHERE
특정한 조건의 데이터만 조회하는 예약어 SELECT * FROM usertbl WHERE name = '김경호';
8. AND, OR, BETWEEN .. AND, IN: 관계 연산자도 사용 가능
SELECT userID, Name FROM usertbl WHERE birthYear >= 1970 AND height >= 182;
SELECT name, addr FROM usertbl WHERE addr IN ('경남', '전남', '경북'); =>OR로 하지 않아도 IN( )으로 써도 됨
9. LIKE
SELECT name, height FROM usertbl WHERE name LIKE '김&'; -> 김 뒤에 아무 글자나 와도 됨
SELECT name, height FROM usertbl WHERE name LIKE '_종신'; -> 종신 앞에 딱 한 글자만 와야 함
10. 서브쿼리: 쿼리문 안에 또 쿼리문이 있는 것(하위쿼리)
SELECT name, height FROM usertbl WHERE height > (SELECT height FROM usertbl WHERE Name = '김경호');
11. ORDER BY: 원하는 순서대로 정렬하여 출력
SELECT name, mDate FROM usertbl ORDER BY mDate; -> 기본이 ASC
내림차순 하려면 ORDER BY height DESC, name ASC 이렇게도 사용 가능
-> 키 내림차순 정렬 후, 키가 같다면 이름 오름차순
12. DISTINCT
중복된 것은 하나만 남기는 예약어 SELECT DISTINCT addr FROM usertbl;
13. LIMIT
결과물의 개수를 제한하는 예약어, 상위 N개만 출력
SELECT name, mDate FROM usertbl ORDER BY mDate LIMIT 5;
SELECT name, mDate FROM usertbl ORDER BY mDate LIMIT 0, 5; -> 0번째부터 5개 출력
14. CREATE TABLE .. SELECT
다른 테이블을 복사해서 사용(일부 열 복사 가능), PK나 FK는 복사가 되지 않음
CREATE TABLE 새로운 테이블 이름 (SELECT 복사할 열 FROM 기존테이블);
15. GROUP BY
SELECT userID, SUM(amount) FROM buytbl GROUP BY userID;
SELECT userID AS '사용자 아이디', SUM(amount) AS '총 구매 개수' FROM buytbl GROUP BY userID; ->별칭도 가능
SELECT userID AS '사용자 아이디', SUM(amount * price) AS '총 구매액' FROM buytbl GROUP BY userID;
16. 집계 함수
GROUP BY랑 같이 사용되는 경우가 많음
SUM( ), AVG( ), MIN( ), MAX( ), COUNT( ), COUNT(DISTINCT)
17. HAVING
WHERE과 비슷하게 조건을 제한하지만, HAVING은 집계 함수에 대한 조건을 제한하는 것
꼭 GROUP BY 다음에 나와야한다
SELECT userID AS '사용자 아이디', SUM(amount * price) AS '총 구매액' FROM buytbl GROUP BY userID
HAVING SUM(price * amount) > 1000 ORDER BY SUM(price * amount);
18. INSERT
테이블에 데이터를 삽입하는 명령어
CREATE TABLE testTbl1 ( id int, userName char(3), age int);
INSERT INTO testTbl1 VALUES (1, '홍길동', 25);
다른 테이블에서 데이터를 가져와 삽입할 수 있음: INSERT INTO ... SELECT .. ;
19. AUTO_INCREMENT
자동으로 1부터 증가하는 값을 입력해줌
AUTO_INCREMENT로 지정된 열은 INSERT문에서 NULL 값으로 지정하면 자동으로 값이 입력됨
CREATE TABLE testTbl1 ( id int AUTO_INCREMENT PRIMARY KEY, userName char(3), age int);
INSERT INTO testTbl1 VALUES (NULL, '홍길동', 25);
20. UPDATE
기존에 입력되어 있는 값을 변경하기 위해 사용
WHERE절을 생략해도 되긴 하지만 테이블의 전체의 행이 변경되어 버린다.
UPDATE 테이블 이름 SET 열1 = 값1, 열2 = 값2 ... WHERE 조건;
21. DELETE
행 단위로 삭제
DELETE FROM 테이블 이름 WHRER 조건;
22. 조건부 데이터 입력, 변경
SQL의 분류
1. DML: 데이터 조작 언어
SELECT, INSERT, UPDATE, DELETE
2. DDL: 데이터 정의 언어
테이블, 뷰, 인덱스 등의 데이터베이스 개체를 생성, 삭제, 변경
CREATE, DROP, ALTER
3. DCL: 데이터 제어 언어
사용자에게 권한을 부여하거나 빼앗을 때 주로 사용하는 구문
GRANT, REVOKE, DENY
'🔻Back-End > Database' 카테고리의 다른 글
[ERD] ERD 작성 시 주의할 점 (0) | 2022.10.22 |
---|---|
[MySQL Error] Datagrip에서 Communications link failure 오류 (0) | 2022.10.06 |
[MySQL] ubuntu에서 MySQL 계정 새로 만든 후 권한 부여 (0) | 2022.10.06 |
[MySQL] 이것이 MySQL이다 7장 스터디 (0) | 2022.04.05 |
[MySQL] 이것이 MySQL이다 5장 스터디 (0) | 2022.03.26 |