# # Copyright (C) 2008 Search Solution Corporation. All rights reserved by Search Solution. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; version 2 of the License. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # $Revision: 1.5 $ !GENERAL Help is available on the following topics. ALTER : 클래스, 가상클래스의 정의를 변경하는 명령어. CALL : 인스턴스 또는 클래스의 메소드를 실행하는 명령어. COMMIT : 현재의 트랜잭션을 커밋하는 명령어. CREATE : 클래스 또는 가상클래스를 생성하는 명령어. DELETE : 클래스의 인스턴스를 삭제하는 명령어. DROP : 클래스, 인덱스, 트리거, deferred 트리거 액션들을 삭제하는 명령어. EXECUTE : deferred 트리거 액션들을 실행하는 명령어. GET : 세션 인자들(트랜잭션, 트리거 등)의 값을 얻는 명령어. GRANT : 클래스에 대한 권한을 허용하는 명령어. INDEX : 속성에 대한 인덱스를 생성하는 명령어. INSERT : 클래스에 대한 새로운 인스턴스를 생성하는 명령어. RENAME : 클래스, 가상클래스, 트리거의 이름을 바꾸는 명령어. REVOKE : 클래스에 대한 권한을 취소하는 명령어. ROLLBACK : 현재의 트랜잭션을 철회하는 명령어. SELECT : 클래스의 인스턴스들에 대하여 질의하는 명령어. SET : 세션 인자들 (트랜잭션, 트리거 등)의 값을 설정하는 명령어. STATISTICS : 데이터베이스 통계를 갱신하는 명령어. TRIGGER : 트리거의 정의를 생성 또는 변경하는 명령어. UPDATE : 클래스의 인스턴스들을 변경하는 명령어. PARTITION : 파티션을 생성하거나, 파티션을 일반 클래스로 전환하는 명령어. STORED PROCEDURE : 저장 프로시저를 생성하거나 삭제하는 명령어. USER : 사용자를 생성하거나 삭제하는 명령어. * 구체적인 도움말 주제를 보세요. * 구체적인 도움말 주제를 보세요. * !ALTER 클래스, 가상클래스의 정의를 변경하는 명령어. * ::= ALTER [ ] ; ::= CLASS | TABLE | VCLASS | VIEW ::= ADD [ INHERIT ] | DROP [ INHERIT ] | RENAME [ INHERIT ] | CHANGE | INHERIT ::= [ ATTRIBUTE | COLUMN ] | CLASS ATTRIBUTE | FILE | METHOD | QUERY | SUPERCLASS ::= FILE AS | METHOD | QUERY [ ] | DEFAULT ::= [ ATTRIBUTE | COLUMN | METHOD ] | FILE | QUERY [ ] | SUPERCLASS | CONSTRAINT ::= [ ATTRIBUTE | COLUMN | METHOD ] AS | FUNCTION OF AS FILE AS ::= OF [ AS ] ::= | * ALTER CLASS procedings ADD SUPERCLASS reports INHERIT editor OF reports; ALTER CLASS employee ADD ATTRIBUTE name string, age integer DEFAULT 20; ALTER CLASS employee DROP name, age; ALTER CLASS employee CHANGE age 30; ALTER CLASS employee DROP CONSTRAINT unique_age; * !CALL 인스턴스 또는 클래스의 메소드를 실행하는 명령어. * ::= CALL ( [ ] ) ON [ ] ; ::= ::= | ::= CLASS * CALL find_employee('smith') ON CLASS employee TO myvariable; CALL update_status() ON myvariable; * !COMMIT 현재의 트랜잭션을 커밋하는 명령어. * ::= COMMIT WORK ; * COMMIT WORK; * !CREATE 클래스 또는 가상클래스를 생성하는 명령어. * ::= | ::= CREATE {CLASS | TABLE} [ ] [ ( ) ] [ CLASS ATTRIBUTE ( ) ] [ METHOD ] [ FILE ] [ INHERIT ] ; ::= CREATE {VCLASS | VIEW} [ ] [ ( ) ] [ CLASS ATTRIBUTE ( ) ] [ METHOD ] [ FILE ] [ INHERIT ] [ AS ] [ WITH CHECK OPTION ] ; ::= AS SUBCLASS OF ::= | ::= [ ] [ ] ::= [ CONSTRAINT ] UNIQUE ( ) | [PRIMARY KEY ( )] | [referential_constraint] ::= | ::= SHARED [ ] | DEFAULT ::= NOT NULL | UNIQUE ::= [ ( [ ] ) ] [ ] [FUNCTION ] ::= OF [ AS ] ::= [ CLASS ] ::= [ CLASS ] ::= ::= ::= ::= FOREIGN KEY [constraint-name] (attribute_name_comma_list) REFERENCES [referenced_table_name] (attribute_name_comma_list) [ ] ::= [ [ ]] ::= ON UPDATE ::= ON DELETE ::= ON CACHE OBJECT cache_object_column_name ::= CASCADE | RESTRICT | NO ACTION * CREATE CLASS address (street string, city string); CREATE CLASS person ( name string, birthday date, residence address, UNIQUE (name)) METHOD get_age () integer FILE "/p/xsql/current/bin/person.o"; create class album (id char(10) NOT NULL PRIMARY KEY, title varchar(100), artist varchar(100) ); create class track (album char(10), dsk integer, posn integer, song varchar(255), FOREIGN KEY (album) REFERENCES album(id) ); * !DELETE 클래스의 인스턴스를 삭제하는 명령어. * ::= DELETE FROM [ WHERE ] ; ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] * DELETE FROM employee; DELETE FROM ONLY hotel WHERE name = 'Hilton'; DELETE FROM location WHERE lodging IN (SELECT name FROM resort); * !DROP 클래스, 인덱스, 트리거, deferred 트리거 액션들을 삭제하는 명령어. * := | | | ::= DROP [ ] ; ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] ::= DROP [REVERSE] [UNIQUE] INDEX [index_name] ON ( ) ; ::= DROP TRIGGER ; ::= DROP DEFERRED TRIGGER ; ::= | ALL TRIGGERS ; * DROP address; DROP person, employee; DROP INDEX ON employee (name); DROP INDEX ON employee (ssn, name); DROP TRIGGER check_salary; DROP DEFERRED TRIGGER check_salary, check_age; DROP DEFERRED TRIGGER ALL TRIGGERS; * !EXECUTE deferred 트리거 액션들을 실행하는 명령어. * ::= EXECUTE DEFERRED TRIGGER ; ::= | ALL TRIGGERS * EXECUTE DEFERRED TRIGGER check_age, check_name; EXECUTE DEFERRED TRIGGER ALL TRIGGERS; * !GET 세션 인자들(트랜잭션, 트리거 등)의 값을 얻는 명령어. * := GET [ ] ; := TRANSACTION ISOLATION LEVEL | TRANSACTION LOCK TIMEOUT | OPTIMIZATION LEVEL | OPTIMIZATION LIMIT | TRIGGER TRACE | TRIGGER MAXIMUM DEPTH * GET OPTIMIZATION LEVEL INTO level; GET TRANSACTION LOCK TIMEOUT; GET TRIGGER TRACE; GET TRIGGER MAXIMUM DEPTH; * !GRANT 클래스에 대한 권한을 허용하는 명령어. * ::= GRANT ON TO [ WITH GRANT OPTION ] ; ::= ALL [ PRIVILEGES ] | ::= SELECT | INSERT | DELETE | UPDATE | ALTER | INDEX | EXECUTE ::= ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] * GRANT SELECT, INSERT, UPDATE ON employee TO jones; GRANT ALL PRIVILEGES ON person, student, TO smith, brown; * !INDEX 속성에 대한 인덱스를 생성하는 명령어. * ::= CREATE [REVERSE] [UNIQUE] INDEX [index_name] ON ; ::= ( ) ; * CREATE INDEX ON employee (name); CREATE INDEX ON person (name, social_security_number); * !INSERT 클래스에 대한 새로운 인스턴스를 생성하는 명령어. * ::= INSERT INTO ; ::= [ ( [ ] ) ] | DEFAULT VALUES; ::= VALUES ( [ ] ) [ TO ] | ::= | * INSERT INTO person(name, age, residence) VALUES ('Amy', 20, (INSERT INTO address(street, city) VALUES ('1 Wolf St. ', 'Austin'))); * !RENAME 클래스, 가상클래스, 트리거의 이름을 바꾸는 명령어. * ::= | ::= RENAME CLASS AS ; ::= RENAME TRIGGER AS ; * RENAME CLASS employee AS company_employee; RENAME TRIGGER check_age AS check_employee_age; * !REVOKE 클래스에 대한 권한을 취소하는 명령어. * ::= REVOKE ON FROM ; ::= ALL [ PRIVILEGES ] | ::= SELECT | INSERT | DELETE | UPDATE | ALTER | INDEX | EXECUTE ::= ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] * REVOKE INSERT, UPDATE ON employee FROM smith; REVOKE SELECT ON manufacturing_site FROM jones, brown; * !ROLLBACK 현재의 트랜잭션을 철회하는 명령어. * ::= ROLLBACK WORK ; * ROLLBACK WORK; * !SELECT 클래스의 인스턴스들에 대하여 질의하는 명령어. * ::= ; ::= SELECT [ ] [ { TO | INTO } [ WHERE ] [ GROUP BY ] [ HAVING ] ::= ALL | DISTINCT | UNIQUE ::= * | ::= [ ] | [ ] | | TABLE ( ) ::= [ AS ] [ ( ) ] ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] ::= CLASS ::= [ ORDER BY ] ::= [ [ ] ] ... ::= | ::= ( ) ::= UNION | DIFFERENCE | INTERSECTION ::= [ ASC | DESC ] | 0 GROUP BY country HAVING AVG(cost) <= $150.00; * !SET 세션 인자들 (트랜잭션, 트리거 등)의 값을 설정하는 명령어. * := SET [ ] ; := | | | | := TRANSACTION ISOLATION LEVEL := SERIALIZABLE | CURSOR STABILITY | [ , ] | [ , ] := REPEATABLE READ { SCHEMA | CLASS } | READ COMMITTED { SCHEMA | CLASS } | READ UNCOMMITTED { SCHEMA | CLASS } := REPEATABLE READ INSTANCES | READ COMMITTED INSTANCES | READ UNCOMMITTED INSTANCES := TRANSACTION LOCK TIMEOUT := OFF | INFINITE | := OPTIMIZATION := ON | OFF | ::= TRIGGER TRACE ::= ON | OFF | ::= TRIGGER MAXIMUM DEPTH ::= NONE | * SET OPTIMIZATION LEVEL ON; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ INSTANCES; SET TRIGGER TRACE OFF; SET TRIGGER MAXIMUM DEPTH 100; * !STATISTICS 데이터베이스 통계를 갱신하는 명령어. * ::= UPDATE STATISTICS ON { | ALL CLASSES | CATALOG CLASSES } ; ::= [ ONLY ] * UPDATE STATISTICS ON employee, person; UPDATE STATISTICS ON all classes; UPDATE STATISTICS ON catalog classes; * !TRIGGER 트리거의 정의를 생성 또는 변경하는 명령어. * ::= CREATE TRIGGER [ ] [ ] [ ] [ IF ] EXECUTE [ ] ; ::= ALTER TRIGGER ; ::= | ::= STATUS := ACTIVE | INACTIVE; ::= PRIORITY ::= BEFORE | AFTER | DEFERRED; ::= AFTER | DEFERRED; ::= INSERT | STATEMENT INSERT | UPDATE | STATEMENT UPDATE | DELETE | STATEMENT DELETE | COMMIT | ROLLBACK ::= ON [ ( ) ] ::= | ::= REJECT | INVALIDATE TRANSACTION | PRINT | EVALUATE | | | | * CREATE TRIGGER check_age_update BEFORE UPDATE ON person(age) IF new.age < obj.age EXECUTE REJECT; CREATE TRIGGER emit_message_on_commit BEFORE COMMIT EXECUTE PRINT "Committing transaction."; ALTER TRIGGER check_age_update PRIORITY 10.0; ALTER TRIGGER emit_message_on_commit STATUS INACTIVE; * !UPDATE 클래스의 인스턴스들을 변경하는 명령어. * ::= UPDATE { | } SET [ WHERE ] ; ::= | ( ::= [ ONLY ] | ALL [ EXCEPT ] ::= CLASS ::= [ . ] = { | NULL } * UPDATE resort SET cost = $198.00 WHERE name = 'Tryall Golf, Tennis, and Beach Club'; * !CREATE VCLASS 가상 클래스를 생성하는 명령어 * ::= CREATE {VCLASS | VIEW} { } ; ::= [ AS SUBCLASS OF ] [ CLASS ATTRIBUTE ( ) ] [ ( ) ] [ METHOD ] [ FILE ] [ INHERIT ] [ AS ] [ WITH CHECK OPTION ] ::= [ DEFAULT ] ::= | ::= [ ] ::= [ CLASS ] [ ( [ ] ) ] [ ] [FUNCTION ] ::= SHARED [ ] | DEFAULT ::= [ CLASS ] OF [ AS ] ::= | POINTER ::= | POINTER * CREATE VCLASS shipment_r ( shipment_id integer, product_code integer, quantity integer, destination char(15), origin char(15)) AS SELECT shipment_id, product_code, quantity, to_location, original_loc FROM shipment; * !PARTITION 파티션을 생성하거나, 파티션을 일반 클래스로 전환하는 명령어. * ::= ::= ALTER {CLASS | TABLE} ; ::= CREATE {CLASS | TABLE} [ ] [ ( ) ] [ CLASS ATTRIBUTE ( ) ] [ METHOD ] [ FILE ] [ INHERIT ] ; ::= PARTITION BY ( ) ::= HASH | RANGE | LIST ::= ( ) | PARTITIONS ::= PARTITION ::= | ::= VALUES LESS THAN ::= MAXVALUE | ( ) ::= VALUES IN ( ) ::= | REMOVE PARTITIONING * CREATE CLASS person ( name string, birthday date, residence string, UNIQUE (name)) PARTITION BY RANGE ( name ) ( PARTITION atoh VALUES LESS THAN ('I'), PARTITION itor VALUES LESS THAN ('S'), PARTITION etcname VALUES LESS THAN MAXVALUE ); CREATE CLASS person ( name string, birthday date, residence string, UNIQUE (name)) PARTITION BY HASH ( name ) PARTITIONS 20; ALTER CLASS person PARTITION BY LIST ( SUBSTRING(residence from 1 for 1) ) ( PARTITION atoh VALUES IN ('A','B','C','D','E','F','G','H'), PARTITION itoo VALUES IN ('I','J','K','L','M','N','O')); ALTER CLASS person REMOVE PARTITIONING; * !STORED PROCEDURE 저장 프로시저를 생성하거나 삭제하는 명령어. * ::= CREATE [IS | AS] LANGUAGE JAVA NAME ; ::= DROP ; ::= | ::= PROCEDURE ( [] ) ::= FUNCTION ( [] ) RETURN ::= [, ]* ::= [] ::= IN | OUT | INOUT | IN OUT ::= ::= PROCEDURE | FUNCTION * CREATE PROCEDURE proc(i varchar) AS LANGUAGE JAVA NAME 'SpTest.procTest(java.lang.String) return int'; CREATE FUNCTION func(i int) RETURN string AS LANGUAGE JAVA NAME 'SpTest.funcTest(int) return java.lang.String'; DROP PROCEDURE proc; DROP FUNCTION func; * !USER 사용자를 생성하거나 삭제하는 명령어. * ::= CREATE USER [PASSWORD password] [GROUPS user_name_comma_list] [MEMBERS user_name_comma_list]; ::= DROP USER user_name; ::= ALTER USER user_name PASSWORD password; * CREATE USER david; CREATE USER company; CREATE USER engineering GROUPS company; CREATE USER engineering MEMBERS david; ALTER USER david PASSWORD 'passwd'; DROP USER david; *