最輕巧的數據庫SQLite學習之路(基礎知識介紹) Day01

1、SQLite數據簡介

SQLite 是一個軟件庫,實現了自給自足的、無服務器的、零配置的、事務性的 SQL 數據庫引擎。SQLite 是在世界上最廣泛部署的 SQL 數據庫引擎。SQLite 源代碼不受版權限制。它是一個零配置的數據庫,這意味着與其他數據庫一樣,不需要在系統中配置。它有着有如下的特點:

  • 不需要一個單獨的服務器進程或操作的系統(無服務器的)。

  • SQLite 不需要配置,這意味着不需要安裝或管理。

  • 一個完整的 SQLite 數據庫是存儲在一個單一的跨平臺的磁盤文件。

  • SQLite 是非常小的,是輕量級的,完全配置時小於 400KiB,省略可選功能配置時小於250KiB。

  • SQLite 是自給自足的,這意味着不需要任何外部的依賴。

  • SQLite 事務是完全兼容 ACID 的,允許從多個進程或線程安全訪問。

  • SQLite 支持 SQL92(SQL2)標準的大多數查詢語言的功能。

  • SQLite 使用 ANSI-C 編寫的,並提供了簡單和易於使用的 API。

  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。

2、SQLite 命令

與關係數據庫進行交互的標準 SQLite 命令類似於 SQL。命令包括 CREATE、SELECT、INSERT、UPDATE、DELETE 和 DROP。這些命令基於它們的操作性質可分爲以下幾種:

DDL - 數據定義語言

命令描述
CREATE創建一個新的表,一個表的視圖,或者數據庫中的其他對象。
ALTER修改數據庫中的某個已有的數據庫對象,比如一個表。
DROP刪除整個表,或者表的視圖,或者數據庫中的其他對象。

DML - 數據操作語言

命令描述
INSERT創建一條記錄。
UPDATE修改記錄。
DELETE刪除記錄。

DQL - 數據查詢語言

命令描述
SELECT從一個或多個表中檢索某些記錄。

3、在 Windows 上安裝 SQLite

  • 請訪問 SQLite 下載頁面,從 Windows 區下載預編譯的二進制文件。

  • 您需要下載 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 壓縮文件。

  • 創建文件夾 C:\sqlite,並在此文件夾下解壓上面兩個壓縮文件,將得到 sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件。

  • 添加 C:\sqlite 到 PATH 環境變量,最後在命令提示符下,使用 sqlite3 命令,將顯示如下結果。

C:\>sqlite3
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

4、SQLite 命令

本節將向您講解 SQLite 編程人員所使用的簡單卻有用的命令。這些命令被稱爲 SQLite 的點命令,這些命令的不同之處在於它們不以分號 ; 結束。讓我們在命令提示符下鍵入一個簡單的 sqlite3 命令,在 SQLite 命令提示符下,您可以使用各種 SQLite 命令

$ sqlite3
SQLite version 3.3.6
Enter ".help" for instructions
sqlite>

如需獲取可用的點命令的清單,可以在任何時候輸入 ".help"。例如:

sqlite>.help

上面的命令會顯示各種重要的 SQLite 點命令的列表,如下所示:

命令描述
.backup ?DB? FILE備份 DB 數據庫(默認是 "main")到 FILE 文件。
.bail ON|OFF發生錯誤後停止。默認爲 OFF。
.databases列出數據庫的名稱及其所依附的文件。
.dump ?TABLE?以 SQL 文本格式轉儲數據庫。如果指定了 TABLE 表,則只轉儲匹配 LIKE 模式的 TABLE 表。
.echo ON|OFF開啓或關閉 echo 命令。
.exit退出 SQLite 提示符。
.explain ON|OFF開啓或關閉適合於 EXPLAIN 的輸出模式。如果沒有帶參數,則爲 EXPLAIN on,及開啓 EXPLAIN。
.header(s) ON|OFF開啓或關閉頭部顯示。
.help顯示消息。
.import FILE TABLE導入來自 FILE 文件的數據到 TABLE 表中。
.indices ?TABLE?顯示所有索引的名稱。如果指定了 TABLE 表,則只顯示匹配 LIKE 模式的 TABLE 表的索引。
.load FILE ?ENTRY?加載一個擴展庫。
.log FILE|off開啓或關閉日誌。FILE 文件可以是 stderr(標準錯誤)/stdout(標準輸出)。
.mode MODE設置輸出模式,MODE 可以是下列之一:
  • csv 逗號分隔的值

  • column 左對齊的列

  • html HTML 的 <table> 代碼

  • insert TABLE 表的 SQL 插入(insert)語句

  • line 每行一個值

  • list 由 .separator 字符串分隔的值

  • tabs 由 Tab 分隔的值

  • tcl TCL 列表元素

