'SQL'에 해당되는 글 1건
- 2006.04.08 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 ----------------------------
-----------------------------------------------------------------------
-----------------------------
------ 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 ----------------------------
-----------------------------------------------------------------------