标签: sqlite

如何确定SQLite索引是否唯一?(使用SQL)

我想通过SQL查询找出索引是否为UNIQUE.我正在使用SQLite 3.

我尝试了两种方法:

SELECT * FROM sqlite_master WHERE name = 'sqlite_autoindex_user_1'
Run Code Online (Sandbox Code Playgroud)

这将返回有关索引的信息("type","name","tbl_name","rootpage"和"sql").请注意,当SQLite自动创建索引时,sql列为空.

PRAGMA index_info(sqlite_autoindex_user_1);
Run Code Online (Sandbox Code Playgroud)

这将返回索引中的列("seqno","cid"和"name").

还有其他建议吗?

编辑:上面的示例是针对自动生成的索引,但我的问题是关于索引的一般情况.例如,我可以使用"CREATE UNIQUE INDEX index1 ON visit(user,date)"创建索引.如果我的新索引是UNIQUE,似乎没有SQL命令会显示.

sqlite

18
推荐指数
2
解决办法
1万
查看次数

SQLite中的外键优化

我知道SQLite本身并不强制执行外键,但这不是我主要关注的问题.问题是:如果我宣布

CREATE TABLE invoice (
  invoiceID INTEGER PRIMARY KEY,
  clientID INTEGER REFERENCES client(clientID),
  ...
  )
Run Code Online (Sandbox Code Playgroud)

sqlite至少会使用clientID是外键的信息来优化查询并自动索引invoice.clientID,还是这个约束是真正的无操作?

sqlite indexing foreign-keys query-optimization

18
推荐指数
2
解决办法
7046
查看次数

如何更改sqlite3数据库的排序规则以不敏感地排序大小写?

我有一个查询sqlite3数据库,它提供了排序数据.数据基于varchar列"名称" 列进行排序.现在当我进行查询时

select * from tableNames Order by Name;
Run Code Online (Sandbox Code Playgroud)

它提供这样的数据.

    Pen
    Stapler
    pencil

意味着它正在考虑区分大小写的东西.我想要的方式如下

    Pen
    pencil
    Stapler

那么我应该在sqlite3数据库中进行哪些更改以获得必要的结果?

相关如何在字符串比较时将Sqlite3设置为不区分大小写?

sql sqlite sql-order-by case-insensitive

18
推荐指数
2
解决办法
3万
查看次数

SQLite3的动态类型

与其他SQL版本相比,SQLite3使用动态类型而不是静态类型.在SQLite的网站上写着:

大多数SQL数据库引擎(除了SQLite之外的每个SQL数据库引擎,据我们所知)都使用静态,严格的类型.使用静态类型时,值的数据类型由其容器(存储值的特定列)确定.

SQLite使用更通用的动态类型系统.在SQLite中,值的数据类型与值本身相关联,而不是与其容器相关联.

在我看来,这正是你想要的,因为它允许你存储整数列中的字符串.

页面继续:

... SQLite中的动态类型允许它执行传统的刚性类型数据库中无法实现的操作.

我有两个问题:

  1. 用例问题:SQLite3的动态类型有哪些例子?
  2. 历史/设计问题:使用动态类型实现SQLite的动机是什么?

database sqlite dynamic-typing

18
推荐指数
2
解决办法
2271
查看次数

执行中的Python sqlite3字符串变量

我尝试在Python中执行此sqlite3查询.我将代码减少到最小,sqlite.connect等工作.

column = 'Pron_1_Pers_Sg'
goal = 'gender' 
constrain = 'Mann'


with con:
    cur = con.cursor()

    cur.execute("SELECT ? FROM Data where ?=?", (column, goal, constrain))
    con.commit()

    rows = cur.fetchall()

    for element in rows:
        values.append(element)
Run Code Online (Sandbox Code Playgroud)

这将返回一个空列表.如果我对字符串进行硬编码,它就可以工作并返回值.

python sqlite

18
推荐指数
1
解决办法
3万
查看次数

java.lang.IllegalStateException:尝试重新打开已关闭的对象(尝试关闭)

public int getRecordsCount() {
        String countQuery = "SELECT  * FROM " + TABLE_LOGIN;

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(countQuery, null);
        if(cursor != null && !cursor.isClosed()){
            cursor.close();
        }   
        // return count

        return cursor.getCount();
    }
Run Code Online (Sandbox Code Playgroud)

我试图获取数据库中的总记录数,但数据库每次都会崩溃java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT * FROM login).请帮我解决错误

  03-05 22:23:14.208: E/AndroidRuntime(4988): FATAL EXCEPTION: main
    03-05 22:23:14.208: E/AndroidRuntime(4988): java.lang.IllegalStateException: attempt to re-open an already-closed object: android.database.sqlite.SQLiteQuery (mSql = SELECT  * FROM login) 
    03-05 22:23:14.208: E/AndroidRuntime(4988):     at android.database.sqlite.SQLiteClosable.acquireReference(SQLiteClosable.java:34)
    03-05 …
Run Code Online (Sandbox Code Playgroud)

sqlite android android-sqlite

18
推荐指数
2
解决办法
4万
查看次数

如何避免GROUP_CONCAT中的重复?

我有查询,如果它们属于一个组,则连接字符串.

    SELECT e.id, 
        ke.value,
        re.value AS re_value,
        GROUP_CONCAT(g.value,', ')
        FROM entry e
                INNER JOIN k_ele ke ON e.id = ke.fk
                INNER JOIN r_ele re ON e.id = re.fk
                INNER JOIN sense s ON e.id = s.fk
                INNER JOIN gloss g ON s.id = g.fk
WHERE g.lang IS NULL
GROUP BY s.id
ORDER BY re_value
Run Code Online (Sandbox Code Playgroud)

GROUP_CONCAT(g.value,',')

给出了这个结果.

深情的关系,深情的关系,深情的关系,深情的关系,爱的关系,爱的关系,爱的关系,爱的关系

正如您所看到的,连接中存在重复.如何避免连接中的重复?

sqlite concatenation duplication

18
推荐指数
2
解决办法
6133
查看次数

如何在Android中重置SqLite数据库?

我希望我的用户能够重置应用程序,然后我需要重置我创建的SQLite数据库.我怎样才能做到这一点?我想重置数据库或删除并重新创建数据库.

sqlite android android-sqlite

18
推荐指数
2
解决办法
4万
查看次数

MySQL的语法图

我非常喜欢SQLite文档中的SQL语法图.

在此输入图像描述

我发现这个图比MySQL文档中的等价物更容易理解

UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
Run Code Online (Sandbox Code Playgroud)

有谁知道MySQL和其他方言是否存在这样的图表?

mysql sql sqlite

18
推荐指数
1
解决办法
1057
查看次数

使用System.Data.Sqlite进行Sqlite在线备份

在数据库仍处于联机状态时,如何在本机C#代码中备份sqlite数据库?所有在线备份api示例都是C代码.

c# sqlite system.data.sqlite

18
推荐指数
1
解决办法
7297
查看次数