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의 접속을 끊는다.