2006. 4. 8. 16:43

SQL문 정리

          -----------------------------
         -----------------------------
         ------  MySQL 강좌 #3 -------
         -----------------------------
         -----------------------------
 
-- 작성자 : 박순행
-- 작성일 : 1998.4.11
-- hitel  : soonhg
-- 천리안 : soonhg
-- 유니텔 : soonhg
-- E-mail : soonhg at chollian.net
 
<< 서론 >>
sql 문은 데이타베이스 질의에 사용되는 대화형 언어입니다.
MySQL도 역시 이 표준 대화형 언어를 지원하고 있으며,
더욱 확장된 각종 sql문을 내포하고 있습니다.. 간단하게 나마
제가 MySQL에 대하여 MySQL문상의 내용을 번역하였습니다.
 
많은 사람들에게 도움이 되었으면 합니다.....
 
 
 
       #######################################
       #                                     #
       #     MySQL 에서 사용되는 sql문 정리  #
       #                                     #
       #######################################
 
 
 
■ CREATE DATABASE database_name (데이타베이스이름)
 데이타 베이스 이름은 문자와 숫자, '_'  를 포함하는 32 byte 이내로
 작성한다. 이 명령은 새로운 데이타베이스 공간을 생성시킨다. Oracle로
 말하자면 tablespace와 같은 테이블이 들어가는 저장 공간을 말한다.
 
■ DROP DATABASE database_name
 존재하는 데이타베이스를 제거한다. 데이타베이스 상에 존재하는 테이블도
 모두 삭제 되므로 매우 조심하여 작업하여야 한다. 한번 삭제되면 복구는
 불가능 하므로 데이타 베이스 상의 테이블과 데이타가 모두 백업이 되었는
 지 확인하고 작업한다.
 
■ CREATE TABLE table_name ( create_definition,... )
 데이타베이스 상에 테이블을 생성시키는 명령이다. 자세한 옵션은 다음과
 같다. Oracle 의 table 생성 명령과 거의 유사하며 부가적인 type 이 존재한다.
 
create_definition:
 column_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
                  [ PRIMARY KEY ] [reference_definition]
 or  PRIMARY KEY ( index_column_name,... )
 or  KEY [index_name] KEY( index_column_name,...)
 or  INDEX [index_name] ( index_column_name,...)
 or  UNIQUE [index_name] ( index_column_name,...)
 or  FOREIGN KEY index_name ( index_column_name,...) [reference_definition]
 or  CHECK (expr)
 
type:
       TINYINT[(length)] [UNSIGNED] [ZEROFILL]
 or    SMALLINT[(length)] [UNSIGNED] [ZEROFILL]
 or    MEDIUMINT[(length)] [UNSIGNED] [ZEROFILL]
 or    INT[(length)] [UNSIGNED] [ZEROFILL]
 or    INTEGER[(length)] [UNSIGNED] [ZEROFILL]
 or    BIGINT[(length)] [UNSIGNED] [ZEROFILL]
 or    REAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
 or    DOUBLE[(length,decimals)] [UNSIGNED] [ZEROFILL]
 or    FLOAT[(length,decimals)] [UNSIGNED] [ZEROFILL]
 or    DECIMAL[(length,decimals)] [UNSIGNED] [ZEROFILL]
 or    NUMERIC[(length,decimals)] [UNSIGNED] [ZEROFILL]
 or    CHAR(length) [BINARY],
 or    VARCHAR(length) [BINARY],
 or    DATE
 or    TIME
 or    TIMESTAMP
 or    DATETIME
 or    TINYBLOB
 or    BLOB
 or    MEDIUMBLOB
 or    LONGBLOB
 or    TINYTEXT
 or    TEXT
 or    MEDIUMTEXT
 or    ENUM(value1,value2,value3...)
 or    SET(value1,value2,value3...)
 
index_column_name:
       column_name [ (length) ]
 
