본문 바로가기
DataBase/MySQL

[본문스크랩] mysql 초보 입문 가이드

by 백룡화검 2010. 4. 24.

1. 주요 파일들
mysqld.exe MySql 데몬
mysql.exe  MySql Client
mysqladmin.exe 데이터베이스 생성,삭제,갱신,reload,shutdown을 할때 사용합니다.
mysqlshow.exe mysql.exe로 접속하지 않은 상태에서 정보를 볼 때 사용합니다.
mysqldump.exe 백업받을때 사용하는 유틸
isamchk.exe 테이블 정보 보기, 점검,최적화 복구등의 기능을 가진 유틸

해당 디비폴더 아래에 존재하는 파일
.frm 파일은 테이블의 구조를 저장하고 있는 파일이다.
.MYD 파일은 테이블에 저장되어있는 데이터 파일이다.
.MYI 파일은 테이블에 저장되어있는 데이터의 인덱스 파일이다.


2. Mysql 접속
  mysqld를 실행 (데몬 실행)
    예 d:\mysql\bin\mysqld.exe 엔터( "d:\mysql\bin\" 처럼 명령 프롬프트가 나타나지 않으면 정상)
  데몬에 접속하기 위한 클라이언트 실행
  데몬을 실행시킨 도스창에서는 더이상 명령을 입력할 수 없으므로 다시 도스창을 하나 더 연다.
  mysql -h localhost -u root -p database명
  로칼이므로 host는 생략, root의 암호가 초기에는 없으므로 암호 생략하면 접속명령은 다음과 같다.
    d:\mysql\bin\mysql -u root (root 사용자로 접속)
  처음 mysql을 설치하고 접속할 때는 root 사용자의 암호가 없다.
  접속을 한뒤 root의 비밀번호를 변경

3. root의 설정
  root로 접속을 했으니 비밀번호를 변경해보죠
  use mysql (mysql DB를 사용)
  update user set password = password('변경하고픈 비밀번호') where user = 'root';
  password('')이렇게 입력을 하면 비밀번호가 암호화되어 들어간다.
  
  비밀번호를 바꿨으므로 mysql을 갱신해야 비밀번호가 적용된다.
  mysql>exit (mysql 클라이언트를 빠져나옴)

  d:\mysql\bin\mysqladmin -u root reload (mysql디비를 새로 읽음)
  또는 mysql> flush privileges;
 
  이제부터 클라이언트로 접속을 할땐 비밀번호를 요구한다.
  d:\mysql\bin\mysql -u root -p mysql
  비밀번호 입력요구: 등록한 비밀번호 입력을 해야 mysql에 접속

  mysql을 처음 설치하면 test DB와 test사용자가 있다. 필요없는 사용자이므로 삭제해도 무방하다.
  d:\mysql\bin\mysqladmin -u root -p drop test ( test DB 삭제 )
  root로 접속한다.
  mysql>delete from user user=''; ( user가 없는 레코드 삭제 )
  mysql>delete from db; (처음 접속을 하면 db테이블에는 test디비가 존재한다. 이것도 필요없으므로 삭제해도 무방)
  mysql>exit
  d:\mysql\bin\mysqladmin -u root -p reload (갱신)

  데이터베이스와 사용자 관계 설정에는 db, user 테이블 사용


4. 각종 유틸
  mysqldump를 이용한 데이타베이스 백업
    mysqldump -u root -p암호 sampleDB > sampleDB.sql (bin/폴더 밑에 생성됨 )
  데이타베이스내의 특정 테이블만 백업
    mysqldump -u root -p암호 sampleDB board > sampleDB_board.sql
  백업받은 자료 복구
    mysql -u root -p암호 sampleDB < sampleDB.sql
  mysqlimport로 파일내용을 데이타베이스로 insert하기
  mysqlimport는 텍스트 파일을 데이터베이스에 저장시켜주는 유틸입니다.
    mysqlimport -u root -p --fields-terminated-by=; sampleDB board board.txt
    board.txt의 내용을 sampleDB의 board테이블에 insert 파일내의 필드 구분은 ';'
  mysqlshow를 이용해서 데이터베이스와 테이블 정보보기
  mysqlshow는 다야한 정보를 보여주는 유틸
    mysqlshow -u root -p sampleDB (sampleDB 데이타베이스에 존재하는 테이블리스트를 보여줌 )
    mysqlshow -u root -p sampleDB board ( 데이타베이스의 테이블의 필드구조와 레코드 갯수를 보여줌)
  isamchk를 이용한 테이블 점검
    isamchk ../data/sampleDB/board.ism ( board테이블 점검)
    isamchk ../data/sampleDB/*.ism
    isamchk ../data/*/*.ism
5. Tip
   mysql에러메세지가 한글로 나오게 하고싶을때
     mysqld --language=korean
    
   window 서비스에 mysql를 등록
     mysqld-max-nt -install
     MySQL-Max 버전에는 Innodb 라는 테이블 타입이 있는데
     Transaction 기능과 foreign key 기능이 innodb 테이블타입에서 지원이 된다.
     mysql 서비스 데몬을 수행
      net start mysql
     mysql 서비스 데몬 중지
      net stop mysql
     
   window 서비스에서 mysql를 삭제
     mysqld -remove
    
   load data 명령을 이용한 파일내의 내용을 인서트
     load data infile "파일명" into table 테이블명
     파일은 mysql\data\해당 디비 폴더에 가져다 놓는다.
     파일내의 데이터는 탭으로 분리
     sample.txt
     홍길동 20 19700210 honggd@yahoo.co.kr
     ..

   mysql>load data infile "sample.txt" into table user

   한글 정렬
   Windows 용 MySQL 은 소스를 컴파일하여 설치하는 것이 아니라 컴파일 되어있는 상태를 가져와서 설치하는 것이기 때문에 한글정렬을 할 경우 올바른 결과치를 얻을 수 없다.
   만약 한글 정렬이 안된다면 한글 정렬이 필요한 테이블에 binary 옵션을 부여하여 한글 정렬이
   가능하게 만들 수도 있지만 별로 권하고 싶지 않은 방법이다. MySQL 을 윈도우에 설치하게 되면
   Windows 설치 디렉토리 인 c:\winnt 디렉토리에 my.ini 라는 파일을 만들어 준다.
   이 파일에 아래의 내용을 추가하여주고 MySQL 대몬을 다시 시작하여 주면 된다.
   [mysqld]
   basedir=d:/mysql
   datadir=d:/mysql/data
   default-character-set=euc_kr    // 추가한 부분  
  
6. mysql시작
  d:\mysql\bin\mysqladmin -u root -p create sampleDB (sampleDB 데이타베이스 생성)
 
  사용자 추가 
  mysql>insert into user (host,user,password) values('%','tester','password('test'));
  mysql>insert into user (host,user,password) values('localhost','tester','password('test'));
  host가 %는 어디서나 접속할수 있게 한다는 의미
 
  생성한 디비에 사용자 등록
  mysql>insert into db (host,user,password) values('%','sampleDB','tester','y','y','y','y','y','y')
  tester라는 계정이 sampleDB라는 데이타베이스의 사용을 허락
  tester라는 계정은 오직 sampleDB만 접근할 수있다. 
 
  Data Retrieval Language - Select
  Data Manipulation Language - Insert, Update, Delete, Commit, RollBack
  Data Definition Language - Create, Alter, Drop
  Data Control Language - Grant, Revoke, Lock
 
  테이블 생성
  create table 테이블명 (컬럼1 데이터형, 컬럼2 데이터형, ….)
 
  데이타 삽입
  insert into 테이블명 (컬럼1,컬럼2,..) values (값1,값2,…)
 
  데이타 수정
  update 테이블명 set 컬럼명=value, …. where 조건

  데이타 검색
  select 컬럼명 from 테이블명

  테이블 구조 보기
  desc 테이블이름;
  show columns from 테이블이름;
  explain 테이블이름;


  테이블에 컬럼 추가 삭제
  alter table 테이블명 add 컬럼명 데이터형
  alter table 테이블명 drop 컬럼명

  결과값의 제한 LIMIT
  LIMIT 절은 특정 인덱스 번호를 지정하여 몇 개의 결과값을 불러올 수도 있다.
  Select * from employees order by salary desc LIMIT 2, 3;
  mysql의 인덱스 번호는 0부터 시작한다.
  그러므로 위의 select 명령은 급여가 높은순으로 정렬해서 세번째레코드부터해서 세개를 가져오라는 의미이다.\
  오라클에서는 rownum을 사용해서 필요한 레코드를 가져올수 있다.
  오라클에서는 1부터 시작

 

7. mysql의 자료형
 
  정수형 
  자료형                  비트    크기
  tinyint              1        -128 ~ 127
  smallint              2        -32768 ~ 32767
  mediumint              3        -8388608 ~ 8388607
  int(integer)          4        -2147483648 ~ 2147483647
  Bigint              8        -2147483648 ~ 2147483647

  실수형                                       
  자료형                  비트    크기                           
  float                  4        -10^38 ~ 10^38-1                 
  double(real, decimal)  8        -10^308 ~ 10^308-1
 
  문자 자료형                                
  자료형           설명                               
  char(m)       1 ~ 255 개의 문자 저장             
  varchar(m)      1 ~ 255 개의 가변 길이 문자 저장
  text           65535 개의 문자 저장               
  midiumtext      16777215 개의 문자 저장        
  longtext       4 GB 의 문자 저장              
  tinyblob       255 개의 binary 문자 저장      
  blob           65535 개의 binary 문자 저장        
  mediumblob   16777215 개의 binary 문자 저장 
  longblob       4 GB 의 binary 문자 지정       
 
  자료형           설명                                                
  date           년, 월, 일                                          
  datetime       년,월,일,시,분,초                               
  time           시,분,초                                            
  timestamp       1970년 1월 1일 이후의 경과된 시간을 초단위로 표시
  year           년 을 저장