반응형
✔️ MySQL 문법
📌주석
#내용 : 한 줄 주석
--내용 : 한 줄 주석
/*내용*/ : 두 줄 이상 주석
📌 CREATE문 (데이터베이스, 테이블 생성)
-- 데이터베이스 생성
CREATE DATABASE [DB이름];
-- 테이블 생성
CREATE TABLE [테이블이름] (
[컬럼이름] [타입] (제약조건),
[컬럼이름] [타입] (제약조건)
);
📌 ALTER문 (데이터베이스, 테이블 수정)
-- 데이터베이스 수정
ALTER DATABASE [DB이름] [DB속성=속성값];
-- 테이블 수정
ALTER TABLE [테이블이름] ADD [컬럼이름] [컬럼타입] (AFTER [기존컬럼이름]) -- 컬럼 추가
ALTER TABLE [테이블이름] DROP [컬럼이름] -- 컬럼 제거
ALTER TABLE [테이블이름] CHANGE [컬럼이름] [새 컬럼이름] [새 컬럼타입] -- 컬럼 변경
ALTER TABLE [테이블이름] CHANGE [컬럼이름] [컬럼이름] [새 컬럼타입] -- 컬럼 M타입만 변경
ALTER TABLE [테이블이름] MODIFY [컬럼이름] [새 컬럼타입] -- 컬럼 타입만 변경
ALTER TABLE [테이블이름] RENAME [새 테이블이름] -- 테이블 이름 변경
- ADD를 사용할 때 AFTER를 이용해 추가하는 컬럼의 위치를 기존 컬럼 다음으로 지정할 수 있다.
📌 UPDATE문 (데이터 수정)
UPDATE [테이블이름]
SET [필드이름1 = 데이터값1], [필드이름2 = 데이터값2], ...
(WHERE [조건]); -- 조건식을 안쓰면 테이블에 해당 레코드가 전부 바뀐다.
📌 DROP문 (데이터베이스, 테이블 자체를 삭제)
-- 데이터베이스 삭제
DROP DATABASE [DB이름] IF EXISTS [DB이름];
-- 테이블 삭제
DROP TABLE [테이블이름] IF EXISTS [테이블이름];
- 테이블의 모든 데이터뿐만 아니라 테이블 자체도 삭제
- IF EXISTS를 사용해 데이터베이스나 테이블이 존재하지 않아 발생하는 에러를 미리 방지하는게 좋다.
📌 DELETE문 (데이터 삭제)
DELETE FROM [테이블이름]
(WHERE [컬럼이름=데이터값]); -- 생략하면 해당 테이블에 모든 데이터 삭제
- 모든 데이터가 삭제되더라도 테이블은 남아 있음
- 복구 가능
- 휴지통 개념으로 트랜잭션 로그를 기록해서 속도가 느리고 테이블 자체 용량이 안 줄어든다.
📌 TRUNCATE문 (데이터 초기화)
TRUNCATE TABLE [테이블이름];
- 테이블 구조는 남기고 데이터만 삭제
- 복구 불가
📌 SELECT문 (데이터 조회)
-- 문법
SELECT (DISTINCT) [컬럼] AS [별명]
FROM [테이블]
WHERE [조건] AND [조건] OR [조건] (IS NULL)
GROUP BY [컬럼] (WITH ROLLUP)
HAVING [GROUP BY에 대한 조건]
ORDER BY [컬럼] ASC or DESC
LIMIT [건너뛸 갯수], [가져올 갯수]
- 컬럼에 임의의 값을 넣어서 불러올 수 있다.
- 정렬은 ASC가 디폴트라 생략 가능하다.
DISTINCT
- 중복을 없앨 때 사용하며 정렬은 되지 않습니다.
SELECT DISTINCT CategoryID
FROM Products;
SELECT
Country,
COUNT(DISTINCT CITY)
FROM Customers
GROUP BY Country
AS
- 해당 컬럼의 원래 이름이 아닌 별명으로 보여줍니다.
GROUP BY
- 조건에 따라 집계된 값을 가져옵니다.
- 그룹 함수와 함께 사용할 수 있습니다.
- 중복을 없애주고 오름차순으로 자동 정렬해줍니다.
SELECT Country FROM Customers
GROUP BY Country;
SELECT
COUNT(*), OrderDate
FROM Orders
GROUP BY OrderDate;
WITH ROLLUP;
- 집계 함수와 WITH ROLLUP을 함께 사용하면 전체의 집계값을 확인할 수 있습니다.
- WITH ROLLUP은 ORDER BY와 함께 사용할 수 없습니다.
HAVING
- GROUP BY로 그룹화된 데이터를 조건식을 통해 걸러냅니다.
- GROUP BY 보다 뒤에 써야합니다.
- WHERE은 그룹화 전 데이터, HAVING은 그룹화 후 집계 데이터에 사용합니다.
SELECT
Country, COUNT(*) AS Count
FROM Suppliers
GROUP BY Country
HAVING Count >= 3;
ORDER BY
- 오름차순 : ASC (기본값)
- 숫자 : 작은 값부터 정렬 (0, 1, 2, …)
- 문자 : 사전 순 정렬 (a, b, c, …)
- 날짜 : 빠른 날짜 순 정렬 (오래된 순)
- NULL : 마지막에 나옴
- 내림차순 : DESC
- 숫자 : 큰 값부터 정렬 (10, 9, 8, …)
- 문자 : 사전 역순 정렬 (z, y, x, …)
- 날짜 : 늦은 날짜 순 (최신 순)
- NULL : 먼저 나옴
IS NULL
- WHERE 과 함께 사용하며 널값을 검색합니다.
SELECT name
FROM user_info
WHERE mobile IS NULL;
📌 INSERT문 (데이터 추가)
-- 특정 컬럼에 데이터 추가
INSERT INTO [테이블이름(컬럼이름1, 컬럼이름2, ...]
VALUES [(데이터값1, 데이터값2, ...)];
-- 테이블 전체에 데이터 추가 (컬럼이름 생략가능)
INSERT INTO [테이블이름]
VALUES [(데이터값1, 데이터값2, ...)];
- 컬럼이름을 생략하는 경우 테이블의 컬럼 순서대로 값이 자동 대입된다.
- 생략 가능한 컬럼
- NULL을 저장할 수 있는 컬럼
- DEFAULT가 설정된 컬럼
- AUTO_INCREMENT가 설정된 컬럼
📌 기타 문법
-- 데이터베이스 목록을 보여줌
SHOW DATABASES;
-- 테이블 목록을 보여줌
SHOW TABLES;
-- 테이블의 컬럼 정보를 보여줌
SHOW COLUMNS FROM 테이블이름;
DESCRIBE 테이블이름;
DESC 테이블이름;
-- 데이터베이스를 사용하기 위해 선택함
USE DB이름;
반응형
'📚 Study > MySQL' 카테고리의 다른 글
[MySQL] 서브쿼리 (0) | 2022.07.02 |
---|---|
[MySQL] 제약조건 (0) | 2022.06.19 |
[MySQL] 함수 (0) | 2022.06.16 |
[MySQL] 연산자 (0) | 2022.06.15 |
[MySQL] 데이터 타입 (0) | 2022.06.15 |