정보보안공부
웹보안_10. MYSQL/쿼리 본문
MySQL
MySQL을 설치해보자
설치한후 확인해보자
Mysql이 설치가 됬다면 mysql 서비스를 실행하자.
Mysql에 접속하려면 mysql -h [IP] -u root 형식으로 접속하지만 이방식은 원격지에서 접속할때 사용하므로 한컴퓨터에서 Mysql을 사용하고있다면 mysql -u root로 접속해보자.
처음설치한뒤 비밀번호를 설정하지않아서 바로 접속이되었다. 접속이됬으면 입력하는 라인이 mysql> 로 변하게된다.
접속한 계정이 root 관리자 계정이므로 비밀번호를 설정해보자. 이 root계정은 리눅스의 root계정이라는 다르다. Mysql의 root계정이라는 것에 주의하자.
mysql 입력창을 나가려면 quit을 입력하면된다.
비밀번호는 mysqladmin -u root password 원하는 비밀번호를 입력하면된다.
이제 만든 비밀번호로 root계정에 접속해보자.
비밀번호를 사용하려면 -p 속성을 사용하면된다.
이제 Mysql에 있는 데이터들을 확인해보자 show databases를 하면 모든 DB의 목록을 볼 수 있다.
데이터베이스
DBMS(DataBase Management Sysstem)
- DBMS 안에는 여러개의 데이터를 관리할 수 있다.
- file로 저장하는데 관리하기 쉽도록, file을 관리하는 프로그램이다.
- 관계형 DBMS 로는 MySQL, Oralcle 등등이있다.
- MySQL은 정형화된 데이터를 다룰때 효과적이다.
1. DDL(Data Definition Language)
- 실제 데이터와는 상과없다.
- 생성 및 삭제 : CREATE, DROP ( 테이블이나 DB를 지울 수 있다. )
** CREATE, SHOW
-> create database 만들DB이름;
-> create table 만들TABLE이름;
show databases; 를 하면 해당 MySQL에 있는 DB목록들을 볼 수 있다.
create database 만들DB이름; 을 하면 해당이름으로 DB를 생성한다.
create table 만들TABLE이름 ( 컬럼이름 속성, 컬럼이름 속성, ... );
속성에는 Type과 Null, Key 등등을 정할 수 있다.
not null : 비어있지 않도록
auto_increment , primary key : 만드는 순서대로 숫자배열
primary key : 중복이 되지 않도록
desc 만든Table이름; 만든Table의 속성을 확인할 수 있다.
** DROP
-> drop database 만든DB이름;
-> drop table 만든TABLE이름;
drop database 삭제할DB이름; 은 해당DB를 삭제한다.
drop table 삭제할Table이름; 은 해당Table을 삭제한다.
이때 해당테이블이 서로다른 DB에 존재할 수 있기때문에 use DB이름; 으로 해당DB를 선택한뒤 해당DB안에있는 Table을 삭제한다.
2. DML(Data Manipulation Language)
- 데이터를 조작할 수 있는 구문
- 조회, 입력, 수정, 삭제 : SELECT, INSERT, UPDATE, DELETE
** SELECT
-> select 조회하려는컬럼 from TABLE이름;
-> select 조회하려는컬럼 from TABLE이름 where 컬럼='찾는내용';
select * from TABLE이름; 은 *은 모든컬럼을 조회한다. 따라서 해당 TABLE의 모든내용을 볼 수 있다.
* 위치에 해당 컬럼들을 입력하면 해당컬럼의 내용만 조회할 수 있다.
select는 다른구문과는 다르게 문자열을 출력하기도한다.
** INSERT
-> insert into user_info (컬럼, 컬럼) value (입력값, 입력값);
-> insert into user_info value (입력값,입력값,...);
no에는 1 id에는 hi pw에는 md5('1234')라는 값이 입력된다.
여기서 md5는 해시함수로써 해당 1234 문자열을 일정한 길이의 값으로 바꾼다.
해당 컬럼수만큼 순서대로 값이 입력된다.
table 설정에서 auto_increment와 primary key 설정을 했을 시에 주의해야한다. 위와같이 1번 정보를 입력한뒤 임의적으로 5번이라고 지정하면 번호순서대로 저장되는 auto_increment 속성에 적합하지 않다. 아래와 같이 id, pw만을 따로 입력한다면 no는 자동으로 입력된다.
auto_increment와 primary key를 설정했을 경우에는 이런방법을 통해 입력하는것이 바람직하다.
** UPDATE
-> update TABLE이름 set 컬럼='수정할 값'
-> updata TABLE이름 set 컬럼='수정할 값' where 컬럼='수정될 값'
where 조건을 사용하지않으면 해당 테이블의 id값이 전부 bye로 바뀌게된다.
where 조건을 이용한다면 원하는 값만 수정할 수 있다.
** DELETE
-> delete from 삭제하려는TABLE이름;
-> delete from 삭제하려는TABLE이름 where 컬럼='삭제하려는 값';
where조건을 사용하지 않는다면 만들어놓은 테이블의 모든내용이 한번에 삭제된다. 이때 테이블 속성은 그대로 남아있다.
where조건을 이용해 테이블중 원하는 목록만 삭제할 수 있다.
3. DCL(Data Control Language)
- 데이터를 제어할 수 있는 구문
- 권한, 트랜잭션( 누군가 수정을 할때 다른사람이 조회를 못하도록 하려고 )
'정보보안 > 웹보안' 카테고리의 다른 글
웹보안_12. 해시와 암호화의 차이 (0) | 2018.02.26 |
---|---|
웹보안_11. MYSQL과 PHP연동하기 (0) | 2018.02.24 |
웹보안_9. 웹페이지 인증 (0) | 2018.02.22 |
웹보안_8. GET/POST방식 (0) | 2018.02.21 |
웹보안_7. php (0) | 2018.02.20 |