본문 바로가기
공부하는 하스씨/Linux

[SQL] 기본 문법들

by 박하스. 2009. 3. 5.
728x90
반응형

[형식] mysql -u 유저명 -p 접속암호


기본적인 명령어 알아보겠습니다.  

- show databases : 데이터베이스 이름을 출력합니다.
- use 데이터베이스명 : 특정 데이터베이스를 사용하겠다고 선언을 해줍니다.
- show tables : 테이블의 이름을 출력합니다.
- desc 테이블명 : 테이블의 구조정보를 출력합니다.
- delete from 테이블명 : 테이블의 내용을 모두 삭제합니다. (테이블은 존재합니다.)
- drop table 테이블명 : 테이블 자체를 삭제합니다. (테이블 + 내용 모두 삭제됩니다.)



새로운 데이터베이스와 테이블을 만들어봅니다.
- create database 데이터베이스명   ex. create database stude (study 데이터베이스를 만듭니다.)
※ 테이블을 만들어봅니다. (데이터베이스 만드는것보다 좀 까다롭습니다.)
   create table 테이블명 (
   필드명 데이터형 옵션 ,
   필드명 데이터형 옵션 ,
   primary key (필드명)
   );
create table member(
no int(5) not null ,
name char(10) not null ,
primary key(no)
);



만들어진 테이블의 필드를 수정해봅니다.
수정 alter table 테이블명 change 바꿀필드명 새로운필드명 데이터형
삭제 alter table 테이블명 drop 삭제할필드명
추가 alter table 테이블명 add 추가할필드명 데이터형
이름변경 alter table 테이블명 rename 새로운 테이블명  <-- 테이블이름 변경
이름변경 ※ rename 원본테이블명 to 새로운테이블명
primary 추가 alter table 테이블명 add primary key(필드,필드);
primary 삭제 alter table 테이블명 drop primary key;



테이블 생성시 필요한 옵션을 알아봅니다.
- not null
- auto_increment
- default 숫자 , default '문자'
- primary key : 해당필드에 내용을 무조건 입력하도록 만듭니다.
: 해당필드의 숫자를 자동으로 1 씩 증가합니다.
: 해당필드에 입력된 내용이 없을경우 기본값을 지정합니다.
: 해당필드에 동일한 내용이 중복되지 않도록 설정합니다.



MySQL 에서 사용하는 데이터형의 종류에 대해서 알아봅니다.
숫 자 형                                                            문 자 형
tinyint (M) : 정수형. -128 ~ 127                            char (M) : 1 ~ 255 까지의 고정형 문자
smallint (M) : 정수형. -32768 ~ 32767                   varchar (M) : 가변형 길이의 문자 (최대 255)
mediumint (M) : 정수형. -8388608 ~ 8388607          blob , text : 최대길이 65535
int (M) : 정수형. -2147483648 ~                            mediumblob (M) : 최대길이 16777215
bigint (M) : -9223355036854775808 ~                     mediumtext (M) : 동일
float (M) : 실수형.                                              longblob (M) : 최대길이 42949672950
double (M) : 실수형.                                          longtext (M) : 동일



테이블에 데이터를 입력하는 방법에 대해서 알아봅니다.
[형식 1 ] insert into 테이블명 (필드명 , 필드명 , 필드명) values(값1 , 값2 , 값3);
- 테이블안의 특정 필드안에만 자료를 입력하고 싶을 때 사용을 합니다.

[형식 2 ] insert into 테이블명 values(값1 , 값2 , 값3);
- 테이블안의 모든 필드에 자료를 입력합니다.
- 값1 ~ 에 들어가는 값은 필드의 순서대로 빠짐없이 모두 넣어줘야 합니다.


테이블에 입력된 데이터를 수정하는 방법에 대해서 알아봅니다.
[형식] update table 테이블명 set 필드명="수정할내용" , 필드명="수정할내용" where 조건;
- 각 수정할 필드는 , (콤마) 로 구분하여 줍니다.
※ 주의. where 뒤 조건이 없을 경우에는 해당 테이블의 모든 필드가 변경됩니다.
ex. update table member set name="홍길동" , id="hong" where no=5;


테이블에 입력된 내용을 출력해봅니다.
[형식] select 필드명 , 필드명 from 테이블명 where 조건 옵션
- 필드명 대신에 * 표시를 주면 해당 테이블의 모든 필드의 내용을 출력합니다.
- 필드명에 그룹함수를 사용할 수 있습니다.
count(필드) :해당 필드의 갯수를 알아옵니다.   count(*) : 테이블의 전체 레코드 갯수
sum(필드) : 해당필드의 합계를 알아옵니다.   max(필드) : 최대값
min(필드) : 최소값   avg(필드) : 평균값

※ 출력시 사용되는 옵션 (조건절 옵션)
- limit 갯수  갯수만큼만 출력합니다.
- like 필드명="%검색어%"
- order by 필드명 ASC/DESC  필드명에 의해서 ASC(오름차순)/DESC(내림차순)으로 정렬합니다.
- 조건을 여러개 부여할 수 있습니다. ex. select * from member where age < 40 and city="대구";
- 이중정렬
ex. SELECT name, species, birth FROM pet ORDER BY species, birth DESC;