.nullvalue STRING在 NULL 值的地方輸出 STRING 字符串。
.output FILENAME發送輸出到 FILENAME 文件。
.output stdout發送輸出到屏幕。
.print STRING...逐字地輸出 STRING 字符串。
.prompt MAIN CONTINUE替換標準提示符。
.quit退出 SQLite 提示符。
.read FILENAME執行 FILENAME 文件中的 SQL。
.schema ?TABLE?顯示 CREATE 語句。如果指定了 TABLE 表,則只顯示匹配 LIKE 模式的 TABLE 表。
.separator STRING改變輸出模式和 .import 所使用的分隔符。
.show顯示各種設置的當前值。
.stats ON|OFF開啓或關閉統計。
.tables ?PATTERN?列出匹配 LIKE 模式的表的名稱。
.timeout MS嘗試打開鎖定的表 MS 毫秒。
.width NUM NUM爲 "column" 模式設置列寬度。
.timer ON|OFF開啓或關閉 CPU 定時器。

5、sqlite_master 表格

主表中保存數據庫表的關鍵信息,並把它命名爲 sqlite_master。如要查看錶概要,可按如下操作:

sqlite>.schema sqlite_master

這將產生如下結果:

CREATE TABLE sqlite_master (
  type text,
  name text,
  tbl_name text,
  rootpage integer,
  sql text
);

6、SQLite 語法

SQLite 是遵循一套獨特的稱爲語法的規則和準則。本教程列出了所有基本的 SQLite 語法,向您提供了一個 SQLite 快速入門。

大小寫敏感性

有個重要的點值得注意,SQLite 是不區分大小寫的,但也有一些命令是大小寫敏感的,比如 GLOB 和 glob 在 SQLite 的語句中有不同的含義。

註釋

SQLite 註釋是附加的註釋,可以在 SQLite 代碼中添加註釋以增加其可讀性,他們可以出現在任何空白處,包括在表達式內和其他 SQL 語句的中間,但它們不能嵌套。

SQL 註釋以兩個連續的 "-" 字符(ASCII 0x2d)開始,並擴展至下一個換行符(ASCII 0x0a)或直到輸入結束,以先到者爲準。

您也可以使用 C 風格的註釋,以 "/*" 開始,並擴展至下一個 "*/" 字符對或直到輸入結束,以先到者爲準。SQLite的註釋可以跨越多行。

sqlite>.help -- This is a single line comment

SQLite 語句

所有的 SQLite 語句可以以任何關鍵字開始,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等,所有的語句以分號(;)結束。

SQLite ANALYZE 語句:

ANALYZE;
or
ANALYZE database_name;
or
ANALYZE database_name.table_name;

SQLite AND/OR 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;

SQLite ALTER TABLE 語句:

ALTER TABLE table_name ADD COLUMN column_def...;

SQLite ALTER TABLE 語句(Rename):

ALTER TABLE table_name RENAME TO new_table_name;

SQLite ATTACH DATABASE 語句:

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

SQLite BEGIN TRANSACTION 語句:

BEGIN;
or
BEGIN EXCLUSIVE TRANSACTION;

SQLite BETWEEN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;

SQLite COMMIT 語句:

COMMIT;

SQLite CREATE INDEX 語句:

CREATE INDEX index_name
ON table_name ( column_name COLLATE NOCASE );

SQLite CREATE UNIQUE INDEX 語句:

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

SQLite CREATE TABLE 語句:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

SQLite CREATE TRIGGER 語句:

CREATE TRIGGER database_name.trigger_name 
BEFORE INSERT ON table_name FOR EACH ROW
BEGIN 
   stmt1; 
   stmt2;
   ....
END;

SQLite CREATE VIEW 語句:

CREATE VIEW database_name.view_name  AS
SELECT statement....;

SQLite CREATE VIRTUAL TABLE 語句:

CREATE VIRTUAL TABLE database_name.table_name USING weblog( access.log );
or
CREATE VIRTUAL TABLE database_name.table_name USING fts3( );

SQLite COMMIT TRANSACTION 語句:

