[MYSQL PHP 함수] PHP, MYSQL 기초 쿼리문 정리
										
										2013.05.24
									 
								 
	
								 
									
									
											북마크  작성자 정보
									
									
									
											
											
													작성일/수정일
													2006-03-10 11:03:45 / 2013-05-24 00:00:00
  
											 
									 
									가. 테이블생성
mysql> create table 테이블명(
    -> 컬럼명 데이터 타입,
    -> 컬럼명 데이터 타입,
    -> 컬럼명 데이터 타입,
    -> )
mysql> create table user(
    -> id   varchar(15) not null,
    -> name varchar(15),
    -> sex  char(1),
    -> age  int,
    -> primary key(id)
    -> );
premary로 지정한 컬럼은 유일한 값만 입력할 수 있다는 것이 특징입니다.한마디로 중복값을 허용하지 않는 다는 의미이며, null(없는 값)이 들어갈수 없습니다.
테이블 목록구하기
mysql> show table;
테이블별 데이터 개수 구하기
mysql> SELECT TABLE_ROWS FROM information_schema, TABLES table_schema = "데이터베이스명" order by TABLE_ROWS DESC;
** TABLE_ROWS 가 테이블당 data 개수
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
나. 테이터 변경
alter table 테이블명 add 새로운컬럼명 데이터 타입;
mysql> alter table user add birth date;
alter table 테이블명 drop 삭제하는 컬럼명;
mysql> alter table user drop birth;
alter table 테이블명 change 예전컬럼명 새로운칼럼명 테이터형;
mysql> alter table user change birth birthday int;
alter table 테이블명 modify 컬럼명 새로운 데이터형;
mysql> alter table user modify borthday date;
alter table 예전테이블명 rename 새로운테이블명;
mysql> alter table user rename userdate;
---------------------------------------------------------------------
다. 테이블과 데이터베이스의 삭제
drop table 삭제할 테이블명;
mysql> drop table test;
drops database 삭제할 데이터베이스명;
mysql> drop databases imsi;
---------------------------------------------------------------------
라. 테이터 삽입
insert into 테이블명(컬러명1, 컬럼명2, ...)valuse(컬럼값1, 컬럼값2,... );
mysql> insert into userdata(id, name, sex,age);
    -> valuse('hong','홍길동','M','28');
컬럼명과 컬럼값만 일치한다면 순서는 바뀌어도 동일하게 입력된다.
---------------------------------------------------------------------
마. 데이터 검색
select 컬럼명1, 컬럼명2 from 테이블명 ;
mysql> select id name from userdata;
mysql> select * from userdata;
--------------------------------------------------------------------
- 중복레코드제거(distict)
distinct는 중복 레코드를 제거하기 위해서 사용합니다.
mysql> select distinct name from userdate;
- 조건검색
조건검색은 말 그대로 조건을 줘서 검색을 하는 것입니다. 나이가 26살이 
넘는 사람만 검색
mysql> select * from userdata where age>26;
mysql> select * from userdata where age>26 and name='홍길동';
or를 사용해서 나이가 26살 넘거나 성별이 여자인 경우를 검색
mysql> select * from userdata where age>26 od sex='F';
- 순서로 정렬검색(oder by, desc, asc)
테이블에서 데이터를 검색할 때 컬럼의 값을 오름차순 또는 내침차순으로 
정렬하여 검색할 수 있습니다.
oder by : 기본적으로 오름차순으로 정렬됩니다.
doer by desc : 내림차순으로 정렬
mysql> select * from userdata oder by age desc;
mysql> select * from userdata oder by age;
- 함수를 이용한 검색 
새부적인 검색을 위해서는 MYSQL는 몇 가지 함수를 이용할 수 있습니다. 
예를 들어 나이가 가장많은 사람의 사용자데이터를 검색한다든지, 사용자중에 암성 사용자의 수를 계산한다든지 할때 함수가 유용하게 스입니다.
먼저 몯든 레코드의 수를 계산해보겠습니다.
mysql> select count(*) from userdata;
mysql> select sun(age) from userdata;
mysql> select avg(sge) from userdata where sex='M';
mysql> select max(age) from userdata;
mysql> select min(age) from userdata;
- Group by를 이용한 검색
Group by는 명세된 컬럼의 값별로 분할하는 기능을 갖고 있습니다. 예를 들어 사용자를 성별로 구별하고 싶다고  group by를 sex 컬럼에 적용하면 남성과 여성으로 구분하여 검색을 할 수 있습니다. 그러면 남성과 여성 사용자의 수를 검색하는 예를 보겠습니다.
mysql> select sex, count(*) from userdata group by sex;
- having을 이영한 검색
having은 행의 그룹에 적용될 조건을 정의할 수 있습니다. 그러면 성별로 
그룹을 지어서 그 수가 3개 이상인 그룹의 성과 사용자들의 나이 평균 값을 검색해 보겠습니다.
mysql> select sex, avg(age) from userdata 
    -> group by sex
    -> having count(*) > 3;
