목록프로그래밍 언어/SQL(DB) (22)
IT 일기장
난 쿼리 쓸 때 DCL, DDL, DML은 대문자, 컬럼은 소문자로 적는 습관이 있다. 언제였더라.. 소문자로 썼다가 SQL 에러가 난적이 있었는데 MYSQL이 대소문자를 구분하고 있어서 생겼던 원인이었다. 구분을 무시하려면.. show VARIABLES like 'lower%'; 이 쿼리 쳐서 확인해보면 lower_case_table_names가 0이면 구분, 1이면 무시다. Linux인 경우면 바꿀 수 있는데 Windows OS는 어렵다. 왜냐하면 MySQL 공식문서에 lower_case_table_name은 서버를 초기화할 때만 구성할 수 있으며, 서버를 초기화한 후 lower_case_table_names 설정을 변경하는 것은 금지된다(prohibited). 이렇게 써있어서.. 재설치해야 될 듯 싶다
테이블에 대한 설명을 포함한 CREATE TABLE 문이다. 타이핑 귀찮아서 복사해놓고 수정해서 써야지. CREATE TABLE t_member_log ( ml_idx BIGINT(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '회원접속로그 인덱스', ml_id VARCHAR(20) NOT NULL COMMENT '아이디', ml_type VARCHAR(60) NOT NULL COMMENT '회원유형', ml_ip VARCHAR(192) NOT NULL COMMENT '접속IP', ml_device VARCHAR(150) NOT NULL COMMENT '경로(컴퓨터,휴대폰)', ml_window VARCHAR(150) NOT NULL COMMENT '운영체제(Win..
여러가지 프로젝트를 해봤던 것 중에 8월 31일까지 우수과학도서에 대한 데이터를 엑셀파일로 보내달라는 요청건이 있었다. CSV를 이용해서 할 수 있는 방법이 있는데 ... 잘 안보이지만 이 구문만 익혀두면 쉽다 INTO OUTFILE '/var/lib/mysql-files/myplist.csv' -- csv 파일을 출력하고자 하는 경로 CHARACTER SET utf8 -- 언어 타입 설정 FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' -- '|'로 구분하고 구분지운 문자열 타입들을 ""로 감싼다 ESCAPED BY '\\' -- '\\'일 경우 끝 LINES TERMINATED BY '\n' -- 줄바꿈은 "\n"으로 표시 SELECT 다음에 나오는 '::..
-- 컬럼명 변경 (bd_ext3 -> bdExt3) ALTER TABLE t_board CHANGE bd_ext3 bdExt3 text; -- 컬럼 순서 변경 (bd_ext2 컬럼을 bd_ext3 왼쪽으로) ALTER TABLE t_board MODIFY bd_ext3 text AFTER bd_ext2; -- 컬럼 디폴트값 변경 ALTER TABLE t_board ALTER COLUMN bd_ext3 SET DEFAULT NULL; -- 컬럼 타입 변경 ALTER TABLE t_board MODIFY bd_ext3 varchar(30); -- 컬럼 추가 ALTER TABLE t_board ADD bd_ext4 text DEFAULT NULL; -- 컬럼 삭제 ALTER TABLE t_board DROP..
Ctrl + F7 필요해서 정리해둔다. 두고두고 써야지
오라클의 경우 UPDATE, DELETE, INSERT 문을 실행하고 COMMIT, ROLLBACK를 지정할 수가 있다. 오라클 초기 설치시 자동으로 COMMIT을 하지 않기 때문이다. 이에 비해 MSSQL은 자동 COMMIT을 한다. COMMIT 실행하지 않아도 자동으로 시스템에서 COMMIT을 하기 때문.. (물론 설정을 바꿀수는 있지만 그렇게 사용하는 사람이 많지 않을 거라는 개발팀 이사님의 말씀..) 결론은 MSSQL에서 ROLLBACK은 할 수가 없다. ROLLBACK을 할수 있는 경우는 BEGIN TRAN를 사용하여 UPDATE, DELETE, INSERT 한 경우다. 아래 경우처럼 사용한 후 데이터가 이상이 없으면 COMMIT 이상이 있는 경우 ROLLBACK을 하면 끝. BEGIN TRAN..