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 可以是下列之一:
|
.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_name的database_name。
實例
下面是一個實例,它創建了一個公司表,ID作爲主鍵,NOT NULL的約束表示在這些字段不能爲NULL:
sqlite> CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
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 CHAR(50),
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];