웹보안) 데이터베이스 개념 및 연동
DB를 사용하기 전 기본적으로 아래의 표를 참고하여 CHAR 과 VARCHAR의 차이를 알아야한다.
CHAR 같은 경우 CHAR(4) 즉 괄호안에 숫자를 입력한 바이트만큼만 처리한다.
입력값이 0이어도 4바이트, 초과되어도 4바이트
그래서 고정값을 입력할 때 많이 사용된다.
VARCHAR같은 경우 괄호안에 숫자를 입력해놓았지만 그 숫자만큼까지 수동적으로 바뀔 수 있다.
입력값이 0이면 1바이트로 줄었다가 2개를 입력하면 3바이트, 4개를 입력하면 5바이트
값이 제각각인 것을 나타낼 때 많이 사용된다.
#mysql -u root -p 명령어를 통해
패스워드를 입력하고 DB에 연결한다.
show batabases; 명령어는 데이터베이스 계정을 확인할 수 있다.
use user; 를 통해 user 계정을 선택하여 사용한다.
CREATE TABLE user_info( id varchar(10), pw char(150));
-> 해당 계정의 user_info 테이블 안에 id를 10자 수동적 제한(varchar), pw를 150자로 고정 제한(char)을 생성한다.
테이블 생성이란? 데이터의 구조를 정의하는 것이다.
-> 데이터의 형태(숫자,문자 등 컬럼에 대한 기본 속성)를 반드시 지정해야 한다
-> 데이터의 형태에 대한 종류 ( 종류에 따라 테이블의 크기가 달라진다)
show tables; 명령어는 해당 DB의 테이블을 보여준다.
DESC user_info; user_info 테이블을 상세하게 보여준다.
mysql> DROP TABLE 테이블 이름; -> 테이블안에 데이터가 있어도 전부 삭제가 된다.
mysql> DELETE TABLE 테이블 이름; -> 데이터는 지우지만 테이블은 남아있다.
mysql> CREATE TABLE user_info( no int NOT NULL auto_increment primary key, id varchar(10), pw char(50));
default와 primary는 같이 사용할 수 없다. 중복될 수 있기 때문에. primary는 중복을 허용하지 않는다.
NOT NULL(NULL을 허용하지 않는다) increment(자동으로 하나씩 증가)
컬럼 이름과 테이블 이름은 대소문자를 구별하니 주의 !
INSERT INTO 테이블 이름[(컬럼 이름, ...)] VALUE(값...);
-> 컬럼이름을 설정할 경우 VALUE와 함께 들어가지만 컬럼이름을 설정하지 않으면 테이블에 있는 형태대로 설정됨
-> 일반 숫자는 ''를 입력하지 않는다. 문자는 ''를 붙임. 안붙이면 컬럼이름으로 입력된다.
SELECT는 제일 많이 사용하기 때문에 제일 중요하다고 볼 수 있다.
저장한 정보들을 조회하거나 찾을때, 또는 출력할 때 사용한다
SELECT .. FROM .. BY..
SELECT : 최소 한개 이상의 컬럼이 들어가야 한다. 조회하려는 컬럼의 목록들..
FROM : 조회하려는 테이블
WHERE : 조건을 통해 검색,조회(특정 사용자를 조회할 때 조건이 만족하는 것들만 출력)
WHERE를 사용하지 않으면 자동으로 참으로 인식하기 때문에 주의해야 한다.
SELECT no, id ,pw FROM user_info; : user_info의 no,id,pw를 출력
SELECT * FROM user_info; : user_info 안에 있는 모든 것들을 출력
SELECT id FROM user_info; : user_info 안에 있는 id만 출력
select를 통해 출력할 수 있음을 확인할 수 있다.
user_info 안에 여러개의 자료가 있을때 where를 통해 쉽게 찾을 수 있다.
where은 조건을 정하는것인데 where id ='user1';
즉, id중에 user1만을 출력해라 라는 의미이다.
마찬가지로 no 중 1만 출력
값이 없는 것을 출력하고자 하면 에러메세지가 출력.
UPDATE 에서는 테이블 이름이 먼저 나온다.
WHERE를 사용하지 않으면 데이터가 두개일 때 둘다 참으로 이해하기 때문에
두개 다 정보가 바뀌니까 꼭 WHERE를 사용해야 한다. 주의하도록 하자
DB와 PHP를 연동하기 위해서 우선 설치를 해야한다
저기 명령어는 이미 다운받은 목록을 출력하는 것이다.
# yum search php-mysql 을 통해 php-mysql.i686 를 찾아본다.
#yum install php-mysql.i686 을 다운받고 위에 사진처럼 제대로 다운되었는지 출력해본다.
$link = mysql_connect('localhost','root','password1!'); 내가 설정한 DB로 연결하는 과정.
로그인 하는 기능을 $link에 넣은 후 DB의 jinseok라는 계정을 select 한다.
vi 에서 오타가 나거나 패스워드가 틀려서 DB에 연결이 되지 않으면
die("mysql connect :".mysql_error()); 의 메세지를 출력한다.