- Like를 이용한 검색
mysql> select id,name from userdata where name like '김%';
mysql> select id,name from userdata where name like '_미%';
-Limit를 이용한 검색
mysql> select * from userdata limit 4;
---------------------------------------------------------------------
바. 데이터 수정
테이블의 데이터를 수정하기 위해서는 update문을 사용합니다. update문은
다음과 같은 형식으로 사용합니다.
update 테이블 set 컬럼명=컬럼값 (where 조건)
mysql> update userdata set age=30 where id='웅';
mysql> usdate userdata set age=age+1 where name='유미현';
---------------------------------------------------------------------
사. 데이터 삭제 
delect from 테이블명 (where 조건)
mysql> delect from userdata where name='홍길동';
---------------------------------------------------------------------
아. MySQL문법 , API , MySQL 정리 
CREATE DATABASE  데이타베이스 생성 
DROP DATABASE      데이타베이스 삭제 
CREATE TABLE        테이블 생성 
SHOW TABLE            생성된 테이블보기 
SHOW COLUMNS      테이블의 컬럼속성확인하기 
ALTER TABLE          테이블 변경 
DROP TABLE            테이블 삭제 
SELECT                  테이블 데이터 검색 
INSERT                  테이블 데이터 추가 
UPDATE                  테이블 데이터 수정 
DELETE                  테이블 데이터 삭제 
MySQL API 함수 
mysql_connect        접속 
mysql_close            접속해제 
mysql_select_db      디비선택 
mysql_create_db      디비생성 
mysql_drop_db        디비삭제 
mysql_errno            에러번호 
mysql_error            에러내용 
mysql_query          쿼리전송 
mysql_num_rows    레코드 수 
mysql_num_fields    필드 수 
mysql_field_name    필드 이름 
mysql_field_type      필드 타입 
mysql_field_len        필드 길이 
mysql_field_flag      필드항목 
mysql_field_table      필드가 속한 테이블 
mysql_fetch_row      하나의 레코드 데이터 
mysql_fetch_array    레코드를 배열로 
mysql_fetch_object  레코드를 오브젝트로 
mysql_result          필드 값 
mysql_free_result    점유한 메모리 
mysql_data_seek      지정한 레코드위치로이동 
mysql_fetch_field      필드정보를 오브젝트로 
mysql_fetch_lengths  필드크기 
mysql_list_dbs          디비리스트 
mysql_list_tables      테이블리스트 
mysql_list_fields        필드리스트 
mysql_pcconnect      접속유지 
MySQL 필드 타입(자료형) 설정(중요) 
tinyint [부호있는 정수 -128 ~ 127 - 부호없는 정수 0 ~ 255]1 byte 
smallint [ 부호있는 정수 -32,768 ~ 32,767 - 부호없는 정수 0 ~ 65,536 ]2 byte 
mediumint [ 부호있는 정수 -8,388,608 ~ 8,388,607 - 부호없는 정수 0 ~ 16,777,215 ] 3 byte 
int 혹은 integer [ 부호있는 정수 -2,147,483,648 ~ 2,147,483,647 - 부호없는 정수 0 ~ 4,294,967,295] 4 byte 
bigint [부호있는 정수 -9223,372,036,854,775,808 ~ -9223,372,036,854,775,807 
        부호없는 정수 0 ~ 18,446,744,073,709,551,615 ] 8 byte 
float [ 부동 소수점 -3.402823488E+38 ~ 3.402823488E+38 ] 
double [ 부동 소수점 -1.79769313486231517E+308 ~ 1.79769313486231517E+308 ] 
date 날짜 [ 1000-01-01 ~ 9999-12-31 ]3 byte 
datetime 날짜와 시간 [ 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 ] 8 byte 
timesstamp [ 1970-01-01 00:00:00 ~ 2037 년까지] 4 byte 
time 시간 [ -839:59:59 ~ 838:59:59 ] 
year 연도 [ 1901 년 ~ 2155 년 ] 
char(LENGTH = 1 ~ 255) 고정 길이 문자열을 표현하는 유형 
vchar(LENGTH = 1 ~ 255) 가변 길이 문자열을 표현하는 유형 
tinyblob 255 개 문자를 저장 
blob : binary large object의 약자 
tinytext 
blob text 65,535 개의 문자를 저장 
mediumblob 16,777,215 개의 문자를 저장 
mediumtext 
longblob 4,294,967,295 (4 giga) 
longtext