reference_definition:
       REFERENCES table_name [( index_column_name,...)]
                  [ MATCH FULL | MATCH PARTIAL]
                  [ ON DELETE reference_option]
                  [ ON UPDATE reference_option]
 
reference_option:
       RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
 
 
 
■ ALTER [IGNORE] TABLE table_name alter_spec [, alter_spec ...]
 존재하는 테이블을 변경 및 columnd의 추가 작업시 사용된다.
 
alter_specification:
       ADD [COLUMN] create_definition
or      CHANGE [COLUMN] old_column_name create_definition
or      ALTER [COLUMN] column_name { SET DEFAULT literal | DROP DEFAULT }
or      ADD INDEX [index_name] ( index_column_name,...)
or      ADD UNIQUE [index_name] ( index_column_name,...)
or      DROP [COLUMN] column_name
or      DROP PRIMARY KEY
or      DROP INDEX key_name
or      RENAME AS new_table_name
 
■ DROP TABLE table_name [, table_name...]
 존재하는 테이블을 제거할 경우 사용되는 명령이다.
 
■ DELETE FROM table_name WHERE where_definition
 존재하는 테이블 상의 데이타를 삭제할때 사용하는 명령이다.
 
 
■ SELECT 문
 존재하는 테이블 상의 데이타를 조회할때 사용하는 명령이다.
 기본적인 사용법은 다음과 같다.
 
 SELECT [STRAIGHT_JOIN] [DISTINCT | ALL] select_expression,...
     [INTO OUTFILE 'file_name' ...]
 [ FROM table_references
   [WHERE where_definition ]
   [GROUP BY column,...]
   [HAVING where_definition]
   [ ORDER BY column [ASC | DESC] ,..] [LIMIT [offset,] rows]
   [PROCEDURE procedure_name]]
 
 
■  JOIN 문
 Oracle 에서 사용하는 join 문보다 좀더 확장된 join 문을 지원한다.
 
table_reference, table_reference
table_reference [CROSS] JOIN table_reference
table_reference LEFT [OUTER] JOIN table_reference ON conditional-expr
table_reference LEFT [OUTER] JOIN table_reference USING (column-commalist)
table_reference NATURAL LEFT [OUTER] JOIN table_reference
{ oj table_reference LEFT OUTER JOIN table_reference ON conditional-expr }
 
■ INSERT 문
 존재하는 테이블에 데이타를 입력할때 사용한다.
 
       INSERT INTO table [ (column_name,...) ] VALUES (expression,...)
or      INSERT INTO table [ (column_name,...) ] SELECT ...
 
 
 
■ REPLACE 문
 이 문장은 INSERT문장과 거의 유사하게 동작한다. 같은 레코드가 있을경우
 이 레코드를 삭제한후 INSERT 작업을 한다. 같은 ?코드가 없을 경우는 INSERT
 와 같이 동작한다.
 
       REPLACE INTO table [ (column_name,...) ] VALUES (expression,...)
or      REPLACE INTO table [ (column_name,...) ] SELECT ...
 
