<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # `ij`工具 > 原文: [http://zetcode.com/db/apachederbytutorial/ij/](http://zetcode.com/db/apachederbytutorial/ij/) 在第四章中,我們將更詳細地介紹 Derby 的`ij`工具。 `ij`是 Derby 隨附的交互式腳本工具。 它是 Derby 數據庫系統的命令行客戶端。 它可以以兩種方式使用:運行 SQL 文件或以交互方式執行 SQL 語句。 `ij`位于 Derby 安裝目錄的`bin`目錄中。 ```java $ ls $DERBY_HOME/bin | grep ij ij ij.bat ``` 有兩個腳本:擴展名為`.bat`的腳本適用于 Windows。 ## 啟動`ij` `ij`可以通過三種基本方式啟動。 ```java $ $DERBY_HOME/bin/ij ij version 10.11 ij> ``` 可以使用`ij`腳本啟動 Derby `ij`。 ```java $ java -cp $DERBY_HOME/lib/derbytools.jar org.apache.derby.tools.ij ij version 10.11 ij> ``` 另一種方法是執行已編譯的 Java 程序。 我們的類路徑中必須有`derbytools.jar`。 第一種方法在腳本文件中執行的操作基本相同。 它還可以與環境變量一起使用。 ```java $ java -jar $DERBY_HOME/lib/derbyrun.jar ij ij version 10.11 ij> ``` 在第三種方法中,我們使用`derbyrun.jar`文件啟動`ij`。 ## 運行 SQL 腳本 與 MySQL 或 PostgreSQL 命令行工具不同,`ij`非常簡單。 它沒有命令的歷史記錄。 不能使用光標鍵。 ```java $ cat cars.sql -- SQL for the CARS table SET SCHEMA USER12; CREATE TABLE CARS(ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), NAME VARCHAR(30), PRICE INT); INSERT INTO CARS(Name, Price) VALUES('Audi', 52642); INSERT INTO CARS(Name, Price) VALUES('Mercedes', 57127); INSERT INTO CARS(Name, Price) VALUES('Skoda', 9000); INSERT INTO CARS(Name, Price) VALUES('Volvo', 29000); INSERT INTO CARS(Name, Price) VALUES('Bentley', 350000); INSERT INTO CARS(Name, Price) VALUES('Citroen', 21000); INSERT INTO CARS(Name, Price) VALUES('Hummer', 41400); INSERT INTO CARS(Name, Price) VALUES('Volkswagen', 21600); ``` 在模式`USER12`中創建了`CARS`表,并插入了五行。 ```java ij> RUN 'cars.sql'; ij> -- SQL for the CARS table SET SCHEMA USER12; 0 rows inserted/updated/deleted ij> CREATE TABLE CARS(ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), NAME VARCHAR(30), PRICE INT); 0 rows inserted/updated/deleted ij> INSERT INTO CARS(Name, Price) VALUES('Audi', 52642); 1 row inserted/updated/deleted ij> INSERT INTO CARS(Name, Price) VALUES('Mercedes', 57127); 1 row inserted/updated/deleted ... ``` 我們使用`RUN`命令執行`cars.sql`文件。 該文件位于啟動`ij`的目錄中。 ```java ij> SELECT * FROM CARS; ID |NAME |PRICE ------------------------------------------------------ 1 |Audi |52642 2 |Mercedes |57127 3 |Skoda |9000 4 |Volvo |29000 5 |Bentley |350000 6 |Citroen |21000 7 |Hummer |41400 8 |Volkswagen |21600 8 rows selected ``` 我們檢查數據。 該表已成功創建。 `ij`工具可以將 SQL 文件名用作參數。 ```java $ cat cars2.sql CONNECT 'jdbc:derby://localhost:1527/testdb'; SET SCHEMA USER12; CREATE TABLE CARS(ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), NAME VARCHAR(30), PRICE INT); INSERT INTO CARS(Name, Price) VALUES('Audi', 52642); INSERT INTO CARS(Name, Price) VALUES('Mercedes', 57127); INSERT INTO CARS(Name, Price) VALUES('Skoda', 9000); INSERT INTO CARS(Name, Price) VALUES('Volvo', 29000); INSERT INTO CARS(Name, Price) VALUES('Bentley', 350000); INSERT INTO CARS(Name, Price) VALUES('Citroen', 21000); INSERT INTO CARS(Name, Price) VALUES('Hummer', 41400); INSERT INTO CARS(Name, Price) VALUES('Volkswagen', 21600); ``` 我們將`CONNECT`語句添加到`cars2.sql`文件中。 當我們啟動`ij`工具時,我們尚未連接到數據庫。 ```java ij> DROP TABLE CARS; 0 rows inserted/updated/deleted ij> EXIT; $ ``` 我們在執行`cars2.sql`腳本之前先刪除表。 ```java $ java -Dderby.system.home=/home/janbodnar/.derby \ > -jar $DERBY_HOME/lib/derbyrun.jar ij cars2.sql ``` 我們設置 Derby 系統目錄,并以`cars2.sql`作為參數啟動`ij`工具。 再次創建`CARS`表。 ## 基本命令 我們可以發出兩種命令。 `ij`工具和 SQL 語句專用的命令。 `ij`中的每個命令都以分號終止。 所有`ij`命令,標識符和關鍵字都不區分大小寫。 ```java ij> HELP; Supported commands include: PROTOCOL 'JDBC protocol' [ AS ident ]; -- sets a default or named protocol DRIVER 'class for driver'; -- loads the named class CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ]; -- connects to database URL -- and may assign identifier ... ``` `HELP`命令顯示`ij`命令的列表 ```java ij> CONNECT 'jdbc:derby://localhost:1527/testdb'; ``` `CONNECT`命令連接到數據庫。 在我們的例子中,數據庫名稱為`testdb`。 本示例假定我們已經設置了 Derby 系統目錄。 (有關下一部分的更多信息。)默認情況下,Derby 不需要用戶名和密碼。 我們可以配置 Derby 以要求它。 ```java ij> SHOW CONNECTIONS; CONNECTION0* - jdbc:derby://localhost:1527/testdb * = current connection ``` `SHOW CONNECTIONS`語句列出了所有打開的連接。 在我們的例子中,我們可以看到與`testdb`數據庫的打開連接。 ```java ij> SHOW TABLES; TABLE_SCHEM |TABLE_NAME |REMARKS ------------------------------------------------------------------------ SYS |SYSALIASES | SYS |SYSCHECKS | SYS |SYSCOLPERMS | ... ``` `SHOW TABLES`命令顯示數據庫中的所有表。 有一些`SYS`表。 ```java ij> SHOW TABLES IN USER12; TABLE_SCHEM |TABLE_NAME |REMARKS ------------------------------------------------------------------------ USER12 |CARS | 1 row selected ``` 我們可以列出特定架構中的表。 `SHOW TABLES IN USER12`顯示`USER12`模式中的表。 ```java ij> DESCRIBE USER12.CARS; COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL& ------------------------------------------------------------------------------ ID |BIGINT |0 |10 |19 |AUTOINCRE&|NULL |NO NAME |VARCHAR |NULL|NULL|30 |NULL |60 |YES PRICE |INTEGER |0 |10 |10 |NULL |NULL |YES 3 rows selected ``` `DESCRIBE`命令提供對指定表或視圖的解密。 如果`USER12`模式不是連接的當前模式,則必須在表名之前指定它。 當前模式在連接字符串中指定為用戶名。 ```java ij> DISCONNECT; ij> SHOW CONNECTIONS; No connections available. ``` `DISCONNECT`命令與數據庫斷開連接。 隨后的`SHOW CONNECTIONS`命令顯示沒有可用的連接。 ```java ij> EXIT; $ ``` 最后,我們退出`ij`工具。 在嵌入式環境中,它也會關閉數據庫。 等效于`CONNECT 'jdbc:derby:testdb;shutdown=true';`命令。 ## SQL 語句 `ij`工具的主要目的是發出 SQL 命令。 我們重新連接到`testdb`數據庫。 ```java $ $DERBY_HOME/bin/ij ij version 10.11 ij> CONNECT 'jdbc:derby://localhost/testdb;user=USER12'; ``` 現在,當前架構為`USER12`架構。 當為位于`USER12`模式中的表發布 SQL 語句時,我們可以省略模式名稱。 ```java ij> SELECT * FROM CARS WHERE ID IN (1, 3, 5); ID |NAME |PRICE ------------------------------------------------------ 1 |Audi |52642 3 |Skoda |9000 5 |Bentley |350000 3 rows selected ``` 在上面的 SQL 語句中,我們為 ID 為 1、3 和 5 的行選擇所有三列。 `friends.sql` ```java CREATE TABLE APP.FRIENDS(ID INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1), NAME VARCHAR(25)); INSERT INTO APP.FRIENDS(NAME) VALUES('Jane'); INSERT INTO APP.FRIENDS(NAME) VALUES('Thomas'); INSERT INTO APP.FRIENDS(NAME) VALUES('Beky'); ``` 我們在`APP`模式中有一個`FRIENDS`表。 ```java ij> SELECT * FROM APP.FRIENDS; ID |NAME ------------------------------------- 1 |Jane 2 |Thomas 3 |Beka 3 rows selected ``` 從`FRIENDS`表中選擇了三行。 由于該表不在當前模式中,因此我們必須完全限定該表名。 ```java ij> INSERT INTO APP.FRIENDS(Name) VALUES ('Robert'); 1 row inserted/updated/deleted ij> SELECT ID, NAME FROM APP.FRIENDS WHERE ID=4; ID |NAME ------------------------------------- 4 |Robert 1 row selected ``` 我們在`FRIENDS`表中插入新行,然后選擇它。 ## 指定 Derby 系統目錄 Derby 系統目錄包含數據庫文件,配置數據或日志文件。 如果我們不提供 Derby 系統目錄,則假定當前目錄為 Derby 系統目錄。 為了提供 Derby 系統目錄,我們分配了`derby.system.home`屬性。 可以通過 JVM 選項,配置文件,環境變量或 Java 文件來完成。 ```java $ java -Dderby.system.home=/home/janbodnar/.derby \ > -jar $DERBY_HOME/lib/derbyrun.jar ij ij version 10.11 ``` 在這里,我們使用`-D` JVM 選項指定 Derby 系統目錄。 `derby.log`文件在系統目錄中創建。 每次我們連接到 Derby 數據庫時,都會重新創建`derby.log`文件。 我們可以看一下時間戳。 如果`derby.log`文件出現在預期的目錄中,則我們尚未正確設置 Derby 系統目錄。 我們可能不想每次都指定 Derby 系統目錄。 我們可以利用`DERBY_OPTS`環境變量。 ```java $ export DERBY_OPTS=-Dderby.system.home=/home/janbodnar/.derby ``` Derby 將自動嘗試連接到指定系統目錄中的數據庫。 ## `ij`屬性 啟動`ij`工具時,我們可以在命令行或屬性文件中指定屬性。 這些屬性是`ij`工具采用的各種參數。 它們可以為我們節省一些重復的工作。 ```java $ java -Dij.user=USER12 -Dij.database=testdb -Dij.protocol=jdbc:derby://localhost/ \ > -Dderby.system.home=/home/janbodnar/.derby \ > -jar $DERBY_HOME/lib/derbyrun.jar ij ij version 10.11 CONNECTION0* - jdbc:derby://localhost:1527/testdb * = current connection ij> SELECT * FROM CARS WHERE ID = 1; ID |NAME |PRICE ------------------------------------------------------ 1 |Audi |52642 1 row selected ij> ``` 我們使用`-D`選項在命令行上提供三個`ij`屬性。 `ij.user`指定用于建立連接的用戶名。 提供的用戶名將成為當前架構。 `ij.database`具有我們連接到的數據庫名稱。 `ij.protocol`屬性指定數據庫連接 URL 的默認協議。 我們準備啟動 SQL 語句。 在下一個示例中,我們創建一個`ij.properties`文件,在其中設置三個`ij`屬性。 ```java $ cat ij.properties ij.user=USER12 ij.database=testdb ij.protocol=jdbc:derby://localhost:1527/ ``` 使用`cat`命令,顯示`ij.properties`文件的內容。 我們設置與第一個示例相同的屬性。 ```java $ java -Dderby.system.home=/home/janbodnar/.derby \ > -jar $DERBY_HOME/lib/derbyrun.jar ij -p ij.properties ij version 10.11 CONNECTION0* - jdbc:derby://localhost:1527/testdb * = current connection ij> SELECT * FROM CARS WHERE ID=2; ID |NAME |PRICE ------------------------------------------------------ 2 |Mercedes |57127 1 row selected ``` `ij`工具的`-p`選項采用屬性文件名。 在本章中,我們介紹了`ij`工具。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看