본문 바로가기
데이터베이스

[MySQL] MySQL 기초 문법 정리

by aesup 2023. 8. 21.
728x90

ORACLE 만 사용하고 MYSQL 은 실무에서 처음 쓰게되어 정리를 시작한다

 

MySQL 에서 키워드와 구문, 문자열은 대소문자를 구분하지 않는다.

MySQL 에서 테이블 명과 필드의 이름은 대소문자를 구분한다.

 

데이터베이스 생성 

CREATE DATABASE ACCOUNT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

ci 는 대소문자를 구분하지 않게 설정하는것이다

 

데이터베이스 선택

USE ACCOUNT;

 

데이터베이스 삭제

DROP DATABASE ACCOUNT;

 

테이블 생성

CREATE TABLE TB_NEWS_LIST 
(
	ID 		INT		AUTO_INCREMENT PRIMARY KEY,	
	NEWS_CATEGORY	INT,									
	MEDIA_CODE 		VARCHAR(50),							
	MEDIA_NAME		VARCHAR(100),							
	NEWS_CODE		VARCHAR(100)	UNIQUE KEY NOT NULL,	
	NEWS_TITLE		VARCHAR(1000),							
	NEWS_SUMMARY	TEXT,									
	NEWS_CONTENT	TEXT,									
	NEWS_THUMB_URL	VARCHAR(1000),							
	NEWS_URL		VARCHAR(500),							
	NEWS_REG_DATE	DATETIME,								
	REG_DATE		DATETIME						
) DEFAULT CHARSET=utf8;

 

테이블 삭제

DROP TABLE TB_NEWS_LIST

 

테이블에 필드 추가

ALTER TABLE USER ADD PHONENUMBER INT;

 

테이블 행 선택

SELECT *
  FROM TB_NEWS_LIST;

 

테이블 행 내용 수정

UPDATE USER 
   SET AGE = 30
 WHERE NAME = '이름';

테이블 행 삭제

DELETE FROM USER
 WHERE NAME = '이름';

다중 테이블 연산

INNER JOIN: 기준이 되는 테이블 (left table)과 join이 걸리는 테이블(right table) 양쪽 모두에 matching되는 row만 select가 됨.

LEFT JOIN: 기준이 되는 테이블 (left table)의 모든 row와 join이 걸리는 테이블(right table)중 left table과 matching되는 row만 select가 됨.

RIGHT JOIN: join이 걸리는 테이블(right table)의 모든 row와 기준이 되는 테이블 (left table)에서 right table과 matching되는 row만 select가 됨.

FULL (OUTER) JOIN: 기준이 되는 테이블 (left table)과 join이 걸리는 테이블(right table) 양쪽 모두의 모든 row를 select 한다.

 

SELECT USERS.ID,
 	   USERS.NAME,
       USERS.AGE,
       USERS.GENDER,
       ACCOUNTS.ACCOUNT_TYPE
  FROM USERS 
  JOIN ACCOUNTS 
    ON ACCOUNTS.ID = USERS.ACCOUNT_ID

 

SELECT <열 목록>
FROM <첫 번째 테이블(LEFT)>
    <LEFT | RIGHT | FULL> [OUTER] JOIN <두 번째 테이블(RIGHT)>
    ON <조인 조건>
[WHERE 검색조건];

OUTER JOIN 앞에 LEFT를 쓰면 첫 번째 테이블의 내용은 두 번째 테이블과 연계되는 내용이 없더라도 모두 검색되어야 한다는 뜻입니다. RIGHT는 두 번째 테이블의 내용은 모두 검색되어야 한다는 뜻이고 FULL은 모든 테이블의 내용이 모두 검색되어야 한다는 뜻입니다. OUTER는 생략 가능합니다.

 

OUTER  조인 예시

SELECT U.userID,
       U.addr, 
       U.phoneNumber, 
       B.prodID
  FROM userTBL U
  LEFT OUTER JOIN buyTBL B
    ON U.userID = B.userID
 WHERE B.prodID IS NULL
 ORDER BY U.userID;

OUTER JOIN을 이용하면 구매내역이 없는 유저만을 검색할 수 있다

728x90