COMMIT;

SQLite COUNT 子句:

SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;

SQLite DELETE 語句:

DELETE FROM table_name
WHERE  {CONDITION};

SQLite DETACH DATABASE 語句:

DETACH DATABASE 'Alias-Name';

SQLite DISTINCT 子句:

SELECT DISTINCT column1, column2....columnN
FROM   table_name;

SQLite DROP INDEX 語句:

DROP INDEX database_name.index_name;

SQLite DROP TABLE 語句:

DROP TABLE database_name.table_name;

SQLite DROP VIEW 語句:

DROP VIEW view_name;

SQLite DROP TRIGGER 語句:

DROP TRIGGER trigger_name

SQLite EXISTS 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name EXISTS (SELECT * FROM   table_name );

SQLite EXPLAIN 語句:

EXPLAIN INSERT statement...;
or 
EXPLAIN QUERY PLAN SELECT statement...;

SQLite GLOB 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name GLOB { PATTERN };

SQLite GROUP BY 子句:

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name;

SQLite HAVING 子句:

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name
HAVING (arithematic function condition);

SQLite INSERT INTO 語句:

INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);

SQLite IN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name IN (val-1, val-2,...val-N);

SQLite Like 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name LIKE { PATTERN };

SQLite NOT IN 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name NOT IN (val-1, val-2,...val-N);

SQLite ORDER BY 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION
ORDER BY column_name {ASC|DESC};

SQLite PRAGMA 語句:

PRAGMA pragma_name;

For example:

PRAGMA page_size;
PRAGMA cache_size = 1024;
PRAGMA table_info(table_name);

SQLite RELEASE SAVEPOINT 語句:

RELEASE savepoint_name;

SQLite REINDEX 語句:

REINDEX collation_name;
REINDEX database_name.index_name;
REINDEX database_name.table_name;

SQLite ROLLBACK 語句:

ROLLBACK;
or
ROLLBACK TO SAVEPOINT savepoint_name;

SQLite SAVEPOINT 語句:

SAVEPOINT savepoint_name;

SQLite SELECT 語句:

SELECT column1, column2....columnN
FROM   table_name;

SQLite UPDATE 語句:

UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];

SQLite VACUUM 語句:

VACUUM;

SQLite WHERE 子句:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION;

7、SQLite 數據類型

SQLite 數據類型是一個用來指定任何對象的數據類型的屬性。SQLite 中的每一列,每個變量和表達式都有相關的數據類型。您可以在創建表的同時使用這些數據類型。SQLite 使用一個更普遍的動態類型系統。在 SQLite 中,值的數據類型與值本身是相關的,而不是與它的容器相關。

SQLite 存儲類

每個存儲在 SQLite 數據庫中的值都具有以下存儲類之一:

存儲類描述
NULL值是一個 NULL 值。
INTEGER值是一個帶符號的整數,根據值的大小存儲在 1、2、3、4、6 或 8 字節中。
REAL值是一個浮點值,存儲爲 8 字節的 IEEE 浮點數字。
TEXT值是一個文本字符串,使用數據庫編碼(UTF-8、UTF-16BE 或 UTF-16LE)存儲。
BLOB值是一個 blob 數據,完全根據它的輸入存儲。

SQLite 的存儲類稍微比數據類型更普遍。INTEGER 存儲類,例如,包含 6 種不同的不同長度的整數數據類型。

SQLite 親和(Affinity)類型

SQLite支持列的親和類型概念。任何列仍然可以存儲任何類型的數據,當數據插入時,該字段的數據將會優先採用親緣類型作爲該值的存儲方式。SQLite目前的版本支持以下五種親緣類型:

親和類型描述
TEXT數值型數據在被插入之前,需要先被轉換爲文本格式,之後再插入到目標字段中。
NUMERIC當文本數據被插入到親緣性爲NUMERIC的字段中時,如果轉換操作不會導致數據信息丟失以及完全可逆,那麼SQLite就會將該文本數據轉換爲INTEGER或REAL類型的數據,如果轉換失敗,SQLite仍會以TEXT方式存儲該數據。對於NULL或BLOB類型的新數據,SQLite將不做任何轉換,直接以NULL或BLOB的方式存儲該數據。需要額外說明的是,對於浮點格式的常量文本,如"30000.0",如果該值可以轉換爲INTEGER同時又不會丟失數值信息,那麼SQLite就會將其轉換爲INTEGER的存儲方式。
INTEGER對於親緣類型爲INTEGER的字段,其規則等同於NUMERIC,唯一差別是在執行CAST表達式時。
REAL其規則基本等同於NUMERIC,唯一的差別是不會將"30000.0"這樣的文本數據轉換爲INTEGER存儲方式。
NONE不做任何的轉換,直接以該數據所屬的數據類型進行存儲。  

