[MySQL] MySQL 명령어 모음집 > db

본문 바로가기

db

[MySQL] MySQL 명령어 모음집

페이지 정보

작성자 서방님 댓글 0건 조회 24회 작성일 11-06-28 17:50

본문

MySQL 명령어 모음
desc tablename;

// 데이터 베이스를 선택한다.
use databasename;

// 데이터 베이스를 본다.
show databases;

// 테이블을 본다.
show tables;


// 테이블의 필드명을 다른 이름으로 변경
alter table 테이블명 change 기존필드명 바꿀필드명 바뀐필드타입;

// 기존 필드의 타입을 다른 타입으로 변경
alter table 테이블명 modify 필드명 바꿀필드타입;

// 테이블에 새로운 필드 추가
alter table 테이블명 add 추가할필드명 필드타입;

// 추가할 필드를 기존 테이블의 제일 마지막에 위치
alter table 테이블명 add 추가할필드명 필드타입;

//  추가할 필드를 기존 테이블의 제일 첫번째에 위치
alter table 테이블명 add 추가할필드명 필드타입 first;

// 추가할 필드를 기존 테이블의 중간에 위치
alter table 테이블명 add 추가할필드명 필드타입 after 생성될필드가 위치할 앞 필드명;

// 특정한 필드 삭제
alter table 테이블명 drop 삭제할필드명;

// 테이블명 변경
alter table 테이블명 rename 바뀔테이블명;

// 테이블 칼럼 인덱스 속성 부여 : 인덱스 테그명은 나중에 쓰이니 칼럼과 연관시켜서 만들것
alter table 테이블명 add index 인덱스테그명 (인덱스적용할 칼럼)

// 테이블 UNIQUE 인덱스 속성 부여 : 인덱스 테그명은 나중에 쓰이니 칼럼과 연관시켜서 만들것
alter table 테이블명 add unique 인덱스테그명 (인덱스적용할 컬럼)

// 테이블 PRIMARY KEY 속성 부여
alter table 테이블명 add primary key (주키적용할 컬럼)

// 인덱스 속성 제거
alter table 테이블명 drop primary key   // 주키 제거
alter table 테이블명 drop index 인덱스테그명

이 정도면 왼만한 테이블 작업은 할수 있을듯

 
1. Mysql 기본 사용법

->Mysql 데이터베이스 접속하기

# mysql -u root mysql


-> mysql 관리자 root 패스워드 설정하기

# mysql -u root mysql

mysql> update user set password = password('shcm0816') where user = ' root';


-> 빠져나간후 데이터베이스를 재시작

# mysqladmin -u root reload


->패스워드 입력

# mysql -u root -p mysql


< 여러가지 관련 명령어 >


->데이터베이스 확인

mysql> show databases;


->테이블 확인

msyql> show databasestables;

msyql> desc user =>동일한 결과 (db design)


2. 데이터베이스 생성 및 삭제


->데이터베이스 생성

① 첫번째 방법

# mysql -u root -p mysql

    msyql> create database TESTDB;

    msyql> show databases;


② 두번째 방법

# ./mysqladmin -u root -p create testdb2

Enter password:

# ./mysql -u root -p mysql

Enter passwor


cd /

msyql> show databases;

msyql> exit

Bye

#


->데이타 베이스 삭제

# ./mysqladmin -u root -p drop testdb2

Enter password:


mysql> drop database testdb2


# ./mysql -u root -p mysql

msyql> show databases;


3. 새로 생성한 데이터베이스 등록하기

-> 데이터베이스를 새로 생성한 후에는 mysql 이라는 관리용 데이터베이스에 등록

->mysql 이라는 데이터베이스의 db라는 테이블에 TESTDB를 등록한 것

