출처 : http://blog.empas.com/doolplus1/20862569


【 MXinsite 】[참고] SQL 문 정리 - (출처:http://www.superuser.co.kr/)
Dot_01.gif

 

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'
    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)


    문자열함수는 위에 나온 함수보다 더 많은 함수가 있으나 빈번히 사용되고 가장 유용하게 사용되는것만 뽑아서 예를 들어 보았습니다. 다음시간에는 문자열 비교 함수에 대해서 알아보도록 하겠습니다.

     

     

     

     

     

     

     

     

     

profile