8、SQLite 創建數據庫

SQLite 的 sqlite3 命令被用來創建新的 SQLite 數據庫。您不需要任何特殊的權限即可創建一個數據。

語法

sqlite3 命令的基本語法如下:

sqlite3 DatabaseName.db

通常情況下,數據庫名稱在 RDBMS 內應該是唯一的。

實例

如果您想創建一個新的數據庫 <testDB.db>,SQLITE3 語句如下所示:

sqlite3 testDB.db
SQLite version 3.7.15.2 2013-01-09 11:53:05
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>

上面的命令將在當前目錄下創建一個文件 testDB.db。該文件將被 SQLite 引擎用作數據庫。如果您已經注意到 sqlite3 命令在成功創建數據庫文件之後,將提供一個 sqlite> 提示符。

一旦數據庫被創建,您就可以使用 SQLite 的 .databases 命令來檢查它是否在數據庫列表中,如下所示:

sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db

您可以使用 SQLite .quit 命令退出 sqlite 提示符,如下所示:

sqlite>.quit

.dump 命令

您可以在命令提示符中使用 SQLite .dump 點命令來導出完整的數據庫到一個文本文件中,如下所示:

sqlite3 testDB.db .dump > testDB.sql

上面的命令將轉換整個 testDB.db 數據庫的內容到 SQLite 的語句中,並將其轉儲到 ASCII 文本文件 testDB.sql 中。您可以通過簡單的方式從生成的 testDB.sql 恢復,如下所示:

sqlite3 testDB.db < testDB.sql

此時的數據庫是空的,一旦數據庫中有表和數據,您可以嘗試上述兩個程序。

9、SQLite 附加數據庫

假設這樣一種情況,當在同一時間有多個數據庫可用,您想使用其中的任何一個。SQLite 的 ATTACH DATABASE 語句是用來選擇一個特定的數據庫,使用該命令後,所有的 SQLite 語句將在附加的數據庫下執行。

語法

SQLite 的 ATTACH DATABASE 語句的基本語法如下:

ATTACH DATABASE 'DatabaseName' As 'Alias-Name';

如果數據庫尚未被創建,上面的命令將創建一個數據庫,如果數據庫已存在,則把數據庫文件名稱與邏輯數據庫 'Alias-Name' 綁定在一起。

實例

如果想附加一個現有的數據庫 testDB.db,則 ATTACH DATABASE 語句將如下所示:

sqlite> ATTACH DATABASE 'testDB.db' as 'TEST';

使用 SQLite .database 命令來顯示附加的數據庫。

sqlite> .database
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db

數據庫名稱 main 和 temp 被保留用於主數據庫和存儲臨時表及其他臨時數據對象的數據庫。這兩個數據庫名稱可用於每個數據庫連接,且不應該被用於附加,否則將得到一個警告消息,如下所示:

sqlite>  ATTACH DATABASE 'testDB.db' as 'TEMP';
Error: database TEMP is already in use
sqlite>  ATTACH DATABASE 'testDB.db' as 'main';
Error: database TEMP is already in use

10、SQLite 分離數據庫

SQLite的 DETACH DTABASE 語句是用來把命名數據庫從一個數據庫連接分離和遊離出來,連接是之前使用 ATTACH 語句附加的。如果同一個數據庫文件已經被附加上多個別名,DETACH 命令將只斷開給定名稱的連接,而其餘的仍然有效。您無法分離 main 或 temp 數據庫。

如果數據庫是在內存中或者是臨時數據庫,則該數據庫將被摧毀,且內容將會丟失。

語法

SQLite 的 DETACH DATABASE 'Alias-Name' 語句的基本語法如下:

DETACH DATABASE 'Alias-Name';

在這裏,'Alias-Name' 與您之前使用 ATTACH 語句附加數據庫時所用到的別名相同。

實例

假設在前面的章節中您已經創建了一個數據庫,並給它附加了 'test' 和 'currentDB',使用 .database 命令,我們可以看到:

sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db
3    currentDB        /home/sqlite/testDB.db