msyql> insert into db  values('%','TESTDB','root','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

(Y 를 17개 넣음. 원래 10개였으나 확인결과 17개)

msyql> select host, db, user from db


4.  Mysql 사용자등록(데이터베이스 소유자)

->mysql 을 사용할 사용자는 반드시 user 라는 테이블에 등록을 해줘야함

msyql> insert into user(host, user, password) values('localhost', 'sspark', password('shcm0816'));


->정상적인 등록여부 확인

msyql> select host, user, password from user;


->sspark이라는 사용자로 mysql 데이터베이스로 접속

msyql> mysql -u sspark -p

Enter password:


->새로운 데이터베이스를 생성하거나 새로운 사용자를 생성한 후에는 반드시 reload를 해줘야함

# mysqladmin -u root -p reload

Enter password:


5. 테이블 생성 및 삭제

msyql> create table testtable (

         ->uid mediumint(4) unsigned DEFAULT '0' NOT NULL auto_increment,

         -> name varchar(12) DEFAULT "" NOT NULL,

         -> email varchar (20) DEFAULT "" NOT NULL,

         -> PRIMARY KEY (uid)

         -> );

Query OK, 0 rows affected (0.00 sec)

msyql>show tables;


-> 필드 구조가 정의한 필드구조로 생성되었는지 확인

msyql> desc testtable;


-> 삭제

msyql> drop table testtable;

mysql> show tables;


6. 테이블속성 및 구조변경법

ALTER TABLE 테이블명 CHANGE[COLUMN] 필드명 필드타입

-> 기존 테이블에 필드 추가하기


mysql> alter table testtable add column homepage varchar(30);

mysql> desc testtable;


-> 기존에 필드 속성 변경하기

ALTER TABLE 테이블명 CHANGE[COLUMN] 기존필드명 새필드명 필드타입

mysql> alter table testtable change column homepage home varchar(50);


-> 기존에 필드 삭제

ALTER TABLE 테이블명 DROP [COLUMN] 필드명

mysql> alter table testtable drop column home;

mysql> desc testtable;


-> 기존의 테이블삭제하기

mysql> create table sampletable

mysql> show tables;

mysql> drop table sampletable;

mysql> show tables;


7. 데이터 입력하기

mysql> insert into testtable (uid, name, email) values (', 'parksungsoo', [email protected]'" target=_blank>'[email protected]');

-> 주의: uid라는 필드는 auto_increment 라는 속성으로 생성했기 때문에 이 속성을 가진 필드들은 실제로 데이터값을 주지 않아도 자동적으로 1씩 증가.


->삽입할 필드는 생략가능

mysql> insert into testtable values('','sontaesoo','[email protected]');

(옮김주석:
uid부분을 (,'ㅁㄴㅇㄹ','ㅁㄴㅇㄹ');와 같이 안넣으면 에러, 0을넣거나 ''로 null 을 채워줘야 한다.
또는 insert into testtable(name,email) values( 'zubilan','[email protected]');와 같이 컬럼을 지정하여
넣어도 auto_increment 속성에 의해 자동으로 1이 증가된 값이 들어간다.
겹치는 값을 넣으면 duplicate 에러: primarykey
없는 숫자를 넣으면 index 에 상관없이 그 값이 들어간다. 이후의 increment 는 방금 넣은 숫자+1이 들어간다.)

->특정 필드에만 데이터를 입력할 경우에는 입력할 필드이름만을 나열 그에 해당하는 데이터 입력

mysql> insert into testtable (uid,name) values(','junwooki');

->정상적으로 입력되었는지 확인

mysql> select * from testtable;


8. 데이터 검색

SELECT(데이터검색하기)

->데이터검색의 일반적인 방법


-> 테이블의 모든 테이터를 검색

mysql> select * from testtable;


-> uid와 name 필드만을 조회

mysql> select uid, name from testtable;

->where문을 사용하여 특정 조건에 맞는 데이터만을 검색

mysql> select * from testtable where name = "sontaesoo";


->출력 결과 레코드의 중복제거하기(DISTINCT)

SELECT DISTINCT sex FROM testtable


->다양한 검색 방법


->'soo'라는 문자가 포함된 데이터를 모두 검색

->SELECT name FROM testtable WHERE name LIKE '%soo%'

mysql> select name from testtable where name LIKE '%soo%';


->특정한  한 문자로 시작하는 데이터만을 출력할 때에 사용하는 조회형식

SELECT name FROM testable WHERE name LIKE 'park%'

mysql> select name from testtable where name LIKE 'park%';


->특정 필드에 데이터가 NULL 인 경우를 조회한것

SELECT uid, name FROM testtable WHERE age IS NULL

mysql>select uid, name from testtable where age IS NULL;


-> 특정 필드의 데이터가 NULL이 아닌 경우

SELECT uid, name FROM testtable WHERE age IS NULL

 mysql>select uid, name from testtable where age IS NOT NULL;


-> SELECT name, uid, email FROM testtable WHERE savem > 5000 AND sex='M'

-> SELECT name, uid, savem FROM testtable WHERE savem >= 5000 ORDER BY savem  

     DESC

-> SELECT count(*) FROM testtable WHERE sex='M'

-> SELECT avg(savem) FROM testtable WHERE sex='M'


9. 데이터 수정하기

->UPDATE 테이블명 SET 필드명=필드값 또는 산술식 {, 필드명 = 필드값 또는 산술식}*[WHERE

   검색조건]

mysql> select * from testtable;


->uid 4 번의 데이터에 name 값과 email을 입력해 봄

mysql> update testtable set name = 'junyangmi' where age = 23;

mysql> update testtable set email = [email protected]'" target=_blank>'[email protected]' where age = 23;

mysql> select * from testtable;


-> uid 1 인 사람 (parksungsoo)의 나이를 25살로 수정

mysql> update testtable set age= 25 where uid =1;


->uid 2인 사람의 나이를 30살로 수정

mysql> update testtable set age = 30 where uid =2;

mysql> update testtable set age = 41 where uid=3;


-> 한해가 지났으므로 모든 사람의 나이를 한 살씩 증가

mysql> update testtable set age = age + 1;

mysql> select * from testtable;


10. 데이터 삭제하기(delete)

->Delete FROM 테이블명 [WHERE 검색조건]

mysql> select * from testtable;

mysql> delete from testtable where uid = 3;


11. 새로운 사용자 등록

-> Mysql 에 root로 접속

./mysql -u root -p

->Mysql DB 선택

mysql> use mysql;

mysql> show tables;


->새로운 DB 생성

mysql> create database xlare;


-> user 테이블에 입력 (user 라는 테이블에 새로운 사용자의 계정이름과 권한설정을 할 차례)

-> 호스팅사용자에 대한 설정 user테이블에 현재 사용장0ㅔ 대한 권한들을 모두 'N'로 설정

mysql> insert into user valuses('localhost', 'xlare', password('123'),'Y','Y','Y','Y','Y','N','N','N','N','N','N','N','N','N');


->user  테이블에 입력확인

mysql> select * from user where user = 'xlare' ;


-> db 테이블에 입력

mysql> insert into db values('localhost', 'xlare', 'xlare', 'Y','Y','Y','Y','Y','N','N','N','N','N',);


-> db 테이블에 입력 확인

mysql> select * from db where db = 'xlare';


-> 새로운 설정을 바로 적용키위해 mysqladmin 이라는 관리자명령어로 mysql 을 재시작

->reload를 해주지 않으면 생성했던 것들이 적용이 되지 않음

# ./mysqladmin -u root -p reload;


12. 일반사용자 권한설정(보안사항)

#./mysql -u root -p mysql

Enter password:

mysql> show tables;

--------------------

tables in mysql

--------------------

columns_priv

db

func

host

tables_priv

user

----------------------


->columns_priv 테이블

* 모든 특정 DB 의 특정 User 에 대한 특정 테이블의 각 컬럼에 대한 select, insert, update,

   reference 권한을 설정

mysql> desc columns_priv;

->db 테이블

* db라는 테이블에는 특정 DB에 대한 user들의 여러가지 권한들을 설정하는 테이블

mysql> desc db;

-> kebia 라는 데이터베이스의 소유자와 그 권한에 대해서 알아보고자 함.

-> kebia라는 데이터베이스의 소유자는 hyung 이라는 mysqkl 사용자이며 이 hyung 이라는 사용자

     는 이 kebia 라는 데이터베이스에 대한 각종 권한을 볼수 있음.

mysql> select * from db where db = 'kebia';

| localhost | kebia | hyung | Y  |   - - - - - ...........

------------------------


->tables_priv테이블

* columns_priv 테이블처럼 각 데이터베이스와 사용자 및 그 테이블에 대한 권한 설정

mysql > desc tables_priv;

---------------------


->user 테이블 : 새로운 사용자를 생성할때 이 테이블에 등록

-> 특정 사용자에 대한 Mysql에 존재하는 모든 데이터베이스에 대한 권한설정

-> 특정 사용자의 어떤권한에 대한 사항은 특정 데이터베이스가 아니라 Mysql에 존재하는 모든 데

     이터베이스에 권한이 주어짐.

-> host와 user, password 항목을 제외한 나머지 권한들은 모두 'N"로 설정

->특정한 사용자에 대한 특정한 데이터베이스에 대한 권한을 주려면 위에서 보았던 db라는 테이블

    에서 그 권한설정을 하는것이 안전함


13 .Mysql root 암호 변경하기

-> 방법 1:  mysqladmin 이라는 명령어 사용

# ./mysqladmin -u root -p password 12345


->방법 2: mysql의 set 이란 명령어로 root 암호 변경

# ./mysql -u root -p mysql

mysql> set password for root=passwd('12345678');


-> 방법 3: mysql 데이터베이스로 접속하여 update문을 사용하는 방법

# ./mysql -u root -p mysql

mysql> update user set password=password('12345' where user = 'root';

mysql> flush privileges;


->flush-privileges: 권한 테이블을 재시작한다. 권한 설정을 변경했을경우 반드시 재시작

mysql> flush privileges;


14. root 패스워드를 잊어버렸을 때는 어떻게?

->단계 1: 실행중인 mysql 종료

# ps -ef | grep mysqld

# killall mysqld


->단계 2: grant-table 미사용모드로 mysql시작 및 root로 접속

# .safe_mysqld --skip-grant-tables&


-> 단계 3: update문으로 root사용자 패스워드 변경

mysql> update user set password=password('12345') where user = 'root';

mysql> flush privileges;


-> 단계 4: 실행중인 mysql 다시 종료

# ps -ef | grep mysqld

# killall mysqld


-> 단계 5: 일반모드로 Mysql 재시작

# ./safe_mysqld&

# ps -ef | grep mysql


15. 특정 테이블의 구조보기(show columns from 테이블)

-> 특정테이블의 필드명 type, 설정값들을 보기 위한 것

-> 특정한 테이블의 칼럼(필드)구조를 보려면 "show columns from 테이블명"

-> 좀더 편리하여 많이 사용되는 명령문 " desc 테이블명"으로 확인

mysql> show columns form user;


->특정 테이블의 인덱스 보기

mysql> show index from user;


-> 데이타베이스의 설정상태 보기(show status)

mysql> show status;

# ./mysqladmin -u root -p status


-> 데이터베이스의 설정환경변수와 값보기(show variables)

mysql> show variables;

# ./mysqladmin -u root -p variables


-> 현재 데이터베이스에 연결된 프로세스들 보기(show processlist)

# ./mysqladmin -u root -p processlist

댓글목록

등록된 댓글이 없습니다.

Total 447건 1 페이지
게시물 검색

회원로그인

접속자집계

오늘
302
어제
446
최대
592
전체
38,820

그누보드5
Copyright © seobangnim.com All rights reserved.
자바스크립트를 활성화 하세요![ 브라우저에서 자바스크립트를 활성화하는 방법 ]