Skip to content

2010.03.08 16:56

MySQL 명령어 정리

조회 수 10420 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이 메뉴얼은 http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&lang=k 의 한글메뉴얼 중 겨우 3장을 정리한 내용입니다. 버전은 5.0 기준이므로 이보다 낮은 버전의 MySQL에서는 몇 가지 기능이 실행되지 않습니다. 좀 더 자세히 SQL문에 대해 알고 싶으시다면 한글 메뉴얼의 13장을 보세요. 레퍼런스 북처럼 되어 있습니다.

참고하세요.

 

mysql 실행시

-h: MYSQL서버의 IP또는 호스트명

-u: 유저명

-p: 패스워드

-D: 데이터베이스명

ex) mysql -h localhost -u root -p

// localhost에 root라는 유저명의 유저가 접속, -p를 쓰면 패스워드를 묻는 절차가 실행됨

// 귀찮다면 만약 패스워드가 myrilke라면 -pmyrilke로 쓰면 바로 접속 가능

// 만약 떨어져 있을 시에는 myrilke라는 데이터베이스로 오판함

 

1.mysql에는 쿼리를 넣을 때 대소문자 구분을 하지 않습니다. 쿼리 입력시 제일 마지막에는 ;(세미콜론)을 입력하는 것도 잊지 말아야 합니다.

 

2.입력을 하다 이 명령어를 실행시키고 싶지 않으면 \c로 취소하면 '삐'하는 경고음없이 취소할 수 있습니다. 가끔 \c로 못 마칠 때가 있는데 이는 문장구조가 여전히 대기 상태이기 때문입니다. 그럴 때엔 필요로 하는 문자(아래 Prompt형태에서 1)을 제외한 모든 경우)을 입력 후 \c를 입력해야 합니다. ex) '\c, "\c...

 

