[MySQL]MySQL 명령어 정리 2 2 10 20,393

by 김정식 [MySQL 노하우/팁/자료] MYSQL [2003.07.09 00:00:00]


참고 : Kimho의 MySQL로 배우는 데이터베이스 프로그래밍


테이블 컬럼 타입
 

# 날짜 및 시간 관련 컬럼 타입 

 - DATE
   날짜를 표현하는 유형 [YYYY-MM-DD], 1000-01-01 ∼ 9999-12-31까지 나타낼 수 있

 - DATETIME
   날짜와 시간을 표현하는 유형 [YYYY-MM-DD HH:MM:SS],  1000-01-01 00:00:00 ∼ 9999-12-31 23:59:59

 - TIMESTAMP
   자동변경 컬럼 타입(4 Byte ),  1970-01-01 00:00:00부터 2037년 까지 표현

 - TIME
   시간을 표현하는 유형 [HH:MM:SS],   839:59:59 ∼ 833:59:59 까지 표현

 - YEAR
   년도를 표현하는 유형[기본적으로 4자리로 사용],  1901년 ∼ 2155년


# 문자 컬럼 타입

 - CHAR(M)
   고정길이 문자열 컬럼,   M의 범위는 0 에서 255까지.

 - VARCHAR(M)
   가변길이 문자열 컬럼,   M의 범위는 0 에서 255까지.

 - TINYBLOB 또는 TINYTEXT
   최대길이 255개의 문자를 저장

 - BLOB 또는 TEXT
   최대 길이가 63535인 문자를 저장

 - MEDIUMBLOB 또는 MEDIUMTEXT
   최대 길이가 16777215인 문자를 저장

 - LONGBLOB 또는 LONGTEXT
   최대 길이가 4294967295(4G)인 문자를 저장


 * 참고

  - BLOB(Binary Large Object의 약자
  - BLOB타입은 대소문자를 구분하고 TEXT타입은 대소문자를 구분하지 않는점이 틀림
  - MySQL 3.23.2이번 버전에서는 BLOB와 TEXT컬럼에는 인덱스를 만들수 없다
  - BLOB와 TEXT컬럼의 저장시에 문자열 됫부분의 공백이 제거되지 않는다.
  - BLOB와 TEXT컬럼은 DEFAULT를 지정할 수 없다.


# 숫자 컬럼 타입
 
 - TINYINT
    -128부터 127 까지의 정수형 타입,   부호가 없는 정수 0∼255까지 지원

 - SMALLINT
    -32768부터 32767 까지의 정수형 타입,  부호가 없는 정수 0∼65535까지 지원

 - MEDIUMINT
    -8388608부터 8388607 까지의 정수형 타입,   부호가 없는 정수 0∼16777215까지 지원

 - INT 또는 INTEGER
   -2147483648부터 2147483647까지의 정수형 타입,  부호 없는 정수 0∼4294967295까지 지원

 - BIGINT
   -9223372036854775808 부터 9223372036854775807 까지의 정수형 타입
   부호 없는 정수 0∼18446744073709551615까지 지원

 - FLOAT(M,D)
   단정도 부동 소수점 실수,   -3.402823466E+38 ∼ -1.175494351E-38
   그리고 1.175494351E-38 ~ 3.402823466E+38까지  M은 숫자 전체의 길이, D는 소수점 자리수를 의미

 - DOUBLE(M,D)
   2 배 정밀도를 가진 부동 소수점 실수,   -1.79769313486231517E+308 ∼ 2.22507385850720E+308



제약조건

 
# AUTO_INCREMENT(Oracle : Sequence)

-- 생성예제
mysql>CREATE TABLE sal(
           sal_id INT NOT NULL AUTO_INCREMENT,
           name VARCHAR(30) NOT NULL);

 - AUTO_INCREMENT로 지정된 컬럼 타입은 숫자형이어야 한다 .
 - AUTO_INCREMENT는 하나의 테이블에 하나의 컬럼만 지정할 수 있음
 - AUTO_INCREMENT로 지정된 컬럼은 반드시 키 또는 인덱스로 정의되어야 한다.


# NOT NULL : NULL값을 허락하지 않음

# PRIMARY KEY : 중복된 데이터를 허락하지 않음, NOT NULL 조건도 추가

# UNIQUE : 중복돈 데이터를 허락하지 않음, NULL값을 허락한다.

# DEFAULT value : 디폴트 값을 지정함    


-- 예제..
mysql>CREATE TABLE emp2(
            id INT(3) NOT NULL,
            name VARCHAR(30) NOT NULL
            sal INT(5) DEFAULT 0,
            loc VARCHAR(50),
            PRIMARY KEY(id, name));



SELECT 문을 이용하여 테이블 생성하기

-- Syntax
mysql>CREATE TABLE new_table SELECT column_list FROM old_table WHERE condition;

-- 예제
mysql>CREATE TABLE emp3 SELECT * FROM emp WHERE deptno = 10;



테이블 변경하기(ALTER TABLE)


# 컬럼 추가
mysql>ALTER TABLE table_name ADD COLUMN column_name data_type [FIRST|AFTER column_name];


# 컬럼 삭제
mysql>ALTER TABLE table_name DROP COLUMN column_name;


# 컬럼 변경
mysql>ALTER TABLE table_name CHANGE COLUMN  old_column  new_column  new_column_data_type;


# 테이블명 변경
mysql>ALTER TABLE old_table_name RENAME AS new_table_name;


# Primary Key 변경
mysql>ALTER TABLE table_name ADD PRIMARY KEY (column_list);

mysql>ALTER TABLE table_name DROP PRIMARY KEY;



Database 백업


# mysqldump
mysqldump -uscott -ptiger scott > test.sql


# BACKUP TABLE : 테이블을 데이터 파일로 백업함
mysql>BACKUP TABLE table_name[,tbl_name] TO ’/path/directory’


# RESTORE TABLE : BACKUP TABLE로 백업한 데이터를 복구한다.   
mysql>RESTORE TABLE table_name[,tbl_name] FROM ’/path/directory’



참고 (Oracle => MySQL 비교)
 

# NVL => IFNULL


# SELECT SYSDATE FROM DUAL => SELECT NOW();


# TO_CHAR => SELECT CAST(NOW() AS CHAR)

 mysql은 CAST(expression AS data_type)또는 CONVERT(expression,type)로 형변환

 oracle : SELECT TO_CHAR(SYSDATE,’RRRR-MM-DD’) credate FROM DUAL
 mysql : SELECT CAST(DATE_FORMAT(now(),’%Y-%m-%d’) AS CHAR) credate;


# DECODE => CASE 예제..
 SELECT CASE week WHEN 1 THEN ’일요일’ WHEN 2 THEN ’월요일’
                  WHEN 3 THEN ’화요일’ WHEN 4 THEN ’수요일’
                  WHEN 5 THEN ’목요일’ WHEN 6 THEN ’금요일’
                  WHEN 7 THEN ’토요일’ END week
 FROM STORM_COUNTER
 WHERE year = 2002

  ================================================
    * 오라클 정보공유 커뮤니티 oracleclub.com
    * http://www.gurubee.net
    * http://www.oramaster.net
    * 강좌 작성자 : 김정식 (oramaster _at_ naver.com)
  ================================================
※ oracleclub 강좌를 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

참고 : Kimho의 MySQL로 배우는 데이터베이스 프로그래밍

by 김정식 [2003.07.15 23:46:06]
export : mysqldump -ustorm -pxxxx --add-drop-table > storm.txt oramaster

by 김정식 [2003.07.15 23:46:58]
import : mysql -ustorm -pxxxx oramaster < C:\storm.txt

by 김정식 [2003.07.22 15:03:40]
mysql> show processlist ; # 프로세스 리스트

by 김정식 [2003.09.13 11:52:08]
ALTER TABLE table_name ADD INDEX ( column_name )

by 김정식 [2003.10.16 19:33:27]
테이블 데이터 정보 show table status

by 김정식 [2003.10.21 08:49:24]
SELECT CAST('2000-01-01' AS DATE)

by 김정식 [2004.07.21 22:17:15]
load data local infile 'C:/user.txt' into table STORM_AMAUSER fields terminated by ',' (AMAUSER_ID, DBSTS, HANNAME, EMAIL_ADDR, PHONE,CREUSER);

by 김정식 [2007.10.25 19:03:00]
DATE_FORMAT(NOW(), '%Y%m%d%H%i%s')

by 김정식 [2008.07.23 18:59:22]
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

by 준티 [2016.08.24 07:59:40]

감사합니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입