[MYSQL함수] PHP, MYSQL 기초 쿼리문 정리
2019.08.22
북마크 작성자 정보
작성자
꿘쓰

작성일/수정일
2011-04-15 12:08:18 / 2019-08-22 12:08:18
MySQL에서 지원하는 데이터타입
INT : 4bytes 정수
CHAR(n) : 문자의 수가 n개인 문자열
VARCHAE(n) : 문자의 수가 최대 n개인 문자열
TEXT : 문자의 수가 최대 65535개인 문자열
CREATE TABLE (새로운 테이블 생성)
create table 테이블명 (
필드명 데이터타입 [NOT NULL]
{, 필드명 데이터타입 [NOT NULL]}*
[,PRIMARY KEY (필드명)]
)
ALTER TABLE(테이블구조 및 속성변경)
기존의 테이블구조 변경
1. 필드추가생성
ALTER TABLE 테이블명 ADD [COLUMN] 필드명 필드타입
예) ALTER TABLE userdb ADD COLUMN addr VARCHAR(100)
2. 필드속성변경
ALTER TABLE 테이블명 CHANGE [COLUMN] 기존필드명 새필드명 필드타입
예)ALTER TABLE userdb ADD addr VARCHAE(100)
예) ALTER TABLE userdb CHANGE COLUMN addr address VARCHAR(255)
3. 필드삭제
ALTER TABLE 테이블명 DROP [COLUMN] 필드명
예) ALTER TABLE userdb DROP COLUMN address
4. 기존의 테이블삭제
DROP TABLE 테이블명
SELECT (데이터검색하기)
SELECT [DISTINCT] 테이블명 {, 테이블명}*
FROM 필드명 {,필드명}*
[WHERE 검색조건]
[ORDER BY 필드명[ASC or DESC] {,필드명 [ASC or DESC]}*]
[GROUP BY 필드명 {, 필드명}*]
[HAVING 검색조건]
1. 일반적인 검색
SELECT name, id FROM userdb WHERE level = 'B'
//(name,id 이름을 갖고 level B 인 것을 userdb필드에서 찾으시오.)
SELCET * FROM userdb
//(userdb 필드의 모든 내용을 찾으시오(보이시오))
SELECT name, id, email, sex, milage, level FROM userdb
2. 결과레코드의 중복제거
//*DISTINCT가 중복된것을 제거하는 역할을 한다.
//*text데이터 형에서는 사용이 안된다.
SELECT level FROM userdb
//(level 이름을 갖는것을 userdb에서 찾으시오.(중복되게 나왔다고 치자~))
SELECT DISTINCT level FROM userdb
//(userdb에서 level이름을 갖는 테이블이 중복되었을시 제거한다)
3. 조건검색
SELECT name, id, email FROM userdb WHERE milage > 3000 AND sex = 'M'
4. 검색결과의 정렬
SELECT name, id, milage FROM userdb WHERE milage >= 3000 ORDER BY milage DESC
//(milage 항목에 대해 역순(내림차순)으로 정렬하여 보여주시오.(DESC를 사용하지 않읅 경우 오름차순으로 정렬된다.))
5. 검색결과에 대한 산술계산 및 문자열처리
SELECT name, '님의 마일리지는 ', milage, '점입니다.' FROM userdb WHERE milage >= 3000 ORDER BY milage
//(문자열처리가 ' ' 로 되었다.)
SELECT name, id, email, milage+300 FROM userdb WHERE id = 'soony'
//(산술계산처리에서 그냥 위에처럼 +300 하면은 되는구나.)
6. 그룹함수(group function)를 이용한 검색
SELECT count(*) FROM userdb WHERE sex = 'F'
//(count그룸의 모든것을 찾는다.?.뒤에 생략.)
SELECT avg(milage) FROM userdb WHERE sex='F'
7. GROUP BY를 이용한 검색
SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level
//(userdb필드에서 level인것끼리 묶어 준다.(GROUP BY는 일정 필드 중 같은 값끼리 묶어주는 질의어이다)
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex
8. HAVING을 이용한 검색
SELECT sex, max(milage), min(milage), avg(milage) FROM userdb GROUP BY sex HAVING sex = 'F'
//(!!!!!! WHERE 와 HAVING 의 차이점?
WHRE은 전체 데이터를 대상으로 조건을 주는 것이고.
HAVING은 GROUP BY 절과 함께 나와서 GROUP BY로 나온 결과중에서 일부분의 조건을 다시 줄 때 사용)
9. BETWEEN 연산자를 이용한 검색
SELECT name, email, mailage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000
//(BETWEEN 은 하나의 범위를 이용해 수치를 찾는 법!)
SELECT name, email, milage, sex FROM userdb WHERE sex = 'F' AND milage >= 3000 AND milage <= 4000
SELECT name, sex, milage FROM userdb WHERE milage NOT IN (3300,3500,3700)
IN 을 이용한 검색
SELECT count(*) FORM DB(table) WHERE shipcon = 'F' or shipcon = 'B'
SELECT count(*) FORM DB(table) WHERE shipcon IN ('F','B')
10. LIKE를 사용한 검색
SELECT name FROM userdb WHERE name, LIKE '%현%'
SELECT name, id, FROM userdb WHERE id LIKE 'm%'
//(내가 보기에는 LIKE가 상당히 좋은것 같음....ㅋ
※LIKE 는 WHERE 절중에서 사용되는 다른 하나의 인스트럭션입니다. LIKE 는 우리들로 하여금 하나의 양식에 (pattern) 따라 필요한 데이터를 찾을수 있게 합니다. 상대적으로 IN 을 응용할때는 우리가 필요한 조건을 완전히 알수 있지만; BETWEEN) 를 응용할때는 하나의 범위만 열거합니다. LIKE 의 용어는 아래와 같습니다:
SELECT "필드명"
FROM "도표명"
WHERE "단락명" LIKE {양식}
{양식}와일드 카드(wildcard)가 자주 포함됩니다. 아래는 여러가지 예입니다:
'A_Z': :임의치의 자원이 'A' 자로 시작하고 'Z' 자로 끝나는 모든 문자부호. 'ABZ' 와 'A2Z' 모두 이 양식에 부합되지만, 'AKKZ'는 부합되지 않습니다. A 와 Z 사이에 하나 아닌 두개의 문자가 있기때문입니다.).
'ABC%': 'ABC' 로 시작하는 모든 문자 부호. 예를 들면, 'ABCD' 와 'ABCABC' 는 모두 이 양식에 부합됩니다.
'%XYZ': 'XYZ' 로 끝나는 모든 문자 부호. 예를 들면, 'WXYZ' 와 'ZZXYZ' 는 모두 이 양식에 부합됩니다.
'%AN%': 'AN'양식을 포함하는 모든 문자부호.예를 들면 , 'LOS ANGELES' 와 'SAN FRANCISCO' 는 모두 이 양식에 부합됩니다.
11. NULL값을 갖는 데이터검색
SELECT name, id FROM userdb WHERE email IS NULL
//(눌값인걸 찾는 거구만.)
SELECT name, id FROM userdb WHERE email IS NOT NULL
INSERT (새로운 데이터의 삽입)
INSERT INTO 테이블명 [(필드명{[, 필드명]}*)] VALUES (필드값)
INSERT INTO userdb (name, id, email, sex, milage, level) VALUES ('이완철', 'yunka1018','sspark@kornet.net'.'M','3500','B')
//(userdb테이블에 VALUES 뒤의 내용들과 대응되는 해당 필드에 추가한다.)
INSERT INTO userdb VALUES('이완철', 'yunka1018','sspark@kornet.net','M','3500','B')
INSERT INTO userdb (id, name) VALUES('yunka1018','정양미')
데이터의 수정(UPDATE)
UPDATE 테이블명 SET 필드명=필드값 또는 산술식 {, 필드명 = 필드값 또는 산술식}*[WHERE 검색조건]
UPDATE userdb SET sex = 'F' WHERE name = '김현아'
//(userdb테이블의 name=김현아인 필드의 sex를 F 로 수정한다)
UPDATE userdb SET sex = 'F'
만일 위와 같이 WHERE절로 검색조건을 명시하지 않은 경우에는 해당테이블내의 모든레코드의 필드값이 설정한값으로 수정되므로 유의해야한다.
UPDATE userdb SET sex = 'F'
UPDATE userdb SET milage = milage + 300
DELETE (데이터의 삭제)
DELETE FROM 테이블명 [WHERE 검색조건]
DELETE FROM userdb WHERE id = 'king94'
DELETE FROM userdb
만일 위와 같이 검색조건을 지정하지 않으면 해당테이블내의 모든레코드가 삭제되므로 주의해야한다.
>>>>UNION
UNION인스트럭션의 목적은 SQL 어구의 결과를 합병하는것입니다. 이 각도로 볼때 UNION 는 JOIN 과 유사한 면이 있습니다. 그것은 이 두 인스트럭션 모두 여러개의 도표로 부터 데이터를 채용할수 있다는 것입니다. UNION의 규제는 두개의 SQL어구가 산생한 필드는 같은 데이터 종류여야 한다는 점입니다. 그리고 우리가 UNION 인스트럭션을 사용할때 부동한 데이터치(SELECT DISTINCT 와 유사함)만 볼수 있습니다.
*다음과 같이 사용한다.
[SQL 어구 1]
UNION
[SQL 어구 2]
*이해를 돕기위해~
union 과 union all 의 차이
A와 B의 합집합은 union과 union all을 사용하는데
그 차이가 뭐냐면
만약에 A 집합에 10 20 30 40
B 집합에 10 20 30
이 있으면
union : 10 20 30 40
union all : 10 20 30 40 10 20 30
즉 유니온 올은 중복된 데이터도 모두 출력하고 유니온은 중복된 데이터는 출력되지 않는다.
MYSQL 데이터베이스의 사용법
1. MYSQL서버의 기동과 종료
이하 디렉토리위치는 /usr/local/mysql/bin이다.
./bin/safe_mysql &
2. MYSQL서버의 종료 및 재기동
safelab.skku.ac.kr.pid파일은 MYSQL의 PID를 저장하고 있다.
kill -9 PID
mysqladmin -u root -p shutdown
mysqladmin -u root -p reload
3. mysqladmin 사용법
mysqladmin -u root -p reload
mysqladmin -u root -p create sample
mysqladmin -u root -p drop sample
4. mysql 클라이언트사용법
mysql -u root -pphp99 mysql
mysql -u root -p mysql
mysql>show databases;
mysql>show tables;
mysql>show columns from db;
mysql>desc db;
mysql>select host, user, password from user;
mysql>update user set password = password('php99') where user = 'root';
mysql>select host, user, password from user;
mysql>drop database sample;
5. 생성된 데이터베이스의 등록
mysql>insert into db values('%','sample','php','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>select host, db, user from db;
6. 새로운 사용자(데이터베이스 소유자)등록
mysql>insert into user (host, user, password) values('localhost','php','password('php99'));
mysql>select host, user, password from user;
7. 테이블의 생성과 수정 및 삭제
mysql -u root -p sample
mysql>show tables;
mysql>desc userdb;
mysql>alter table userdb change column id varchar(12) NOT NULL;
mysql>desc userdb;
mysql>drop table userdb;
mysql>show tables;
8. *.sql파일로 쉘에서 SQL명령어 실행
mysql -u root -p php99 sample < userdb.sql
mysql -u php -p sample
mysql>show tables;
9. 데이터의 백업과 복구
mysqldump -u [DB사용자명] -p [백업할 데이터베이스명] > [외부로 저장할 파일명]
mysqldump -u php -p sample > sample_backup.sql
cat sample_backup.sql
mysql -u php -p php99 sample < sample_backup.sql