3.Prompt 형태
1) mysql> 새로운 명령어를 위한 준비
2) -> 다중 라인 명령어의 다음 라인 대기 상태
3) '> '로 시작된 문장의 완결을 위한 다음 문장 대기
4) "> "로 시작된 문장의 완결을 위한 다음 문장 대기
5) `> `로 시작된 식별자의 완결을 위한 다음 문장 대기
6)/*> /*로 시작된 주석문의 완결을 위한 다음 문장 대기

 

4. 단순 Query입력
1) select version(), current_date; (버전정보및 오늘 날짜 확인)
2) select sin(pi()/4), (4+1)*5; (파이를 4로 나눈 값의 sin값과 (4+1)*5값이 출력)

 

5. 데이터베이스 생성 및 사용
1) show databases;

//현재 서버의 데이터 베이스들 출력

 

2) use test

//Database changed라는 출력과 함께 test라는 데이터 베이스에 접속,

//이 때에는 세미콜론 사용을 안 한다.

//또한 단일라인에서만 사용가능하므로 한 줄에 다 입력해야 함.

3) grant all on test.* to 'myrilke'@'localhost';

//myrilke 라는 이름의 등록된 사용자가 localhost라는 호스트 이름으로

//test라는 데이터베이스에 사용자 권한을 요청

4) create database test;

//test라는 데이터베이스 생성

 

5) show tables;

// 현 데이터베이스 내의 테이블들을 출력

 

6) create table pet(name varchar(20), owner varchar(20),
species varchar(20), sex char(1), birth date, death date);

//name, owner, species, sex, birth, death의 정보를 가질 table을 생성,

//가독성을 높이기 위해 2줄에 걸쳐 타입

7) describe pet;

//pet 이라는 테이블이 가지는 정보에 대해 검사, 이 때 필드 이름, 데이터 타입,

//NULL의 여부, Key의 여부, DEFAULT의 여부, 기타 에 관한 정보가 출력된다

 

8) load data local infile
'C:/mysql/pet.txt' into table pet;

//C:\mysql\에 있는 pet.txt 내에 있는 정보를 pet이란 테이블에 불러와서 입력한다.

//텍스트 파일로 데이터 입력시 각각의 필드는 tab이나 띄어쓰기로 구분하도록 디폴트

// 텍스트 파일 입력 중 누락된 값들은 NULL값으로 자동처리된다.

//주의할 점은 mysql에서 위치입력시 Dos처럼 \를 쓰는 것이 아니라 /를 사용한다

9) load data local infile
'C:/mysql/pet.txt' into table pet
lines terminated by '\r\n';

//\r\n을 라인 터미네이터로 사용한다

 

10) insert into pet
values('Puffball','Diane','hamster','f',1993-03-30',NULL);

//pet 이란 테이블에 값을 입력, 이 때는 NULL을 써줘서 누락된 값을 표시한다.

 

11) select * from pet;

//pet테이블에 있는 모든 정보 출력

 

12) delete from pet;

//pet테이블에 있는 모든 정보 삭제, 이 명령어는 텍스트 파일의 자료 중 잘못된 값이 많을 때

//텍스트 파일의 정보 수정 후 다시 입력하려고 할 때 필요하다. 만약 정보 수정 후 바로 load

//data를 해주게 되면 정보가 중복입력이 되기 때문이다.

 

13) update pet set birth = '1989-08-31' where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄의 birth를 1989-08-31로 수정한다,

//update A set B=C where D set E의 형태로 작성하면

//A테이블의 D필드의 값이 E인 줄에서 B필드의 값을 C로 수정한다.

14) select *from pet where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄을 모두 출력한다.

 

15) select *from pet where birth >= '1998-1-1';

//pet 테이블에서 birth가 1998-1-1 이후인 줄을 출력한다.

//만약 비교연산자 사용시 문자를 사용하면 ASCII코드 값을 비교한다.

// 예를 들어 select *from pet where name >='S';를 타입하면

//'T~Z'까지의 문자로 시작되는 이름을 가진 줄들이 출력된다.

16) select *from pet where species = 'snake' or species = 'bird';

//pet 테이블에서 species가 snake이거나 species가 bird인 줄을 출력한다.

//or 뿐만 아니라 and도 사용된다.

//예를 들어 select *from pet where species ='cat' and owner = 'Gwen';

//을 타입하면 pet 테이블의 species가 cat이고 owner가 Gwen인 줄이 출력된다.

 

17) select *from pet where (species='cat' and sex='m')
or (species='dog' and sex='f');

//pet 테이블에서 species가 cat이고 sex가 m인 줄이거나 species가 dog이고 sex가 f인 줄은

//모두 출력한다.

// 괄호를 쓰는 까닭은 and와 or 중 우선순위가 and가 더 높기 때문에

//혼용할 수 있으므로 방지차원에 쓴다.

 

18) select name, birth from pet;

//pet테이 블에서 name과 birth필드값들을 모두 출력한다.

//이는 특정 행을 선택하여 출력하는 것과 같다.

 

19) select distinct owner from pet;

//pet 테이블에서 같은 이름의 owner는 한 번만 출력하도록 owner필드값들을 모두 출력한다.

 

20) select name, species, birth from pet
where species='dog' or species='cat';

//pet테이블에서 species가 dog이거나 cat인 줄의 name, species,birth를 출력한다.

 

21) select name, birth,

(year(curdate())-year(birth) - (right(curdate(),5)<right(birth,5))

as age

from pet;

 

//pet 테이블에서 name과 birth 그리고 age를 출력한다.

//age는 오늘 날짜(curdate()는 오늘 날짜를 불러오는 MySQL지원 메소드) 중 연도에서

//생일의 연도를 뺀 다음에

//right(curdate(),5) 는 curdate() 중 오른쪽 5자리 (몇월-몇일)를 추려내서 birth의 월일과

//비교했을 때 작으면 1, 크거나 같으면 0이란 값을 출력하게 된다.

//(비교연산자 식이 true면 1, false면 0을 리턴한다)

// 그래서 나온 값을 빼주면 나이가 된다.(조금만 생각해보시면 이 식이 이해가 갈껍니다.;;)

 

22) select * from pet where name like 'b%';

// pet테이블에서 name이 b로 시작되는 줄을 찾는다.

// '_'을 사용하면 단일문자 매칭

// '%'를 사용하면 문자의 부정 숫자를 매칭

// SQL 패턴 사용시 논리연산자 사용불가

// 대신 like 또는 not like를 사용할 수 있다.

 

23) select * from pet where name like '%fy';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.

 

24) select * from pet where name like '%w%';

// pet테이블에서 name이 이름 내에 w를 포함하고 있는 줄을 찾는다.

 

25) select * from pet where name like '_____';

// pet테이블에서 5개의 문자로 name이 되어있는 줄을 찾는다.

// _의 갯수만큼의 문자검색을 할 수가 있다.

 

26) select * from pet where name  regexp '^b';

// pet테이블에서 name이 b로 시작하는 줄을 찾는다.

// regexp는 테스트가 되는 값이 있는 모든 곳에서 매칭

// like는 전체값에서만 패턴매치를 진행

 

27) select * from pet where name regexp 'fy$';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.

 

28) select * from pet where naem regexp 'w';

// pet테이블에서 name이 중간에 w를 가지고 있는 줄을 찾는다.

 

29) select * from pet where regexp '^.....$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// regexp에서는 .을 단일문자로 취급한다.

 

30) select * from pet where name regexp '^.{5}$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// {n}은 repeat - n - times 연산자이다.

 

31) select count(*) from pet;

// pet테이블에 몇 개의 줄이 있는지 찾는다.

 

32) select owner, count(*) from pet group by owner;

// pet테이블에서 owner의 이름에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.

// group by n은 n이란 속성에 따라 그룹화한다.

// 만약 select 후 n만 사용하고 뒤에 group by n을 붙이지 않으면 에러가 발생한다.

// ex) select owner, count(*) from pet; <- ERROR 1140

 

33) select species, sex, count(*) from pet group by species, sex;

// pet테이블에서 species와 sex의 조합에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.

 

34) select species, sex, count(*) from pet

where species = 'dog' or species = 'cat'

group by species, sex;

// pet 테이블에서 species 이름이 dog 나 cat인 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.

 

35) select species, sex, count(*) from pet

where sex is not null

group by species, sex;

// pet테이블에서 sex가 null이 아닌 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.

 

36) select pet.name,

(year(date)-year(birth)) as age,

remark from pet, event

where pet.name = event.name and event.type='litter';

// pet테이블의 name과

// 오늘 날짜(date) 중 년도에서 birth의 년도를 뺀 것을 age로 한 것과

// remark를

// pet과 event 테이블에서

// pet테이블의 name이 event테이블의 name과 같고

// event테이블의 type이 litter인 줄을 출력한다.

// 만약 name이나 type처럼 두 테이블에 동시에 있는 field같은 경우

// (테이블명).(필드명)을 사용한다.

// 사용 안 할시 ambigugous 에러 발생

// ex) pet.name, event.type

 

37) select p1.name, p1.sex, p2.name, p2.sex, p1.species

from pet as p1, pet as p2

where p1.species=p2.species and p1.sex='f' and p2.sex = 'm';

// pet테이블 과 pet테이블, 즉 같은 2개의 테이블에서

// pet테이블에서 species값은 같지만

// sex에서 값이 'f'와 'm'으로 다른

// 줄의 name, sex를 각각 출력하고 species도 출력한다.

// 이 때 두 species는 같으므로 한 테이블의 species만 출력

 

38) select name,birth from pet order by birth;

// pet테이블에서 birth를 기준으로 오름차순으로 정렬된 name과 birth 출력

 

39) select name,birth from pet order by binary name;

// pet테이블에서 name을 기준으로 대소문자 구별하여 오름차순으로 정렬된 name과 birth 출력

// binary를 사용하면 ASCII코드 값의 크기에 따라 정렬

 

40) select name, birth from pet order by birth desc;

// pet 테이블에서 birth를 기준으로 내림차순으로 정렬된 name과 birth를 출력한다

// 마지막에 desc입력시 내림차순 정렬

// desc는 바로 앞에 있는 birth에만 영향을 미친다.

// 하나의 컬럼 이상의 컬럼에 영향을 주고 싶을 땐 계속 써넣어줘야 한다.

 

41) select name, species, birth from pet

order by species,birth desc;

// pet테이블에서 species와 birth 내림차순으로 기준을 한 name,species,birth를 출력한다.

// 먼저 species기준으로 정렬후 birth 내림차순을 기준으로 삼아 정렬한다.

 

42) show index from pet;

// pet테이블에 있는 인덱스들을 보여준다.

 

43) !!이 구문은 윈도우 프롬프트 창에서 쓰는 명령어다!!

C:\> mysql -e "source c:/mysql/src.txt"

// mysql을 사용하여 c:\mysql\src.txt란 스크립트를 실행시킨다

// 만약 엑세스 문제가 발생한다면

// mysql -h localhost -u root -pmyrilke -e "source c:/mysql/src.txt"

// localhost에서 사용자 이름이 root이고 비밀번호가 myrilke인 계정으로 mysql에 접속하여

// c:\mysql\src.txt란 스크립트를 실행시킨다

 

44) source c:\mysql\src.txt;

// c:\mysql\src.txt란 스크립트를 실행시킨다.

// 이 것은 mysql프롬프트 에서 쓰는 것으로 기능은 위와 똑같다

 

45) \. c:\mysql\src.txt

// c:\mysql\src.txt란 스크립트를 실행시킨다

// 끝에 ;(세미콜론)을 붙이지 않는 점에 주의

 

46) select max(article) as article from shop;

// shop 테이블에서 article중에서 가장 큰 값을 가진 것을 article이라는 이름으로 출력

// select max(A) as B from C;

// C테이블에서 A중에 가장 큰 값을 가진 것을 B라는 이름 하에 출력

 

47) select article, dealer, price

from shop

where price=(select max(price) from shop);

// shop 테이블에서 price가 가장 큰 값인 줄의 price를 선택하여 그 줄에 있는 article, dealer, price를 출력

 

48) select article, dealer, price

from shop

order by price desc

limit 1;

// shop테이블에서 price를 내림차순으로 정렬하여 그 중 위에서 1개의 줄만 article,dealer,price를 출력

// limit에 들어가는 값은 출력해낼 줄의 숫자

// 47번 예제보다 좀 더 유동성있고 사용하기 편함

 

49) select article, max(price) as price

from shop

group by article;

// shop테이블에서 article, price 중에 가장 큰 값만 price로 하여 article로 그룹화한 결과를 출력

 

50) select article, dealer, price

from shop s1

where price=(select max(s2.price)

from shop s2

where s1.article = s2.article);

//shop 테이블에서 price가 가장 높은 줄의 article,dealer,price를 출력한다.

 

51) select @min_price:=min(price),@max_price:=max(price) from shop;

select * from shop where price=@min_price or price=@max_price;

// shop테이블에서 min_price라는 변수를 선언하고 그 값은 price중 가장 작은 값

// 또한 shop테이블에서 max_price라는 변수를 선언하고 그 값은 price중 가장 큰 값

// shop테이블에서 price가 min_price값을 가지거나 max_price값을 가진 줄 모두를 출력

 

52) select name, sex

from pet where name='Claws'

union

select name,sex

from pet where sex='f';

// pet테이블에서 name이 Claws인 줄의 name, sex를 출력하고

// pet테이블에서 sex가 f인 줄의 name,sex를 출력한다.

// union은 두 개의 쿼리문 결과를 붙여서 보여준다.

// 따라서 select하는 필드값은 일치해야 한다.

TAG •
  • profile
    NOS 2010.03.30 12:51

    아. 찾고자하는 원문 있엇네요.

    여기도 자주 들러봐야 겟습니다.

    감사합니다.^^


List of Articles
번호 제목 글쓴이 날짜 조회 수
66 mysql old_password 문제 ADMINPLAY 2010.06.19 18631
65 MySQL 오류 테이블 복원 l2zeo 2010.05.29 17449
64 MySQL errno 의미 확인 l2zeo 2010.05.29 16751
63 [MySQL] OPTIMIZE, TRUNCATE, 테이블복구, DB공간제한 l2zeo 2010.05.29 16651
62 latin1 로 저장된 db 를 euckr 또는 utf8로 변환하는 방법 ADMINPLAY 2010.05.28 16722
61 서버에서 mysql euckr과 utf8 같이 사용하기 ADMINPLAY 2010.05.03 12988
60 mySQL 설치 ADMINPLAY 2010.05.03 13088
59 lower_case_table_names=1 ADMINPLAY 2010.04.02 18220
» MySQL 명령어 정리 1 l2zeo 2010.03.08 10420
57 Another app is currently holding the yum lock; waiting for it to exit 해결법 l2zeo 2010.03.08 18430
56 PHP5와 MySQL5 연동시 한글 인코딩 문제 해결방법 (UTF-8으로의 변환) 1 l2zeo 2010.03.08 12773
55 MySQL Error 2006 : MySQL server has gone away 해결하기 l2zeo 2010.03.08 12792
54 Redmine database를 복구 하고자 할 때 file l2zeo 2010.03.06 15817
53 Starting MySQL.Manager of pid-file quit without updating fi[실패] ADMINPLAY 2010.01.28 20038
52 MySQL 데이터 정리후에도 용량변동이 없을 경우 ADMINPLAY 2009.12.31 8792
51 Mysql bin log 로테이션 방법 ADMINPLAY 2009.11.26 9721
50 리눅스를 이용한 클러스터링 구축법 ADMINPLAY 2009.11.19 10901
49 MySQL Replication(복제) ADMINPLAY 2009.11.19 7959
48 MySQL Replication ADMINPLAY 2009.11.19 8254
47 Mysql Replication(Master, Slave) 설정 ADMINPLAY 2009.11.19 9876
Board Pagination Prev 1 2 3 4 5 Next
/ 5

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234