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을 이용해서
조건을 명시해주지 않는다면 테이블 전체 내용이 모두 삭제된다 )
'프로그래밍 > WEB HACKING' 카테고리의 다른 글
[WEB HACKING] 게시판 만들기(2) 메인 페이지 / 로그인 구현하기 / DB 연결 페이지 (2) | 2017.08.29 |
---|---|
[WEB HACKING] 게시판 만들기(1) 시나리오 / 회원가입 페이지 만들기 (4) | 2017.08.29 |
[WEB HACKING] php 간단한 로그인 창 만들기 / 쿠키 & 세션 이용방법 (0) | 2017.08.29 |
[WEB HACKING] php 연관 배열, foreach / 데이터를 서버로 전달하는 방법( GET / POST / 쿠키 ) / 웹 인증 방법 (0) | 2017.08.17 |
[WEB HACKING] javascript 이벤트 / php 개념 및 슈퍼 글로벌 변수 (0) | 2017.08.17 |
댓글