티스토리 뷰
◈ mysql database 접속
-- root 유저 접속
mysql> mysql -uroot
-- mysql db 접속
mysql> use mysql;
-- database 조회
mysql> show databases;
-- table 조회
mysql> show tables;
-- table 구조 조회
mysql> desc db;
◈ root유저 비밀번호 변경
mysql> UPDATE user
SET password = password('storm')
WHERE user = 'root';
Query OK, 2 rows affected (0.28 sec)
Rows matched: 2 Changed: 2 Warnings: 0
user 테이블상에 root 사용자가 localhost와 host명으로 2개 등록 되어 있으므로
2row 의 비밀번호가 변경이 됩니다.
mysql> exit
Bye
C:mysqlbin>mysqladmin reload
-- 비밀번호를 입력해서 접속 해야 합니다.
C:mysqlbin>mysql -uroot -pstorm mysql
◈ database와 유저의 생성
-- database 생성(mysqladmin이용)
C:>mysqladmin -uroot -p create scott
-- database 생성(root유저로 접속)
C:mysqlbin>mysql -uroot -pstorm mysql
-- database 삭제
mysql> drop database scott;
-- database 생성
mysql> CREATE DATABASE scott;
-- user생성
mysql>insert into user (host,user,password) values('localhost','scott',password('tiger'));
mysql>insert into db values('localhost','scott','scott','y','y','y','y','y','y','y','y','y','y','y','y');
-- 변경사항 적용
mysql>flush privileges;
-- user삭제
mysql>DELETE FROM user WHERE user='scott' AND host='localhost';
-- 변경사항 적용
mysql>flush privileges;
-- grant문을 이용해서 사용자를 추가하는 방법
mysql>grant all on scott.* to scott@'localhost' identified by 'tiger';
-- 새로만든 scott db에 scott유저로 접속
C:mysqlbin>mysql -uscott -ptiger scott
-- script파일 실행(Oracle :start, @)
mysql>source C:scott.sql
-- 자주 사용하는 DB 생성 및 권한 설정 문
mysql> CREATE DATABASE scott DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'scott'@'localhost' IDENTIFIED BY 'tiger' WITH GRANT OPTION;
mysql>flush privileges;
◈ 원하는 만큼 데이터 가져오기
-- 앞에서 3개의 데이터를 조회함
mysql>SELECT empno, ename FROM emp LIMIT 3;
-- 2번째 이후의 데이터-부터 2개의 데이터를 조회함
mysql>SELECT empno, ename FROM emp LIMIT 2,2;
◈ Date And Time Functions
◈ String Functions
◈ Numeric Functions
◈ Cast Functions
◈ Other Functions
◈ Group Functions
◈ LEFT OUTER JOIN, RIGHT OUTER JOIN(Oracle : (+) )
mysql>SELECT b.deptno
FROM emp a RIGHT OUTER JOIN dept b
ON a.deptno = b.deptno
◈ SQL실행 결과를 파일로 저장
C:mysqlbin>mysql -uscott -ptiger scott > C:dump.txt
select * from emp;
select * from dept;
exit<!--"<-->
테이블 컬럼 타입
# 날짜 및 시간 관련 컬럼 타입
- 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
# mysql dump restore
mysql -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<!--"<-->
형변환과 관련하여 숫자도 다음과 같이 변경할 수 있습니다.
SELECT CAST(-1 AS UNSIGNED)
-> 18446744073709551615
SELECT CAST(-1 AS SIGNED);
-> -1
어쨌든 유용하게 사용할 수 있는 mysql 명령어 모음입니다.
요즘 oracle보다 mysql을 좀 더 사용하다 보니.. 필요하더라구요~~
그럼. 좋은 하루 되세요~~
'프로그래밍 > MySQL' 카테고리의 다른 글
MySQL 쿼리를 활용해 지도 위치간 거리 계산하기 (0) | 2011.11.08 |
---|---|
MySQL 중지 및 시작하는 명령어 (0) | 2011.09.19 |
MySQL 쿼리 결과를 파일로 저장하기 (0) | 2011.09.03 |
MySQL 데이터베이스 백업 및 복구 (0) | 2011.08.31 |
MySQL noinstall 설치 및 서비스 등록하기 (0) | 2011.08.30 |