본문 바로가기
Web programming/SQL & DB

[MySQL] 기본 문법, Oracle SQL과의 차이

by Skilly 2020. 5. 8.

 

 

 

 

 

- DataBase : 데이터가 실질적으로 적재되는 테이블들을 분류하는 상위 개념

Table : 데이터가 실질적으로 저장되는 저장소

Schema : 테이블에 적재될 데이터의 구조와 형식을 정의 하는 것

 

 

 

 

MySQL 사용 시 (Oracle SQL과 다름) 주의

 

- DB를 사용한다고 지정하지 않을 경우 테이블 사용 시, 테이블명과 함께 DB명을 반드시 기재해야 한다.

 

- ORACLE SQL과 달리 별도 COMMIT없이 자동 업데이트하도록 설정 가능하다.

 

- 문자 데이터타입은 기본적으로 UTF-8이므로 CHAR, VARCHAR에 N형식 없다. 

 

- 테이블의 데이터를 쿼리할 때 대/소문자를 구분하기 때문에 오류나지 않도록 작성한다. (Workbench 환경 설정에서 표기관련 설정 가능)

 

- 다중 행에 영향을 주는 쿼리를 실행하고자 한다면 안전모드를 해제해야 한다.

SET SQL_SAFE_UPDATES = 0;  -- 안전모드 해제

안전한 쿼리 실행을 위해 데이터 조작 쿼리가 다중 행에 영향을 주는 것을 사전에 막아두고 있기 때문에 update, delete 쿼리문을 실행할 때 2개 이상의 행에 영향을 주는 쿼리는 오류가 발생한다. 

update Notice set pub=0 where pub is null;

Error Code: 1175. You are using safe update mode and you tried to update 
a table without a WHERE that uses a KEY column. 

SET SQL_SAFE_UPDATES = 0;

 

 

 

 

MySQL 기본 문법


 데이터베이스 

 

데이터베이스 생성

CREATE DATABASE `데이터베이스명` CHARACTER SET utf8 COLLATE utf8_general;

 

데이터베이스 리스트 조회

SHOW DATABASE;

 

데이터베이스 중 특정 DB 사용

USE DBNAME;

 

 

 

 테이블 

(테이블명은 Member와 Notice로, 데이터베이스명은 dbname이라고 예를 들겠다.)

 

 

테이블 리스트 조회

SHOW TABLES;

 

테이블 스키마 열람

DESC dbname.Member; 

 

테이블 제거

DROP TABLE dbname.Member;

 

특정 테이블의 전체 데이터 조회

SELECT * FROM dbname.Notice;

 

테이블에 데이터 삽입

INSERT INTO dbname.Notice (title, writerId, content, regdate, hit, files, pub) VALUES('my sql~~', 'idxx', '컨텐츠 내용', '2020-05-08', 70, null, null);


테이블의 데이터 수정

UPDATE dbname.Notice SET writerId = 22 WHERE ID = 'idxx';

 

테이블 별칭 지정하여 조인

SELECT n.*, m.name writerName
FROM dbname.Member m RIGHT JOIN dbname.Notice n
ON m.membeUid = n.writerId;

 


 

 

데이터타입 

CHAR( ) 0 to 255 고정문자 길이
VARCHAR( ) 0~65535 가변 문자 길이
TINYTEXT 최대 255 문자길이
TEXT 최대 65535 문자길이
BLOB 최대 65535 문자길이
MEDIUMTEXT 최대 16777215 문자길이
MEDIUMBLOB 최대 16777215 문자길이
LONGTEXT 최대 4294967295 문자길이
LONGBLOB 최대 4294967295 문자길이

 

TINYINT( ) -128 ~ 127 정수형
0 ~ 255 정수형, UNSIGNED
SMALLINT( ) -32768 ~ 32767, 정수형
0 ~ 65535, 정수형, UNSIGNED
MEDIUMINT( ) -8388608 to 8388607, 정수형
0 to 16777215 , 정수형, UNSIGNED
INT( ) -2147483648 ~ 2147483647 정수형
0 ~ 4294967295, 정수형, UNSIGNED
BIGINT( ) -9223372036854775808 ~ 9223372036854775807, 정수형
0 ~ 18446744073709551615, 정수형, UNSIGNED.
FLOAT 작은 부동소수점
DOUBLE( , ) 큰 부동소수점
DECIMAL( , )  

 

DATE YYYY-MM-DD.
DATETIME YYYY-MM-DD HH:MM:SS.
TIMESTAMP YYYYMMDDHHMMSS.
TIME HH:MM:SS.

 

ENUM ( ) 정해진 값을 강제
SET  

 

 

 

 

 

 

 

 

 

 

 

참고자료

Opentutorials

MySQL 5.7 Reference Manual

 

 

반응형