◆ 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. 기존의 테이블삭제
◆ 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'
SELCET * FROM userdb
SELECT name, id, email, sex, milage, level FROM userdb |
2. 결과레코드의 중복제거
SELECT level FROM userdb
SELECT DISTINCT level FROM userdb |
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 |
5. 검색결과에 대한 산술계산 및 문자열처리
SELECT name, '님의 마일리지는 ', milage, '점입니다.' FROM userdb WHERE milage >= 3000 ORDER BY milage
SELECT name, id, email, milage+300 FROM userdbWHERE id = 'soony' |
6. 그룹함수(group function)를 이용한 검색
SELECT count(*) FROM userdb WHERE sex = 'F'
SELECT avg(milage) FROM userdb WHERE sex='F' |
7. GROUP BY를 이용한 검색
SELECT level, max(milage), min(milage), avg(milage) FROM userdb GROUP BY level
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' |
9. BETWEEN 연산자를 이용한 검색
SELECT name, email, mailage, sex FROM userdb WHERE sex = 'F' AND milage BETWEEN 3000 AND 4000
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) |
10. LIKE를 사용한 검색
SELECT name FROM userdb WHERE name, LIKE '%현%'
SELECT name, id, FROM userdb WHERE id LIKE 'm%' |
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')
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 = '김현아'
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
만일 위와 같이 검색조건을 지정하지 않으면 해당테이블내의 모든레코드가 삭제되므로 주의해야한다. |
◆ 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 |
---------------------------------------------------------------------------------------------------------------------------------------------------------------
출처 : http://www.lovelgw.com/Blog/257
MySQL 문자열 함수 다루기
MySQL 의 문자열 함수에 대해서 알아보겠습니다. 흔히들 MySQL 에서 SELECT한 데이터를 PHP에서 처리를 합니다. 하지만 MySQL에서 처리를 할경우 처리에 대한 오버헤드가 덜 발생하고 그만큼 좀더 효율적으로 프로그래밍을 할 수 있습니다. 자주 사용하는 문자열 함수에 대해서 알아보도록 하겠습니다.
CHAR_LENGTH(string) 문자열의 길이를 알아봅니다. 2Byte문자는 1개로 취급합니다. mysql> SELECT CHAR_LENGTH("안녕하세요"); +---------------------------+ | CHAR_LENGTH("안녕하세요") | +---------------------------+ | 5 | +---------------------------+ 1 row in set (0.03 sec)
LENGTH(string) 문자열의 Byte수를 알아봅니다. mysql> SELECT LENGTH("안녕하세요"); +----------------------+ | LENGTH("안녕하세요") | +----------------------+ | 10 | +----------------------+ 1 row in set (0.00 sec)
CONCAT(string1, string2,...) 문자열을 합칩니다. mysql> SELECT CONCAT("안녕", "하세요"); +--------------------------+ | CONCAT("안녕", "하세요") | +--------------------------+ | 안녕하세요 | +--------------------------+ 1 row in set (0.03 sec)
CONCAT_WS ("구분자", string1, string2,...) 문자열을 특정 구분자를 포함시켜 합쳐줍니다. mysql> SELECT CONCAT_WS(',', "안녕", NULL, "하세요"); +----------------------------------------+ | CONCAT_WS(',', "안녕", NULL, "하세요") | +----------------------------------------+ | 안녕,하세요 | +----------------------------------------+ 1 row in set (0.00 sec)
FORMAT(number, round) 숫자의 천단위 구분자를 넣어줍니다. round 는 소수점 뒷자리 절사 길이 입니다. mysql> SELECT FORMAT(123456, 0); +-------------------+ | FORMAT(123456, 0) | +-------------------+ | 123,456 | +-------------------+ 1 row in set (0.00 sec)
REPLACE(string, from_string, to_string) 문자열을 치환합니다. mysql> SELECT REPLACE("우리나라 나쁜나라", "나쁜", "좋은"); +----------------------------------------------+ | REPLACE("우리나라 나쁜나라", "나쁜", "좋은") | +----------------------------------------------+ | 우리나라 좋은나라 | +----------------------------------------------+ 1 row in set (0.02 sec)
문자열함수는 위에 나온 함수보다 더 많은 함수가 있으나 빈번히 사용되고 가장 유용하게 사용되는것만 뽑아서 예를 들어 보았습니다. 다음시간에는 문자열 비교 함수에 대해서 알아보도록 하겠습니다.
| |