■ LOAD DATA INFILE 문
 Server 상에 위치하는 text 파일로 부터 데이타를 읽어서 테이블에 입력작업을
 할 경우 사용한다. 매우 속도가 빠르다.
 
 LOAD DATA INFILE 'text_file_name.text' [REPLACE | IGNORE]
     INTO TABLE table_name
 [FIELDS [TERMINATED BY ',' [OPTIONALLY] ENCLOSED BY '"' ESCAPED BY '\'
]]
 [LINES TERMINATED BY '
']
 [(Field1, Field2...)]
 
 테이블로 부터 데이타를 읽어서 text 파일에 데이타를 저장할경우 다음과 같이
 사용한다.
 
 SELECT ...
  INTO OUTFILE 'interval.txt' fields terminated by ','
  enclosed by '"'
  escaped by '\' lines terminated by '
'
 FROM ...
 
■ UPDATE 문
 테이블 상에 존재하는 데이타를 변경할 경우 사용한다.
 
 
UPDATE table SET column=expression,... WHERE where_definition
 
■ SHOW syntax. Get information about tables, columns...
 MySQL 상의 각종 정보를 보여준다. 데이타 베이스, 테이블, column등을
 확인할수 있다.
 
       SHOW DATABASES [LIKE wild]
or      SHOW TABLES [FROM database] [LIKE wild]
or      SHOW COLUMNS FROM table [FROM database] [LIKE wild]
or      SHOW INDEX FROM table [FROM database]
or      SHOW STATUS
or      SHOW VARIABLES [LIKE wild]
 
■ EXPLAIN syntax. Get information about a SELECT.
 select 문과 이때 요구되는 테이블에 대한 정보를 준다. 일반 select 문의
 처음에 EXPLAIN 을 추가하면 동작한다.
 
EXPLAIN SELECT select_options
 
■ DESCRIBE syntax
  존재하는 테이블에서 column 정보를 가지고 온다.
 
(DESCRIBE | DESC) table [column]
 
■ LOCK TABLES syntax
 테이블에 lock 을 설정하여 타인이 읽지 못하게 할때 사용한다.
 주의할 점은 한사람이 lock 을 실행하면 이 사람이 사용하는 모든 테이블이
 lock되므로 사용후 꼭 unlock를 사용하여 lock를 풀도록 한다.
 
LOCK TABLES table_name [AS alias] READ|WRITE [, table_name READ|WRITE]
...
UNLOCK TABLES
 
■  SET OPTION syntax.
 현재 사용중인 세션이 사용되는 동안 지속적으로 영향을 준다. 여러 옵션이
 있으므로 원본 메뉴얼을 참조하기 바란다.
 
SET [OPTION] SQL_VALUE_OPTION=value, ...
 
■  GRANT 문 ( 호환명령)
이 명령을 사용하지는 않고 단지 호환성문제 때문에 MySQL 존재한다.
 이 명령은 다른 SQL 서버로 부터 MySQL로 쉽게 변환하기 위하여 만들졌다.
 MySQL 에서의 특권은 MySQL 허가 테이블을 이용하여 다루어 진다.
 섹션 6.2 의 특권 시스템 업무를 하는 방법을 참고 하라.
 
GRANT (ALL PRIVILEGES | (SELECT, INSERT, UPDATE, DELETE,
REFERENCES (column list), USAGE))
ON table TO user,... [WITH GRANT OPTION]
 
■ CREATE INDEX 문 (호환명령)
 
이 명령을 사용하지는 않고 단지 호환성문제 때문에 MySQL 존재한다.
 ALTER TABLE 을 사용하여 새로운 index 를 생성할수 있다.
 섹션 7.7 의 ALTER TABLE 의 문법을 보아라.
CREATE [UNIQUE] INDEX index_name ON table_name ( column_name,... )
 
■ DROP INDEX 문 (호환명령)
이 명령은 항성 성공할 것이다. ALTER TABLE 을 사용하여 index 를 제거할수있다.
 섹션 7.7 의 ALTER TABLE 의 문법을 보아라.
 
DROP INDEX index_name
 
■ Comment 문법
 한줄의 주석은 # 로 하고 주석의 내용이 여러줄일 경우는 /*  */  를 이용하여
 주석을 처리할수 있다.
 
 
■ CREATE FUNCTION 문법
 MySQL 의 기본 함수인 ABS(), constr() 처럼 새로운 사용자 정의 함수를 생성
 하는 함수이다. 사용자정의함수의 소스는 C, C++로 작성되어야 하고 동적으로
 읽혀지는것이 요구되어 진다. 예제로서 배포판에 보면 udf_example.cc 가 있
 고 5개의 새로운 사용자정의함수가 작성되어 있다.
 
CREATE FUNCTION <function_name> RETURNS [string|real|integer]
      SONAME <name_of_shared_library>
 
DROP FUNCTION <function_name>
 
 
 
-----------------------------------------------------------------------
-----------------------  MySQL 강좌 #3 END ----------------------------
-----------------------------------------------------------------------