텍스트 문서를 통해서 테이블에 내용을 입력하기.
[형식1] load data local infile '파일명' into table 테이블명;
- 각 필드의 구분은 TAB 키를 통해서 구분합니다.

[형식2] load data local infile '파일명' into table 테이블명 fields terminated by '구분자';
- 각 필드가 구분자로 나누어져있는 경우 입력할 때 사용합니다.


데이터베이스 사용자를 추가하기.
[형식1] grant all privileges on 데이터베이스명.테이블명 to 사용자@localhost identified by '암호';
- 데이터베이스명의 테이블명에 사용자에게 부여한 암호에 의해서 사용을 허가합니다.

[형식2] grant all privileges on 데이터베이스명.* to 사용자@localhost identified by '암호';
- 데이터베이스명의 모든 테이블에 사용자에게 부여한 암호에 의해서 사용을 허가합니다.

[형식3] grant all privileges on *.* to 사용자@localhost identified by '암호';
- 모든 데이터베이스와 모든 테이블에 사용자에게 부여한 암호에 의해서 사용을 허가합니다.

[형식4] grant select , insert on 데이터베이스명.* to 사용자@localhost identified by '암호';
- 데이터베이스명의 모든 테이블에 사용자에게 부여한 암호에 의해서 select , insert 권한만 부여합니다.


데이터베이스를 백업하는 방법에 대해서 알아봅니다.
[형식1] mysqldump -u사용자 -p암호 데이터베이스명 테이블명 > 백업할 파일명
- 데이터베이스안의 특정 테이블을 백업합니다.

[형식2] mysqldump -u사용자 -p암호 데이터베이스 > 백업할 파일명
- 데이터베이스안에 있는 모든 테이블을 백업합니다.

[형식3] mysqldump -u사용자 -p암호 --all-databases > 백업할 파일명
- 모든 데이터베이스를 백업합니다.

[형식4] mysql -u사용자 -p암호 데이터베이스명 < 백업한 파일명
- 백업한 파일을 원하는 데이터베이스에 복구합니다.


MySQL의 root 암호를 잃어버렸을때는 이렇게 합니다.
- 우선은 MySQL 데몬을 죽이고, 암호없이 데이터베이스에 접속하는 옵션을 주어 다시 띄웁니다.
- safe_mysql --skip-grant-tables &    (또는 -Sg 옵션)
- 데이터베이스에 암호없이 그냥 접속해서 root 암호를 변경합니다.
- flush privileges 를 한번 실행해서 암호를 변경했음을 MySQL 에 알려줍니다.
- 위의 옵션을 적용하면, 누구나 암호없이 모든 데이터베이스의 내용을 추가, 수정, 삭제가 가능합니다.
- 따라서, root 의 암호를 변경후에는 MySQL 데몬을 죽이고, 정상적으로 다시 띄워야 합니다.



MySQL 에러의 종류에 대해서 알아봅니다.


1. error 2002: can't connect to local mysql server through socket '/tmp/mysql.sock'(111)- mysql 서버 데몬이 아직 시작되지 않은 경우에 발생하는 에러.

2. access to database denied- 데이터베이스에 접근할 수 없는 권한을 가진 user 가 접속한 경우.

3. can't connect to local mysql server can't connect to mysql server on some_hostname- mysql 서버 데몬이 실행되지 않았거나, 잘못된 소켓이나 포트 번호에 연결을 시도하는 경우.
- 우선 mysqld 데몬이 작동하는지 ps 명령어를 통해서 확인해본다.

4. error 1044 : access denied for user : 'aaa@ localhost' to database 'mysql'- 'aaa' 유저에 대해서 mysql 데이터베이스에 접근할 수 없기 때문에 발생하는 에러.

5. error 1045 : access denied for user : 'root@localhost' (using password: no)
- root 패스워드가 설정되어 있는데, root 패스워드 없이 접근을 시도했을 때 나타나는 에러.
-- 다시 설치할때

/etc/init.d/mysql stop 데몬 중지
rm -rf /etc/init.d/mysql
rm -rf /usr/local/mysql
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
삭제 후 다시 설치하면 에러 안뜸~

6. ERROR 1006: Can't create database 'testdb'. (errno: 28) - 하드디스크 파티션 용량이 꽉참.

7. ERROR 1016: Can't open file: 'now.ISM'. (errno: 126)- 테이블 정보를 담고있는 파일이 깨졌을 경우

8. Got error: 1030: Got error 127 from table handler - 테이블이 깨졌을 경우.
- 서버를 옮기면서 data 디렉토리에 있는걸 dump 하지않고 copy 해서 옮길 경우 에러생김.
- isamchk 명령을 써서 해결가능할 수도 있습니다. 안될 수도 있습니다.

728x90
반응형

'공부하는 하스씨 > Linux' 카테고리의 다른 글

리눅스에서 파일찾기 명령 정리.  (0) 2012.08.30
APM 설치하기.  (0) 2008.11.10
CVS 설정하기.  (0) 2008.11.10
vsFTP 설치하기  (0) 2008.11.10
사용자별 쿼터 설정하기.  (0) 2008.11.10