現在,讓我們嘗試把 'currentDB' 從 testDB.db 中分離出來,如下所示:

sqlite> DETACH DATABASE 'currentDB';

現在,如果檢查當前附加的數據庫,您會發現,testDB.db 仍與 'test' 和 'main' 保持連接。

sqlite>.databases
seq  name             file
---  ---------------  ----------------------
0    main             /home/sqlite/testDB.db
2    test             /home/sqlite/testDB.db

有個很重要的點就是,在cmd窗口中,我們輸入sqlite3進入對數據庫的操作平臺時,我們要用.open 來打開數據庫,纔可對其e進行s接下來的操作,.databases命令的作用是顯示所有attached過的數據庫。詳細例子如下:


11、SQLite的創建表

SQLite的CREATE TABLE語句用於任何給定的數據庫創建一個新表。創建基本表,涉及到命名錶,定義列和每一列的數據類型。

語法

CREATE TABLE語句的基本語法如下:

CREATE TABLE database_name.table_name
   column1數據類型PRIMARY KEY(一列或多列),
   column2數據類型,
   column3數據類型,
   .....
   columnN數據類型,
);

CREATE TABLE是告訴數據庫系統創建一個新表的關鍵字.CREATE TABLE語句後跟着表的唯一的名稱或標識。您也可以選擇指定帶有table_namedatabase_name

實例

下面是一個實例,它創建了一個公司表,ID作爲主鍵,NOT NULL的約束表示在這些字段不能爲NULL:

sqlite> CREATE TABLE COMPANY
   ID INT PRIMARY KEY NOT NULL
   NAME TEXT NOT NULL
   AGE INT NOT NULL
   ADDRESS CHAR50),
   SALARY REAL
);

您可以使用SQLite的命令中的.tables命令來驗證表是否已成功創建,該命令用於列出附加數據庫中的所有表

sqlite的> .tables
公司部門

您可以使用SQLite .schema命令得到表的完整信息,如下所示:

sqlite> .schema COMPANY
CREATE TABLE COMPANY
   ID INT PRIMARY KEY NOT NULL
   NAME TEXT NOT NULL
   AGE INT NOT NULL
   ADDRESS CHAR50),
   SALARY REAL
);

12、SQLite 刪除表

SQLite 的 DROP TABLE 語句用來刪除表定義及其所有相關數據、索引、觸發器、約束和該表的權限規範。

使用此命令時要特別注意,因爲一旦一個表被刪除,表中所有信息也將永遠丟失。

語法

DROP TABLE 語句的基本語法如下。您可以選擇指定帶有表名的數據庫名稱,如下所示:

DROP TABLE database_name.table_name;

實例

讓我們先確認 COMPANY 表已經存在,然後我們將其從數據庫中刪除。

sqlite>.tables
COMPANY       test.COMPANY

這意味着 COMPANY 表已存在數據庫中,接下來讓我們把它從數據庫中刪除,如下:

sqlite>DROP TABLE COMPANY;
sqlite>

現在,如果嘗試 .TABLES 命令,那麼將無法找到 COMPANY 表了:

sqlite>.tables
sqlite>

顯示結果爲空,意味着已經成功從數據庫刪除表。

13、SQLite Insert 語句

SQLite 的 INSERT INTO 語句用於向數據庫的某個表中添加新的數據行。

語法

INSERT INTO 語句有兩種基本語法,如下所示:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

在這裏,column1, column2,...columnN 是要插入數據的表中的列的名稱。

如果要爲表中的所有列添加值,您也可以不需要在 SQLite 查詢中指定列名稱。但要確保值的順序與列在表中的順序一致。SQLite 的 INSERT INTO 語法如下:

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

實例

假設您已經在 testDB.db 中創建了 COMPANY表,如下所示:

sqlite> CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

現在,下面的語句將在 COMPANY 表中創建六個記錄:

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );

INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );

您也可以使用第二種語法在 COMPANY 表中創建一個記錄,如下所示:

INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

上面的所有語句將在 COMPANY 表中創建下列記錄。下一章會教您如何從一個表中顯示所有這些記錄。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

使用一個表來填充另一個表

您可以通過在一個有一組字段的表上使用 select 語句,填充數據到另一個表中。下面是語法:

INSERT INTO first_table_name [(column1, column2, ... columnN)] 
   SELECT column1, column2, ...columnN 
   FROM second_table_name
   [WHERE condition];


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章