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 계정에 암호가 지정되어 있지 않다.
다음 세가지 방법으로 비밀번호를 변경 할 수 있다.
일단 root 비밀번호가 설정된 상태에서는 mysql이나 mysqladmin 명령을 실행할 때 -p 옵션을 붙여주고 기존 비밀번호를 입력해야만 한다.
사용자 추가/삭제
데이타베이스에 대해 모든 권한을 가지고 있다.
username 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면
추가 : '%'를 호스트네임으로 지정해도 모든 호스트에서 접속할 수 없었다. 각 호스트별로 다 지정해야 했다.
데이터베이스 생성/보기
데이터베이스를 생성하고,
현재 존재하는 데이터베이스 목록을 보여준다.
특정 데이타베이스를 사용하겠다고 선언한다.
쓸모 없으면 과감히 삭제한다.
테이블 생성/보기
테이블을 생성하고,
이름을 잘못 지정했으면 이름을 변경할 수도 있다.
필요 없으면 삭제한다.
현재 상태 보기
INSERT
SELECT
컬럼명을 *로 하면 모든 컬럼 의미.
컬럼의 이름을 바꿔서 출력.
DESC는 내림차순 ASC는 오름차순.
조건줘서 SELECT.
결과중 처음부터 10개만 가져오기
UPDATE
DELETE
mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.
mysql에서 발생한 오류나 경고 다시 보기
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 사용자는 로칼 호스트에서만 접속할 수 있다. 다른 호스트에서 접속하려면
- 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;
테이블 생성/보기
테이블을 생성하고,
- 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 [IF EXISTS] 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.
- mysql> SELECT * FROM grade LIMIT 10;
결과중 처음부터 10개만 가져오기
- mysql> SELECT * FROM grade LIMIT 100, 10;
UPDATE
- mysql> UPDATE tablename SET col1=새값 WEHER 조건
DELETE
- mysql> DELETE FROM tablename WEHRE 조건
mysql에서 쿼리 결과 세로로 보기
-E 옵션을 줘서 실행한다.
- $ mysql -E -u root -p mysql
mysql에서 발생한 오류나 경고 다시 보기
- mysql> show errors;
mysql> show warnings;