본문 바로가기
프로그래밍/WEB HACKING

[WEB HACKING] DB SQL( DDL / DML / DCL ) 개념 / MySQL 설정 및 DB Query

by B T Y 2017. 8. 29.
반응형

DB SQL( DDL / DML / DCL ) 개념 / MySQL 설정 및 DB Query에 대해서 정리한다.

 

 

 

DBMS( DataBase Management System )

 

  - 데이터를 관리하는 체계

  - 데이터 관리 프로그램

 

  - MySQL, ORACLE, DB2, ...

  - MariaDB

 

 

 

SQL( Structured Query Language )

 

  - DBMS에서 사용할 수 있는 언어

  - 거의 대부분의 DBMS가 지원

 

 

1. DDL ( Data Definition Language )

  - 데이터 정의어

  - 실제 데이터의 변경은 불가능

 

  - CREATE, DROP, ALTER, ...

 

 

2. DML ( Data Manipulation Language )

  - 데이터 조작어

  - 실제 데이터의 변경이 가능

  - 입력, 확인, 수정, 삭제

 

  - INSERT, SELECT, UPDATE, DELETE

 

3. DCL ( Data Control Language )

  - 데이터 제어어

  - 권한, 트랜잭션, ...

 

 

* MySQL 설치

mysql-server.i686, mysql.i686, php-mysql

 

 

1. mysql server 접속

 

  - 기본적으로는 외부에서의 접속은 비활성화 되어 있다.

  - 처음에는 로컬에서만 접속이 가능

  - 기본 사용자는 "root"로 지정

  - 리눅스 시스템의 root 사용자와는 다른 사용자이다.

  - mysql 서버의 관리자

 

 

( mysql을 설치한후에 netstat -ant나 ps -ef | grep mysql을 이용해서 서비스가 정상적으로 실행되고 있는지 확인한다 )

 

 

2. mysql 루트 사용자 패스워드 설정

 

#> mysqladmin -u root password <사용할 password>

 

 

( mysqladmin -u root password를 이용해서 root의 패스워드를 설정하게 되면 비밀번호 없이는 접속이 불가능하다 )

 

 

( mysql -u root -p를 이용하면 비밀번호를 입력할수 있고 조금전에 설정한 비밀번호를 입력하면 mysql에 접속할 수 있다 )

 

 

 

 

3. 데이터베이스 ( DB )

 

  - 데이터를 관리하는 단위

 

1). DB 목록 확인

 

  mysql> show databases;

 

2). DB 생성: CREATE

 

  mysql> CREATE DATABASE DB이름;

 

3). DB 삭제: DROP

 

  mysql> DROP DATABASE DB이름;

 

4). DB 선택: USE

 

  mysql> use DB이름;

 

  * DB에 처음 접속하게 되면 DB가 선택되 있지 않기 때문에 use 명령어를 이용해서 선택해줘야 한다.

 

 

 

 

 

4. 테이블 ( TABLE )

 

  - 테이블을 정의: 데이터의 모양을 정의

 

  - 사용자 정보: user, usr, user_info, info, ...

  - 게시판 정보: session, cookie, session_id, ...

  - 댓글 정보: board

  - 세션 정보: reply

 

 

1). user 테이블 생성

 

  - 열을 정의: 번호( 식별자 ), 사용자 아이디, 패스워드( md5 ), 이메일

 

  - 번호(no): 중복 불가능( primary key ), 자동으로 생성( auto_increment ), 정수 타입

  - 사용자 아이디(user_id): 널값 불가능, 문자열 타입( 최대 15글자 )

  - 사용자 패스워드(user_pw): 널값 불가능, 문자열 타입( 최대 50글자 )

  - 이메일(email): 널값 가능, 문자열 타입( 최대 30글자 )

 

    * mysql 공식 사이트: https://dev.mysql.com/

 

 

5. DDL

 

1). 테이블 생성: CREATE

    mysql> CREATE TABLE 테이블 이름( 열 이름 타입..., 열 이름, ..., ... );

 

    mysql> create table user( no int auto_increment primary key, user_id varchar(15) not null, user_pw char(50) not null, email varchar(30) not null );

 

 

2). 테이블 삭제: DROP

    mysql> DROP TABLE  테이블 이름;

 

 

6. DML

 

1). 입력: INSERT

 

    mysql> INSERT INTO 테이블이름 VALUE( 값, 값, ... );

    mysql> INSERT INTO 테이블이름 (컬럼이름, 컬럼이름, ...) VALUE(값, 값, ... );

 

2). 확인(조회): SELECT

 

    mysql> SELECT 컬럼이름, 컬럼이름, ... FROM 테이블 이름;

    mysql> SELECT 컬럼이름, 컬럼이름, ... FROM 테이블 이름 WEHRE 조건;

                                                  -----------

                                            조건절

 

    mysql> SELECT 컬럼이름, 컬럼이름, ... FROM 테이블 이름 WEHRE 조건 and|or 조건;

 

 

    * 조건: 컬럼이름 부등호|등호 값( 예를 들면 no=1, no > 10, ... )

 

 

3). 수정: UPDATE

 

    mysql> UPDATE 테이블 이름 SET 수정할 컬럼이름=값, 수정할 컬럼이름=값, ...

    mysql> UPDATE 테이블 이름 SET 수정할 컬럼이름=값, 수정할 컬럼이름=값, ... WHERE 조건;

 

    * 수정을 할때 테이블 안에 여러 행의 값이 바뀌지 않기 위해서는 조건절을 줘서 정확하게 지정해준다.

     ( 보통 primary key를 지정해놓은 컬럼을 이용한다 )

 

 

4). 삭제: DELETE

 

    mysql> DELETE FROM 테이블 이름;

    mysql> DELETE FROM 테이블 이름 WHERE 조건;

 

    * 테이블의 전체 내용을 삭제해도 auto_increment가 적용된 열은 초기화 되지 않고 

      이전에 사용된 번호에서 1 증가하게 된다.

 

 

 

( 생성된 테이블의 구조를 확인하고 싶을때는 desc 테이블명;을 입력하면 확인이 가능하다 )

 

 

 

( select 명령을 통해 테이블을 조회할때 컬럼명을 따로 지정할수도 있지만 전체 컬럼을 보기 원하는 경우에는 *를 사용해준다 )

 

 

( update 쿼리를 실행할때는 where로 조건을 따로 지정해주지 않는다면 해당 테이블 해당 컬럼 전체의 내용이 변경된다 )

 

 

( where을 이용해서 바꾸고 싶은 부분만 바꿀수 있도록 조건을 제대로 지정해줘야 하고 

보통은 primary key를 지정한 컬럼을 이용해서 조건을 지정해주면 중복될 일이없다 )

 

 

( delete를 이용해서 테이블 삭제를 할때도 마찬가지로 where을 이용해서 

조건을 명시해주지 않는다면 테이블 전체 내용이 모두 삭제된다 )

 

 

 

 

반응형

댓글