常用的Sqlite SQL語句(持續更新中)

snowell發表於2015-03-26

表操作

刪除一張表(沒有關聯關係)

DROP TABLE tableName

建立一張表,帶有一個自增欄位(ID):

CREATE TABLE Persons
(
  ID INTEGER PRIMARY KEY,
  LastName varchar(255),
  FirstName varchar(255)
)

在Column後面加入INTEGER PRIMARY KEY就代表AUTO_INCREASEMENT,並且是NOT NULL的,因為在Sqlite中沒有AUTO_INCREASEMENT這個關鍵字。每次INSERT一條記錄,不用給ID指定值,Sqlite會自動增加值。另外注意,一定要寫成這樣:INTEGER PRIMARY KEY。如果寫成這樣INT PRIMARY KEY也是不會自增的。更詳細內容可以點選檢視這裡

檢視某一張表是否存在:

SELECT * FROM sqlite_master WHERE type=`table` AND name=`yourtablename`

在查詢某個欄位的內容時,使用SELECT語句,在Sqlite裡是case-sensitive的。也就是說,如果你的表裡的內容是大寫,但是你查的是相同內容,但是是小寫的,是查不到的。如果想忽略大小寫,即 case-insensitive,需要用到COLLATE NOCASE

SELECT * FROM tablename WHERE someField = `value` COLLATE NOCASE

欄位操作

查詢一張表中,某個欄位someField沒有重複的條目:

SELECT distinct someField FROM table 

查詢一張表中,某個欄位someField有重複的條目:

SELECT * FROM table GROUP BY someField HAVING count(*) > 1    

向一張已經存在的表裡加兩個Column,分別為Name和Password。當然,這裡的Password是明文的。

ALTER TABLE User RENAME TO sqlitestudio_temp_table;

CREATE TABLE User (
    ID        INTEGER PRIMARY KEY,
    AuthToken VARCHAR NOT NULL
                      UNIQUE,
    Routeway  VARCHAR NOT NULL
                      UNIQUE,
    Name      VARCHAR NOT NULL,
    Password  VARCHAR NOT NULL
);

INSERT INTO User (
                     ID,
                     AuthToken,
                     Routeway
                 )
                 SELECT ID,
                        AuthToken,
                        Routeway
                   FROM sqlitestudio_temp_table;

DROP TABLE sqlitestudio_temp_table;

用一張表TableB裡的一個欄位fieldB內容給另外一張表TableA裡的一個欄位fieldA賦值:

UPDATE TableA SET fieldA = TableB.fieldB

如果是同一張表TableA中,用一個欄位field1的值給表中的另外一個欄位field2值賦值:

UPDATE TableA SET field2 = field1

如果需要把一個字串(`someString`)和一個欄位field1的值進行連線,然後賦值給一個欄位field2:

UPDATE TableA SET field2 = field1 || `someString`

把一張表TableA裡的資料匯入到另外一張表TableB中(兩張表中的結構和欄位必須一樣):

INSERT INTO TableB SELECT * FROM TableA

字元操作

將兩個字元連線,用 ||

string1 || string2

關於字串的格式,比如一個欄位Month,代表月份,型別是int,但是表中的月份如果不超過十月,是單個字元。比如:1,2,3,4,12。但是列印出來希望是:01,02,03,04,12。目前沒發現可用的函式。可以使用substr||組合一下:

substr(`0`|| Month, -2, 2)

這裡簡單解釋一下:如果Month是1,那麼`0`|| Month之後是01,-2意味著從倒數第2個開始,取2個字元。取出來是01。
如果Month是12,那麼`0`|| Month之後是012,-從倒數第2個開始,取2個字元。取出來還是12。

相關文章