MYSQL 기본 명령어
Mysql 을 사용하는 실질적인 명령어 들을 알아보자.
mysql 실행 환경 설정
mysql 을 아무곳에서 실행하기 위해서는 path 설정을 필요하다.
개별적인 환경 설정보다는
vi /etc/profile
PATH="/usr/local/mysql/bin
을 추가 한다.
아이디별 설정은 홈디렉토리에서
vi .bash_profile
PATH 에 /usr/local/mysql/bin
을 추가한다.
Mysql root 패스워드 설정하기
(지금 명령어의 위치는 /usr/local/mysql/bin 이다.)
[root@aaa bin]# ./mysqladmin -u root password 123456
데이타 베이스에 접속하기
./mysql -u 접속아이디 -p
[root@aaa bin]# ./mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 3.23.28-gamma
Type 'help;' or '\h' for help. Type '\c' to clear the buffer
mysql>
(지금부터 명령어의 끝은 ;(세미콜론) 으로 끝난다. )
데이타베이스 목록보기
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.01 sec)
사용할 데이타 DB 선택하기
mysql> use mysql;
Database changed
mysql>
테이블 목록 보기
mysql> show tables;
+-----------------+
| Tables_in_mysql |
+-----------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+-----------------+
6 rows in set (0.00 sec)
mysql>
테이불 구조도 보기
mysql> desc user;
+-----------------+---------------+------+-----+---------+-------+--------------
-------------------+
| Field | Type | Null | Key | Default | Extra | Privileges
|
+-----------------+---------------+------+-----+---------+-------+--------------
-------------------+
| Host | char(60) | | PRI | | | select,insert
,update,references |
| User | char(16) | | PRI | | | select,insert
,update,references |
| Password | char(16) | | | | | select,insert
,update,references |
| Select_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Insert_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Update_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Delete_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Create_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Drop_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Reload_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Shutdown_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| Process_priv | enum('N','Y') | | | N | | select,insert
,update,references |
| File_priv | enum('N','Y') | | | N | | select,insert
,update,references |
데이블 내용보기
mysql> select * from user;
+-----------+------+------------------+-------------+-------------+-------------
+-------------+-------------+-----------+-------------+---------------+---------
-----+-----------+------------+-----------------+------------+------------+
| Host | User | Password | Select_priv | Insert_priv | Update_priv
| Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_
priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv |
+-----------+------+------------------+-------------+-------------+-------------
+-------------+-------------+-----------+-------------+---------------+---------
-----+-----------+------------+-----------------+------------+------------+
| localhost | root | 565491d704013245 | Y | Y | Y
| Y | Y | Y | Y | Y | Y
| Y | Y | Y | Y | Y |
| aaa | root | | Y | Y | Y
| Y | Y | Y | Y | Y | Y
| Y | Y | Y | Y | Y |
| localhost | | | N | N | N
| N | N | N | N | N | N
| N | N | N | N | N |
| aaa | | | N | N | N
| N | N | N | N | N | N
| N | N | N | N | N |
+-----------+------+------------------+-------------+-------------+-------------
+-------------+-------------+-----------+-------------+---------------+---------
-----+-----------+------------+-----------------+------------+------------+
4 rows in set (0.05 sec)
mysql>
종료 하기
mysql> exit
Bye
[root@aaa bin]#
새로운 데이타 베이스 만들기
[root@aaa bin]# ./mysqladmin -u root -p create test
Enter password:
[root@aaa bin]#
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
| test2 |
+----------+
3 rows in set (0.00 sec)
mysql>
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
데이타 베이스 지우기
[root@aaa bin]# ./mysqladmin -u root -p drop test1
Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.
Do you really want to drop the 'test1' database [y/N]
y
Database "test1" dropped
[root@aaa bin]#
mysql> drop database test2;
Query OK, 0 rows affected (0.00 sec)
mysrop show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.01 sec)
mysql>
테이블 만들기
컬럼(Column)은 데이타 베이스를 이루는 가장 작은 단위이다. 컬럼들이 모여서 레코드(Record)를 이루고, 레코들들이 모여서 테이블(Table)이 된다. 테이블이 모여서 데이타 베이스를 이루게 된다. 즉, 데이타 베이스를 데이타들의 계층적 구조라고 말한다
TINYINT : 부호있는 수는 -128에서 127까지, 부호 없는 수는 0에서 255까지
표현할 수 있다. 1 바이트
SMALLINT : 부호있는 수는 -32768에서 32767까지, 부호 없는 수는 0에서
65535까지 표현할 수 있다. 2 바이트
MEDIUMINT : 부호있는 수는 -8388608부터 8388607까지, 부호없는 수는 0에서
16777215까지의 수를 표현할 수 있다. 3 바이트
INT : 부호있는 수는 -2147483648부터 2147483647까지, 부호없는 수는
0에서 4294967295까지의 수를 표현할 수 있다. 4 바이트
INTEGER : INT와 같다.
BIGINT : 부호있는 수는 -9223372036854775808부터 9223372036854775807
까지의 수를 표현할 수 있고, 부호없는 수는 0부터
18446744073709551615까지 표현할 수 있다. 8바이트
FLOAT : 단일 정밀도를 가진 부동 소수점을 나타낸다. 언제나 부호 있는
수이고, -3.402823466E+38부터 3.402823466E+38까지의 수를
표현할 수 있다.
DOUBLE : 2배 정밀도를 가진 부동 소수점 수이다. 언제나 부호있는 수이고,
-1.79769313486231517E+308부터 1.7976931348623157E+308까지의
수를 표현할 수 있다.
DATE : 날짜를 표현하는 타입으로 '1000-01-01'부터 '9999-12-31'까지를
나타낼 수 있다. 3 바이트
DATETIME : 날짜와 시간을 같이 나타내는 타입이다. '1000-01-01 00:00:00'
부터 '9999-12-31 23:59:59'까지 나타낼 수 있다. 8 바이트
TIMESTAMP: '1970-01-01 00:00:00'부터 2037년까지 나타낼 수 있다. 4 바이트
TIME : 시간을 나타낸다. '-839:59:59'부터 '838:59:59'까지 나타낼 수 있다.
YEAR : 년도를 나타낸다. 1901년부터 2155년, 0000년을 나타낼 수 있다.
CHAR(M) : 고정 길이를 갖는 문자열을 저장할 수 있다. M은 1부터255까지이다.
M이 20이면 20개의 문자를 저장할 수 있다.
VARCHAR(M):CHAR는 고정길이인 반면 VARCHAR는 가변 길이이다. 예를 들어 VARCHAR(20)인 컬럼에 10자만 저장을 하면, 실제로도 10자 만큼을
기억장소를 차지한다. 하지만, CHAR는 나머지 10자를 공백으로 매꾼다.
TINYBLOB
TINYTEXT : 255개의 문자를 저장할 수 있다. BLOB은 BINARY LARGE OBJECT의 약자이다.
BLOB
TEXT : 65535개의 문자를 저장할 수 있다.
MEDIUMBLOB
MEDIUMTEXT : 16777215개의 문자를 저장할 수 있다.
LONGBLOB
LONGTEXT : 4294967295(4기가)개의 문자를 저장할 수 있다.
우선 입력출력을 위한 간단한 컬럼의 이름과 타임을 지정
이름 name ( varchar(10)
나이 age (int(3)
메일 email ( varchar(20)
전화번호 tel (varchar(15)
주소 addr (varchar(50)
mysql> create table test1(
-> name varchar(10),
-> age int(3),
-> email varchar(20),
-> tel varchar(20),
-> addr varchar(50)
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> desc test1
-> ;
+-------+-------------+------+-----+---------+-------+--------------------------
-------+
| Field | Type | Null | Key | Default | Extra | Privileges
|
+-------+-------------+------+-----+---------+-------+--------------------------
-------+
| name | varchar(10) | YES | | NULL | | select,insert,update,refe
rences |
| age | int(3) | YES | | NULL | | select,insert,update,refe
rences |
| email | varchar(20) | YES | | NULL | | select,insert,update,refe
rences |
| tel | varchar(20) | YES | | NULL | | select,insert,update,refe
rences |
| addr | varchar(50) | YES | | NULL | | select,insert,update,refe
rences |
+-------+-------------+------+-----+---------+-------+--------------------------
-------+
5 rows in set (0.01 sec)
mysql>
데이타 입력하기
mysql> insert into test1 values("변창수","29","iwav@iwav.co.kr","011-291-0200","성남시 분당구 야탑 ");
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1
-> ;
+--------+------+-----------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+-----------------+--------------+--------------------+
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
+--------+------+-----------------+--------------+--------------------+
1 row in set (0.00 sec)
데이타 내용보기
mysql> select * from test1;
+--------+------+------------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+------------------+--------------+--------------------+
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
+--------+------+------------------+--------------+--------------------+
3 rows in set (0.00 sec)
mysql>
테이블 내용 지우기
mysql> delete from test1 where age=12;
Query OK, 1 row affected (0.06 sec)
mysql> delete from test1 where name="변창수";
Query OK, 1 row affected (0.00 sec)
mysql>
테이블 내용 수정하기
mysql> select * from test1;
+--------+------+------------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+------------------+--------------+--------------------+
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
+--------+------+------------------+--------------+--------------------+
4 rows in set (0.00 sec)
mysql>
mysql> update test1 set name="byun",age="40",email="aaa@aaa.com",tel="114",addr
="우리집" where age="29";
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from test1;
+--------+------+------------------+-----------+---------------+
| name | age | email | tel | addr |
+--------+------+------------------+-----------+---------------+
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| byun | 40 | aaa@aaa.com | 114 | 우리집 |
+--------+------+------------------+-----------+---------------+
4 rows in set (0.00 sec)
mysql>
select 문의 확장
특정 컬럼만 출력
mysql> select email from test1;
+------------------+
| email |
+------------------+
| byun@sungnam.net |
| iwav@iwav.co.kr |
| byun@sungnam.net |
| aaa@aaa.com |
+------------------+
4 rows in set (0.00 sec)
mysql>
오름 차순 정렬하기
mysql> select * from test1 order by age asc;
+--------+------+------------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+------------------+--------------+--------------------+
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-2910 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
| byun | 40 | aaa@aaa.com | 114 | 우리집 |
+--------+------+------------------+--------------+--------------------+
7 rows in set (0.00 sec)
mysql>
내림차순 정렬하기
mysql> select * from test1 order by age DESC;
+--------+------+------------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+------------------+--------------+--------------------+
| byun | 40 | aaa@aaa.com | 114 | 우리집 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-2910 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
+--------+------+------------------+--------------+--------------------+
7 rows in set (0.00 sec)
name 이 김동건이라는 사람만 검색
mysql> select * from test1 where name="김동건";
+--------+------+------------------+----------+--------+
| name | age | email | tel | addr |
+--------+------+------------------+----------+--------+
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
| 김동건 | 13 | byun@sungnam.net | 011-0200 | 성남시 |
+--------+------+------------------+----------+--------+
2 rows in set (0.01 sec)
mysql>
나이가 29이고 전호번호가 011 인 사람
mysql> select * from test1 where age="29";
+--------+------+-----------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+-----------------+--------------+--------------------+
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-2910 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
+--------+------+-----------------+--------------+--------------------+
3 rows in set (0.00 sec)
mysql> select * from test1 where age="29" and tel="011";
+--------+------+-----------------+------+--------------------+
| name | age | email | tel | addr |
+--------+------+-----------------+------+--------------------+
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
+--------+------+-----------------+------+--------------------+
1 row in set (0.00 sec)
mysql>
나이가 29이거나 전화번호가 114인 사람
mysql> select * from test1 where age="29" or tel="114";
+--------+------+-----------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+-----------------+--------------+--------------------+
| byun | 40 | aaa@aaa.com | 114 | 우리집 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-2910 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
+--------+------+-----------------+--------------+--------------------+
4 rows in set (0.00 sec)
mysql>
LIKE 문을 이용한 검색
mysql> select * from test1 where addr like "%분당구%";
+--------+------+-----------------+--------------+--------------------+
| name | age | email | tel | addr |
+--------+------+-----------------+--------------+--------------------+
| 김철수 | 12 | iwav@iwav.co.kr | 011--0200 | 성남시 분당구 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-291-0200 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011-2910 | 성남시 분당구 야탑 |
| 변창수 | 29 | iwav@iwav.co.kr | 011 | 성남시 분당구 야탑 |
+--------+------+-----------------+--------------+--------------------+
4 rows in set (0.00 sec)
mysql>
%char% : char라는 문자열이 포함된 모든 문자열 검색
%char : 문자열 끝이 char로 끝나는 문자열 검색
char% : 문자열 시작이 char로 시작하는 문자열 검색
DB 백업
/usr/local/mysql/bin/mysqldump -u root -p myuser > back.sql
DB 입력
/usr/local/mysql/bin/mysql -u root -p mysuer < /home/aaaa/back.sql
DB 유저 만들기
use mysql;
insert into user values ('localhost','aaaa',password('aaaa'),'N','N','N',
'N','N','N','N','N','N','N','N','N','N','N');
insert into db values('localhost','aaaadb','aaaa','Y','Y','Y','Y','Y','Y',
'Y','Y','Y','Y');
# /usr/local/mysql/bin/mysqladmin -u root -p create aaaadb
# /usr/local/mysql/bin/mysqladmin -u root -p reload
|