MySQL 명령어 정리

|

MySQL 명령어 정리

MySQL의 기본 명령어와 SQL문 정리. 내가 RDBMS에 완전 문외한이기 때문에 기본 SQL쿼리까지...
Redhat Linux 7.3, MySQL 3.23.58 에서 테스트함.
설치는 Redhat 기본 제공 RPM으로 했다.

데이터베이스 접속

$ mysql -u 사용자명 -p dbname
설치 직후에는 root 사용자에 비밀번호가 없으므로 다음과 같이 접속하여 MySQL을 관리할 수 있다.
$ mysql -u root mysql

비밀번호 변경

MySQL을 설치한 직후에는 root 계정에 암호가 지정되어 있지 않다.
다음 세가지 방법으로 비밀번호를 변경 할 수 있다.

  • mysqladmin이용.

    $ mysqladmin -u root password 새비밀번호
    
  • update문 이용

    $ mysql -u root mysql
    
    mysql> UPDATE user SET password=password('새비밀번호') WHERE user='root';
    mysql> FLUSH PRIVILEGES;
    
  • Set Password 이용

    SET PASSWORD FOR root=password('새비밀번호');
    

일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.

사용자 추가/삭제

mysql> GRANT ALL PRIVILEGES ON dbname.* TO username@localhost IDENTIFIED BY 'password';
username 이라는 사용자를 password라는 비밀번호를 갖도록 하여 추가한다. username은 dbname이라는
데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면
GRANT ALL PRIVILEGES ON dbname.* TO username@'%' IDENTIFIED BY 'password';
위를 또한 번 실행한다. '%'에서 홑따옴표를 주의한다.

불필요한 사용자 삭제는
mysql> DLETE FROM user WHERE user='username';
mysql> FLUSH PRIVILEGES;

데이터베이스 생성/보기

  • 데이터베이스를 생성하고,

    mysql> CREATE DATABASE dbname;
    
  • 현재 존재하는 데이터베이스 목록을 보여준다.

    mysql> SHOW DATABASES;
    
  • 특정 데이타베이스를 사용하겠다고 선언한다.

    mysql> USE dbname;
    
  • 쓸모 없으면 과감히 삭제한다.

    mysql> DROP DATABASE [IF EXISTS] dbname;
    
    IF EXISTS 옵션은 비록 데이타베이스가 없더라도 오류를 발생시키지 말라는 의미이다.

테이블 생성/보기

  • 테이블을 생성하고,

    mysql> CREATE TABLE tablename (
        column_name1 INT,
        column_name2 VARCHAR(15),
        column_name3 INT );
    
  • 현재 데이타베이스의 테이블 목록을 보고

    mysql> SHOW TABLES;
    
  • 테이블 구조를 살펴본다.

    mysql> EXPLAIN tablesname;
    혹은
    mysql> DESCRIBE tablename;
    
  • 이름을 잘못 지정했으면 이름을 변경할 수도 있다.

    mysql> RENAME TABLE tablename1 TO tablename2[, tablename3 TO tablename4];
    

  • 필요 없으면 삭제한다.

    mysql> DROP TABLE tablename;
    

현재 상태 보기

mysql> status

--------------
mysql  Ver 11.18 Distrib 3.23.58, for pc-linux (i686)

Connection id:          26
Current database:       study
Current user:           study@localhost
Current pager:          stdout
Using outfile:          ''
Server version:         3.23.58
Protocol version:       10
Connection:             Localhost via UNIX socket
Client characterset:    latin1
Server characterset:    euc_kr
UNIX socket:            /var/lib/mysql/mysql.sock
Uptime:                 2 hours 9 min 59 sec

Threads: 1  Questions: 160  Slow queries: 0  Opens: 28  Flush tables: 1
Open tables: 1 Queries per second avg: 0.021
--------------

INSERT

mysql> INSERT INTO tablename VALUES(값1, 값2, ...);
혹은
mysql> INSERT INTO tablename (col1, col2, ...) VALUES(값1, 값2, ...);

SELECT

mysql> SELECT col1, col2, ... FROM tablename;
컬럼명을 *로 하면 모든 컬럼 의미.
mysql> SELECT col1 AS '성명', col2 AS '국어점수' FROM grade;
컬럼의 이름을 바꿔서 출력.
mysql> SELECT * FROM tablename ORDER BY col1 DESC;
mysql> SELECT col1, korean + math english AS '총점' FROM tablename ORDER BY '총점' ASC;
DESC는 내림차순 ASC는 오름차순.
mysql> SELECT * FROM grade WHERE korean < 90;
조건줘서 SELECT.

UPDATE

mysql> UPDATE tablename SET col1=새값 WEHER 조건

DELETE

mysql> DELETE FROM tablename WEHRE 조건
 

'DATABASE > MYSQL' 카테고리의 다른 글

MS-SQL 인덱스  (0) 2011.11.14
MySQL 4.0.xx(26,27) 에서 MySQL 5.x.xx 로 마이그레이션 하기  (0) 2010.07.09
mysql 서버이전  (0) 2010.07.09
MySQL 명령어 정리  (0) 2008.09.10
And