테이블 생성 코드
컬럼명 생성시에 그냥 따옴표가 아니라 키보드에 ~표시 있는 곳의 ` 이녀석을 써줘야한다. 그래야 에러 안남
CREATE TABLE tbl_book (
`book_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR(100) NOT NULL,
`author` VARCHAR(100) NOT NULL DEFAULT '',
`price` INT NULL,
`create_date` DATETIME NOT NULL DEFAULT NOW(),
`update_date` DATETIME NOT NULL DEFAULT NOW() ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`book_id`)
)
COLLATE=`utf8mb4_general_ci`
;
book_id: 책 번호 // INT형, 음수안됨, NULL안됨, 자동으로 숫자 부여(순서대로) // 기본키
title: 책 제목 // VARCHAR형, NULL 안됨
author 저자명 // NULL 안됨, 기본적으로 ''로 기록됨
price: 가격 // INT형, NULL된다.
create_date: 생성한 날짜 // DATETIME형, NULL 안됨, 기본적으로 현재시각 표시
update_date: 수정한 날짜 // DATETIME형, NULL 안됨, 수정 시에 현재시각 표시
utf8mb4_general_ci는 한글 넣을 수 있게 하는 것.
utf8mb4f를 해줌으로써 이모지 같은 4바이트 크기의 문자도 가능!
변경
ALTER TABLE [테이블명] 뒤에는 조건 다름, 필요할때 찾아봐야지
ALTER TABLE tbl_book MODIFY update_date DATETIME NOT NULL DEFAULT NOW() ON UPDATE CURRENT_TIMESTAMP;
실수로 디폴트를 적지 않아서 오류났음... 위에 테이블생성에 코드 바꿔뒀으니 안심!
아무튼 바꿀땐 이렇게 바꾸면 된다.
그리고 컬럼명에 `` 이거 안쓰고 그냥 적어도 된다.
입력
INSERT INTO [테이블] ([컬럼1, 컬럼2, ......]) VALUE ([값1, 값2, .......])
INSERT INTO tbl_book (`title`, `author`, `price`) VALUE ('Do it! HTML+CSS+자바스크립트 웹 표준의 정석', '고경희', 30000);
각각 값을 직접 적어주는 대신 select문으로 넣어 줄 수 있음
수정
UPDATE [테이블] SET [컬럼명] = '변경할 값' WHERE [조건]
UPDATE tbl_book SET author = '쪼리밍';
조건을 안달면 author가 '고경희'인 이름의 행들이 전부 바뀌게 된다.
여기서는 행이 한 개 밖에 없으니까 조건 입력 안했음
삭제
DELETE FORM [테이블] WHERE [조건]
조건대로 테이블 삭제하는건데 그냥 생략한다.
Mysql에 한글 집어넣을때 깨질 수 있기때문에 UTF-8 설정해준다.
DB 자체에 UTF-8 설정
ALTER SCHEMA [데이터베이스 이름] DEFAULT CHARACTER SET utf8 ;
테이블에 UTF-8 설정
mysql > ALTER TABLE [테이블명] convert to character set UTF8;
mysql> 이건
MySQL 8.0 Command Line Client 이거 실행시키면 된다.
생성 및 업데이트 시간 자동 등록
DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
DEFAULT CURRENT_TIMESTAMP : insert 시 자동으로 현재 시각이 들어감
ON UPDATE CURRENT_TIMESTAMP : update 시 자동으로 현재 시각으로 갱신
MySQL에서 시간을 출력하는 방법으로
SYSDATE() : 2022-03-01 15:32:54
NOW() : 2022-03-01 15:32:42
CURRENT_TIMESTAMP() : 2022-03-01 15:32:42
CURRENT_DATE() : 2022-03-01
NOW()와 CURRENT_TIMESTAMP() 동일함
CURRENT_DATE()는 년월일까지
SYSDATE(): 쿼리가 끝난 시각
NOW(): 쿼리를 시작한 시각
* timestamp랑 datetime 차이 알아두기
참고
https://dgblog.tistory.com/206
[DBMS] Mysql 데이터에 한글 넣기
[MySQL] MySQL은 기본 인코딩이 라틴어로 되어 있기에 한글을 사용할 수 있는 인코딩으로 바꿔주어야 한다. UTF-8 : 전 세계의 주요 국가의 언어의 모든 문자를 전부 표현할 수 있는 방식이다. 따라서
dgblog.tistory.com
insert, update시 자동갱신 TIMESTAMP
123456789CREATE TABLE LOG( `idx` INT NOT NULL AUTO_INCREMENT, `ip` VARCHAR(45) NOT NULL, `method` VARCHAR(45) NOT NULL, `url` VARCHAR(45) NOT NULL,
chinsun9.github.io
https://wakestand.tistory.com/481
MySQL SYSDATE NOW 차이
MySQL에서 시간을 출력하는 방법으로 SYSDATE() NOW() CURRENT_TIMESTAMP() CURRENT_DATE() 이렇게 네 가지가 있는데 CURRENT_TIMESTAMP()는 NOW()와 동일하고 CURRENT_DATE()는 년월일까지만 나오기 때문에 SYSD..
wakestand.tistory.com
[MySQL/MariaDB] utf8mb4 언어셋 소개 및 표현범위.
기술이 매우 빠르게 발전한다. 배워도 배워도 계속 배워야 한다. 최근에 라엘이가 앞으로 100년동안은 나타나지 않을 것이라고 예상했던, 4 Byte UTF-8 문자열을 보고 여러 깨닳은 바가 있었고
blog.lael.be
댓글