Transcript MySQL
PHP의 기본문법
모든 언어에는 문법이 있듯 PHP역시 문법을 가지고 있다. 프로그램의 입문단계인 변
수와 함수 연산자, 제어문등의 기본문법을 익히고 간단한
예제를 실습하여 본다.
<핵심이 되는 KEY>
1. PHP 프로그램작성 요령익히기.
2. PHP에서의 변수와 함수 배열의 정의와 사용법 익히기.
3. PHP의 연산자와 제어문의 정의와 사용법 익히기
MySQL 서버 구조
MySQL 서버
데이터베이스1
테이블1
테이블2
데이터베이스2
테이블1
테이블2
데이터베이스3
테이블1
테이블2
<인사 카드 데이터베이스 파일>
필드1
필드2
필드5
이름
번호
부서
직위
구내전화번호
박미경
AD10836
총무부
부장
202
조영석
GH94739
인사부
과장
702
나상민
JK01773
영업부
대리
504
이민석
AS19383
인사부
사원
308
김태범
JF30576
전산부
부장
903
노은아
VB61569
총무부
대리
305
한민철
CX73836
전산부
사원
502
민소영
MA03848
영업부
대리
406
레코드
테이블
용어
데이타베이스(database) : 테이블의 모임
테이블(table) : 데이터들의 모임
필드(field) : 이름, 번호 등과 같이 세로 줄의 자
료
레코드(record) : 작업의 대상이 되는 자료의 단
위
기본키(primary key) : 각 레코드를 구분하는 필
드키
MySQL 서버의 시작과 종료
C\>cd mysql
C\>mysql>cd bin
C\>mysql\bin>NET START mysql
MySQL 서버 기동
C\>mysql\bin>mysql.exe
mysql: MySQL 서버에 접속하여 SQL 쿼리를
실행할수 있는 대화형 방식의 MySQL 클라
이언트 유틸리티
mysql>quit
MySQL 셀 프롬프트 둘러보기
mysql>show databases;
//MySQL에 존재하는 모든 테이터 베이스의 목록을 보여줌
mysql>use mysql;
//MySQL이란 데이터 베이스를 사용하겠다는 의미
mysql>show tables;
//mysql 데이터베이스의 테이블 리스트를 보여줌
MySQL 셀 프롬프트
SQL 명령문은 반드시 세미콜론으로 끝남
MySQL 셀에서 명령 -> MySQL은 명령을 서버
보냄->서버는 명령을 실행하여 결과를 화면 >MySQL 프롬프트(명령 대기 상태)
저장된 데이터를 행과 열의 상태로 보여줌
명령 실행 시간을 보여줌
키워드는 대, 소문자 구분 없음
MySQL 셀 프롬프트
mysql>desc host;
//desc 테이블명
//host 라는 테이블의 구조 정보를 출력
//desc == describe의 약자
mysql>desc user;
//데이터 베이스의 사용자 정보와 접근 권한에 대한 정보
//user 테이블에 새 user를 추가할 때는 Host, User, Password만
을 허용하고 나머지 권한은 모두 기본값인 ‘접근불가’ (N)으로 설정
MySQL 셀 프롬프트
mysql>select host,user,password from
user;
//root: MySQL 서버를 시작하고 종료하며, 재기동 할수 있고
새로운 데이터 베이스와 테이블, 그리고 테이블로의 데이터 삽
입과 수정, 삭제, 검색 등의 조작을 할 수 있는 절대 권한 관리
자
+-----------+------+----------+
| host
| user | password |
+-----------+------+----------+
| localhost | root |
|
|%
|
|
|
| localhost |
|
|
|%
| root |
|
+-----------+------+----------+
4 rows in set (0.45 sec)
root 패스워드 변경하기1
mysql>update user set
password=password(‘cableguy’) where
user=‘root’;
mysql>flush privileges;
mysql>select host,user,password from user;
//user 테이블의 정보가 갱신되었으로 MySQL서버를 재기동해
야 변경된 값이 적용
c:\mysql\bin>mysql –u root
c:\mysql\bin>mysql –u root –p
//-u 사용자 지정 -p 패스워드 사용
root 패스워드 변경하기2
mysql>SET PASSWORD for
root=password(‘new-passwd’);
root 패스워드 변경하기3
bin>mysqladmin –u root password new-passwd
mysql>use mysql;
mysql>select Host, user, password from user
where user = ‘root’;
root 암호 다시 설정
MySQL 데몬 정지.
bin>mysql –u root mysql
mysql>update user set
password=password(‘newpassword’) where
user=‘root’;
mysql>flush privilegess;
MySQL 데몬 정지. 다시 시작
새로운 사용자 추가 방법
mysql>GRANT ALL PRIVILEGES ON *.* to
master@localhost IDENTIFIED BY ‘master!!’
WITH GRANT OPTION;
mysql>insert into user
values(‘localhost’,’test’,password(‘test!!’),
‘y’,’y’,’y’,’y’,’y’,‘y’,’y’,’y’,’y’,’y’,’y’,’y’,’y’,’y’);
일부 권한 주기
mysql>GRANT ALL PRIVILEGES ON PHP.* to
cableguy@localhost IDENTIFIED BY
‘master!!’;
mysql>GRANT SELECT, INSERT on PHP.* to
shboll@localhost IDENTIFIED BY ‘dasuni’;
새로운 데이터 베이스 만들기
//MySQL 프롬프트에서 데이터 베이스 생성하기
mysql>create database testdb;
mysql>show databases;
mysql>drop database testdb;
mysql>show databases;
//drop으로 삭제된 데이터베이스는 복구 불가능
데이터 베이스 저장
C:\>mysql\data\database이름\
table이름.frm – 테이블 정의에 대한 정보
table이름.ism – 인덱스
table이름.isd – 데이터
mysql>use mysql; //mysql 데이터베이스를 사용
mysql>show tables; //mysql 데이터베이스의 테이블 정보 확
인
SQL의 문법
SQL(Structured Query Language) :
//mySQL, 오라클,mSQL 등 DBMS라고 불리는 소프트웨어
에서 쓰이는 표준적인 데이터 베이스 질의어
DBMS(Database Management System) :
//데이터베이스 관리 시스템.
//데이터의 관리를 맡는 프로그램
//필요한 데이터베이스를 만들고 관리하며 사용자의 요구
에 맞는 결과값을 추출하는 역할
DBMS의 역할
응용 프로그램 a
응용 프로그램 b
데이터베이스
DBMS
파일 n
응용 프로그램 n
SQL 정의문
1)테이블 생성, 수정, 삭제
2)저장할 데이터의 자료형의 정의
CREAT TABLE-테이블 생성
ALTER TABLE-생성된 테이블을 변경
DROP TABLE-필요 없는 테이블 삭제
변수 정의(저장할 데이터에 따라)
데이터 조작문
1)새로운 데이터 삽입
2)저장된 데이터의 수정,삭제,검색
INSERT – 새 데이터 삽입
UPDATE – 데이터를 수정(갱신)
DELETE – 필요 없거나 잘못된 데이터를 삭제
SELECT – 사용자 요구에 맞는 데이터 찾기
회원정보
User
취미
지역
이름
baseball
야구
서울
최우원
Socker
축구
경주
심상민
ttt1234
야구
경기
신현동
swim
수영
경기
정종권
foot
족구
대구
공성현
pingp
탁구
목포
신유진
music
음악
광주
윤대한
movie
영화
서울
권영주
drink
음주
서울
김영훈
행(레코드)
열(필드)
데이터 베이스 생성
mysql>create database [생성할 db명];
mysql>drop database [삭제할 db명];
mysql>show databases;
//데이터 베이스를 사용하기 위한 권한 획득
//php 데이터 베이스를 dasuni의 권한으로 넘김
mysql>GRANT ALL ON php.* TO dasuni;
mysql>use php;
테이블 만들기
//primary key: 회원 개개인의 식별 요소. 하나의 테이블에서 고유하게 쓰
일 수 있는 key -NULL 값을 가지면 안됨
mysql>CREATE TABLE testone
( user CHAR(20) NOT NULL,
hobby VARCHAR(20), region
VARCHAR(20),name VARCHAR(30),
PRIMARY KEY(user));
mysql>show tables;
mysql>describe [table명];//데이블의 열이름
과 자료형
mysql>DROP TABLE testone;
MySQL의 변수
int : 4byte 정수
char(m) : m개의 문자
varchar(m) : 최대 m개를 넘지 않는 문자
text : 최대 길이가 64KB인 text형
테이블에 데이터 넣기
LOAD DATA 사용
1. testone.txt –tab키 테이터 구분
2. 마지막 행에 빈줄 삽입 주의
3. /bin 에 저장
mysql>LOAD DATA LOCAL INFILE “testone.txt”
INTO TABLE testone;
mysql>SELECT * FROM testone;
테이블에 데이터 넣기
mysql>insert into testone
(user, hobby,region,name) values
(“cableguy”,”음주”,”부산”,”최우원”);
mysql>insert into testone values
(“shboll”,”등산”,”경주”,”공성현”);
mysql>insert into testone (user, hobby) values
(“beauty”, “등산”);
mysql>select * from testone;
조건에 맞는 행 검색하기
SELECT * FROM testone WHERE
user=“cableguy”;
SELECT * FROM testone WHERE region=“서울”;
조건에 맞는 열만 검색하기
SELECT region FROM testone;
테이블로부터 정보 추출하기
SELECT * FROM [검색할 테이블 이름]
SELECT 필드명1,필드명2,.. FROM [검색할 테
이블 이름] WHERE [검색 조건]
SELECT user, hobby FROM testone WHERE
region=“서울”;
SELECT hobby,user,name FROM testone
WHERE region=“경기”;
SELECT region FROM testone;
SELECT DISTINCT region FROM testone;
WHERE 조건 검색의 연산자
연산자 : AND, OR, NOT, <, <=, >, =>, =
SELECT name, user FROM testone
WHERE hobby=“야구” OR region=“서울”;
SELECT * FROM testone
WHERE NOT(region=“서울”);
LIKE를 이용한 문자열 검색
SELECT user FROM testone WHERE name
LIKE ‘%영%’;
%CHAR% : CHAR라는 문자열이 포함된 모든
레코드 검색
%CHAR
: 문자열의 끝이 CHAR로 끝나는 레
코드만 검색
CHAR%
: 문자열이 CHAR로 시작하는 레코
드만 검색
유용한 검색 조건
count(검색 대상 필드) : 조건을 만족시키는 레
코드의 개수
avg(검색 대상 필드) : 검색 대상 필드의 평균값
max(검색 대상 필드) : 검색 대상 필드의 값 중
최대값
min(검색 대상 필드) : 검색 대상 필드의 값 중
최소값
sum(검색 대상 필드) : 검색 대상 필드의 합
SELECT count(필드 이름) FROM 테이블이름
WHERE 조건
NULL 값을 갖는 레코드 검색하기
SELECT 필드명1, 필드명2,..
FROM 테이블이름
WHERE 필드명 IS NULL;
SELECT 필드명1, 필드명2,..
FROM 테이블이름
WHERE 필드명 IS NOT NULL;
DELETE문 사용하기
DELETE FROM testone;
//테이블의 구조 유지
DROP TABLE testone;
//테이블의 삭제
LOAD DATA LOCAL INFILE “testone.txt”
INTO TABLE testone;
조건에 맞는 삭제
//레코드의 삭제
DELETE FROM testone WHERE user=“cableguy”;
//레코드 삽입
mysql>insert into testone values
(“shboll”,”등산”,”경주”,”공성현”);
UPDATE문을 이용한 수정 작업
UPDATE testone SET
해당필드이름=“수정데이터”
WHERE name=“해당 행 이름”
UPDATE testone SET hobby=“게임”
WHERE user=“cableguy”;
테이블에 새로운 열 추가하기
//필드 개수를 늘려야 할 경우
ALTER TABLE [테이블 이름]
ADD [추가필드명][변수타입]
//mail 필드를 추가 //정수형 age 추가
ALTER TABLE testone
ADD COLUMN mail VARCHAR(30);
//ALTER TABLE로 추가-데이터 값은 NULL
데이터 정렬하기
//오름차순 정렬
select * from testone order by age asc;
//내림차순 정렬
select * from testone order by age desc;
필드의 제거
ALTER TABLE testone
DROP COLUMN mail;
//필드의 속성 변경
ALTER TABLE testone
CHANGE COLUMN mail address
VARCHAR(30);
UPDATE로 address 삽입
//insert문은 레코드 추가
UPDATE testone SET
“[email protected]”
WHERE user=“cableguy”;
테이블 명 변경하기
ALTER TABLE [테이블이름]
RENAME [AS] [수정테이블이름];
ALTER TABLE testone
RENAME test;
테이터 백업과 복구
C:\mysql\bin\mysqldump –u [DB사용자]
-p[패스워드]
[백업할 데이터베이스 이름]
> [파일이름]
C:\mysql\bin\mysqldump –u dasuni
-pyagn@@ testdb >testdb.sql
테이터의 복구
C:\mysql\bin>mysql –u dasuni –pdasuni&
testdb <testdb.sql
SQL 정의문
1)테이블 생성, 수정, 삭제
2)저장할 데이터의 자료형의 정의
CREAT TABLE-테이블 생성
ALTER TABLE-생성된 테이블을 변경
DROP TABLE-필요 없는 테이블 삭제
변수 정의(저장할 데이터에 따라)
데이터 조작문
1)새로운 데이터 삽입
2)저장된 데이터의 수정,삭제,검색
INSERT – 새 데이터 삽입
UPDATE – 데이터를 수정(갱신)
DELETE – 필요 없거나 잘못된 데이터를 삭제
SELECT – 사용자 요구에 맞는 데이터 찾기
user table
칼럼명
설명
Host
해당 사용자가 연결 가능한 호스트 지정. Host 이
외의 호스트에서는 연결할 수 없다.
User
사용자 이름
Password
사용자 암호
Alter_priv
테이블이나 인덱스 변경에 대한 권한
Create_priv 데이터 베이스 또는 테이블 생성에 대한 권한
Delete_priv
테이블에서 레코드 삭제 권한
Drop_priv
데이터 베이스 또는 테이블 삭제 권함
user table(2)
칼럼명
설명
Index_priv
인덱스 생성 삭제 권한
insert_priv
테이블에 레코드를 삽입 권한
References_priv
사용하지 않음
Select_priv
테이블에 Select할 수 있는 권한
Update_priv
테이블에 Update할 수 있는 권한
File_priv
파일에 대한 권한(LOAD DATA INFILE 또는
SELECT INTO FILE 사용에 대한 권한
Process_priv
쓰레드의 정보를 볼 수 있는 권한, 쓰레드를 실행
중지할 수 있는 권한
Reload_priv
권한 테이블이나 테이블 캐시를 다시 읽어들일 수
있는 권한
Shutdown_priv
MySQL 서버의 실행을 중지시키는 권한
주의 할 점
Select_priv는 테이블에서 데이터를 가져오는 권한만을
지정.
일반 사용자에게는 File_priv 권한을 주지 않음.
Process_priv도 일반 사용자에게 권한을 주지 않음
Shutdown_priv 권한이 있는 사용자는 MySQL서버의 실
행을 종료 가능
단순히 테이블에서 데이터를 가져올 목적으로 만든 사
용자에게는 Update, delete, Drop, Alter권한을 주자 않
음
새로운 사용자 추가(2)
mysql>GRANT ALL PRIVILEGES ON sample.*
to shboll@localhost IDENTIFIED BY
‘password’ WITH GRANT OPTION;
mysql>GRANT SELECT, INSERT PRIVILEGES
ON sample.test to [email protected].%
IDENTIFIED BY ‘password’ WITH GRANT
OPTION;
PHP에서 MySQL 연동하기
MySQL에 접속한다.
DB를 선택한다.
쿼리를 수행한다.
작업을 수행한다.
DB를 종료한다.
MySQL의 접속을 끊는다.