- 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 |
참고자료
반응형
'Web programming > SQL & DB' 카테고리의 다른 글
트랜잭션(Transaction)의 4가지 특성 ACID (0) | 2020.06.03 |
---|---|
[ORACLE SQL] 데이터 조회 기본 문법 !! (0) | 2020.05.08 |
JOIN (0) | 2020.04.17 |
SQL 페이징 (0) | 2020.04.16 |
집합 연산자로 데이터 레코드를 합하여 출력 (UNION, UNION ALL, INTERSECT, MINUS) (0) | 2020.04.16 |