Ⅰ sqlITE3,怎麼將多行合成一行,用SQL語句
create table t(ta int ,tb char(10))
insert into t
select 1,'深灰色 ' union
select 2,'駝色' union
select 3,'暗紫色' union
select 4,'灰色' union
select 5,'21-5K013'
Ⅱ sqlite3怎麼修改數據 java
如果在linux下的話,如果安裝了sqlite3,可以使用這個命令進入sql模式:sqlite3 test.db
如果windows下的話,可以直接使用工具連接sqlite
sqlite語法基本上和其他的sql語法沒有太多的改變
Ⅲ SQLite不支持的SQL語法有哪些
1 TOP
這是一個經常問到的問題,例如在SQLSERVER中可以使用如下語句來取得記錄集中的前十條記錄:
SELECT TOP 10 * FROM [index] ORDER BY indexid DESC;
但是這條SQL語句在SQLite中是無法執行的,應該改為:
SELECT * FROM [index] ORDER BY indexid DESC limit 0,10;
其中limit 0,10表示從第0條記錄開始,往後一共讀取10條
2 創建視圖(Create View)
SQLite在創建多表視圖的時候有一個BUG,問題如下:
CREATE VIEW watch_single AS SELECT DISTINCTwatch_item.[watchid],watch_item.[itemid] FROMwatch_item;
上面這條SQL語句執行後會顯示成功,但是實際上除了
SELECT COUNT(*) FROM [watch_single ] WHERE watch_ single.watchid = 1;
能執行之外是無法執行其他任何語句的。其原因在於建立視圖的時候指定了欄位所在的表名,而SQLite並不能正確地識別它。所以上面的創建語句要改為:
CREATE VIEW watch_single AS SELECT DISTINCT [watchid],[itemid] FROM watch_item;
但是隨之而來的問題是如果是多表的視圖,且表間有重名欄位的時候該怎麼辦?
3 COUNT(DISTINCT column)
SQLite在執行如下語句的時候會報錯:
SELECT COUNT(DISTINCT watchid) FROM [watch_item] WHERE watch_item.watchid = 1;
其原因是SQLite的所有內置函數都不支持DISTINCT限定,所以如果要統計不重復的記錄數的時候會出現一些麻煩。比較可行的做法是先建立一個不重復的記錄表的視圖,然後再對該視圖進行計數。
4 外連接
雖然SQLite官方已經聲稱LEFT OUTER JOIN 已經實現,但還沒有 RIGHT OUTER JOIN 和 FULL OUTER JOIN。但是實際測試表明似乎並不能夠正常的工作。以下三條語句在執行的時候均會報錯:
SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE tags.[tagid] = tag_rss.[tagid](*);
SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT OUTER JOIN tag_rss.[tagid] = tags.[tagid];
SELECT tags.[tagid] FROM [tags],[tag_rss] WHERE LEFT JOIN tag_rss.[tagid] = tags.[tagid];
此外經過測試用+號代替*號也是不可行的。
收集SQLite與Sql Server的語法差異
1.返回最後插入的標識值
返回最後插入的標識值sql server用@@IDENTITY
sqlite用標量函數LAST_INSERT_ROWID()
返回通過當前的 SQLConnection 插入到資料庫的最後一行的行標識符(生成的主鍵)。此值與SQLConnection.lastInsertRowID 屬性返回的值相同。
2.top n
在sql server中返回前2行可以這樣:
select top 2 * from aa order by ids desc
sqlite中用LIMIT,語句如下:
select * from aa order by ids desc LIMIT 2
3.GETDATE ( )
在sql server中GETDATE ( )返回當前系統日期和時間
sqlite中沒有
4.EXISTS語句
sql server中判斷插入(不存在ids=5的就插入)
IF NOT EXISTS (select * from aa where ids=5)
BEGIN
insert into aa(nickname)
select 't'
在sqlite中可以這樣
insert into aa(nickname)
select 't'
where not exists(select * from aa where ids=5)
5.嵌套事務
sqlite僅允許單個活動的事務
6.RIGHT 和 FULL OUTER JOIN
sqlite不支持 RIGHT OUTER JOIN 或 FULL OUTER JOIN
7.可更新的視圖
sqlite視圖是只讀的。不能對視圖執行 DELETE、INSERT 或 UPDATE 語句,sql server是可以對視圖 DELETE、INSERT 或 UPDATE
Ⅳ 易語言sqlite資料庫 一個查詢的sql語句 該怎麼寫
你好:
利用Navicat創建SQLite資料庫
步驟一、打開Navicat,點擊文件,選擇新建連接,選擇SQLite,彈出界面,在連接名輸入連接名稱,類型根絕需要選擇,若選現有的資料庫文件,則需要在資料庫文件選項中,找到相應的SQLite資料庫文件,若選其他類型,則會新建一個資料庫連接,需要在資料庫文件選項,選擇保存位置(SQLite與SQLite3兩個版本)。下文連接名為SQLiteOperate,類型為SQLite3,資料庫名為test.db,默認有一個資料庫main。高級、HTTP中的用法自行研究或者查找資料。
步驟二、打開連接,右鍵附加資料庫,選擇剛才創建的資料庫文件,然後打開,附加成功會在SQLiteOperate連接中出現一個新的資料庫test,然後打開資料庫test,到此,資料庫創建完成。
步驟三、創建數據表
選中test資料庫,點擊右上欄的查詢選項、新建查詢、輸入sql語句:create table if not exists user(_id integer primary key not null,name text not null,age integer not null,sex text not null)。創建表user,創建時判斷該表是否存在,注意SQLite里只有null、integer、real(浮點數)、blob、text字元串。輸入後點擊運行按鈕,此時會提示彈出窗口要求輸入該查詢的名字,例如create_SQL,運行後,打開test資料庫,發現沒有user表。不要怕,你可以再次運行SQL語句,會提示user表已經存在。是不是很詫異?不要怕,斷開SQLiteOperate連接,然後再次打開連接,打開test資料庫,你會發現SQLite就在那裡。
步驟四、插入數據
新建查詢,同步驟三中操作,輸入插入數據的語句:insert into user(name,sex,age) values ('張三,'女',18),其中的_id為自增,省略即可,然後運行,打開數據表user,會發現數據插入成功,若運行前user表已打開,建議先關閉user表,再次打開。
步驟五、查詢數據
同四,輸入查詢sql語句:查詢所有內容:select * from user,查詢指定條件所有內容:例如:select * from user where name='張三',查詢指定條件的指定內容:例如:select name from user where age=18
步驟六、更新數據
同四新建查詢,輸入更新sql語句:更新某列所有值:例如:update user set age=18 ,更新指定條件的值:例如:update user set name='趙四' where name='張三'
步驟七、刪除數據
同四新建查詢,輸入刪除sql語句:例如:delete from stu where name='張三'
Ⅳ sqlite3 sql查詢 if怎麼用
去查查sqlite3的資料,應該就很清楚了。我沒有用C/C++寫過sqlite3的應用(用Java寫過,當所有的方法完全不一樣),不過從3個函數的名字,基本上可以才出來,他們分別是干什麼的:
1. 執行sql語句。這個sql語句可以是增、刪、改、查,但通常用於對數據表的增、刪、改;
2. 用於預處理sql語句,比如sql中如果包含?需要用別的變數代替時,這和Java中PreparedStatement應該比較類似,經過這種處理的語句,效率通常比較高一些;
3. 主要用於查詢,不能做數據表的增、刪、改操作。
俺一般傾向於用類似第一個函數那樣的方式來處理數據表,因為自由哈。
Ⅵ SQLite3懂的來,給最高分
不可以修改從stmt中讀取的值。
1、下面的語句可以從表test中讀取記錄:
pcSql = "SELECT number,name from test where number = '" + strNumber + "';";
sqlite3_prepare(pSqlite3,pcSql,(int)strlen(pcSql),&pStmt,&c_pcTail);
sqlite3_step(pStmt);
其中pStmt是指向數據集的指針。
從SQLite3的表中讀取pStmt指向的數據集,只是內存中存在的數據結構,它與SQLite3的表再無關系。這就是輕量資料庫的特點。它只做必須做的。
而不象sql server和oracal 那樣,有後台進程管理與資料庫雙向連接的recordSet。
2、可以使用下列語句修改表test中的記錄:
pcSql = "INSERT INTO test(number,name) VALUES("+ strNumber + "','"+ strName + "')";
sqlite3_exec(pSqlite3,pcSql,NULL,NULL,&pcErrMsg);
Ⅶ python往sqlite3中更新數據,數值型欄位更新一個None, sql語句該如何寫
///sqlite數據表建立唯一限制就行了么///sql代碼如下:CREATE TABLE "main"."film" ("filmno" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"filmname" TEXT(100),"language" TEXT(10),"type" TEXT(10),CONSTRAINT "不重復規則" UNIQUE ("filmnam...
Ⅷ linux下怎樣能執行sqlite3多條SQL語句,比如一個txt文檔里存放多條語句怎樣來執行
只能循環讀出來執行,還要看 是不是帶參數,
下面是個讀sql 語句的函數
int db_order(sqlite3 *db,char *sql)
{
va_list ap;
int ret = 0;
ret = sqlite3_exec(db, sql, NULL, NULL, NULL);
sqlite3_free(sql);
if(ret != SQLITE_OK) {
fputs("insert error\n",stderr);
}
return ret;
}
int main(void)
{
sqlite3 *db;
char *sql=NULL;
sql = sqlite3_mprintf("select * from datebase;");
db_order(db,sql);
}
你把sqlite3_mprintf()里的語句換做讀出來的字元串
Ⅸ sqlite3 插入或者更新寫一條SQL語句高手指點一下
一條語句搞不定, 請用 select + insert + update的組合吧
Ⅹ django sqlite可以用sql語句操作嗎
sqlite3 使用
1、import sqlite3 確認系統中是否安裝
2、進入當前項目目錄,cmd後運行python,進入命令行模式
3、import sqlite3,
sqlite3.connect('{path\name.db}') #大括弧內表示自定義,真實情況沒有大括弧
4、修改settings.py文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': {path\name.db}',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
5、進入資料庫文件界面,運行python manage.py shell
from django.db import connection
cur = connection.cursor()
如果沒報錯,則表示配置成功
6、修改models.py文件,配置自己的表
例如:
from django.db import models
from django.contrib import admin
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length = 150)
body = models.TextField()
timestamp = models.DateTimeField()
class Meta:
ordering = ['-timestamp']
7、創建資料庫內容
python manage.py syncdb
根據提示輸入,表示連接成功
註:以上只表示對資料庫的創建,連接和使用,不包含其它內容。