sqlite数据库的char,varchar,text,nchar,nvarchar,ntext的区别

1、CHAR。CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充。

2、VARCHAR。存储变长数据,但存储效率没有CHAR高。如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的。VARCHAR类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。

3、TEXT。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。

4、NCHAR、NVARCHAR、NTEXT。这三种从名字上看比前面三种多了个“N”。它表示存储的是Unicode数据类型的字符。我们知道字符中,英文字符只需要一个字节存储就足够了,但汉字众多,需要两个字节存储,英文与汉字同时存在时容易造成混乱,Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示。nchar、nvarchar的长度是在1到4000之间。和char、varchar比较起来,nchar、nvarchar则最多存储4000个字符,不论是英文还是汉字;而char、varchar最多能存储8000个英文,4000个汉字。可以看出使用nchar、nvarchar数据类型时不用担心输入的字符是英文还是汉字,较为方便,但在存储英文时数量上有些损失。  

    所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

      SQLite最大的特点在于其数据类型为无数据类型(typelessness)。这意味着可以保存任何类型的数据到所想要保存的任何表的任何列中,无论这列声明的数据类型是什么。虽然在生成表结构的时候,要声明每个域的数据类型,但SQLite并不做任何检查。开发人员要靠自己的程序来控制输入与读出数据的类型。这里有一个例外,就是当主键为整型值时,如果要插入一个非整型值时会产生异常。

虽然,SQLite允许忽略数据类型,但是,仍然建议在Create Table语句中指定数据类型,因为数据类型有利于增强程序的可读性。另外,虽然在插入或读出数据的时候是不区分类型的,但在比较的时候,不同数据类型是有区别的

  • 11
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过Python的SQLite模块读取SQLite数据库表里面的text文本字段,然后将其输出到网页上。以下是一个简单的示例代码: ```python import sqlite3 from flask import Flask, render_template app = Flask(__name__) @app.route('/') def index(): # 连接到SQLite数据库并获取游标 conn = sqlite3.connect('example.db') cur = conn.cursor() # 查询数据库表中的text字段 cur.execute("SELECT text_field FROM table_name") results = cur.fetchall() # 将查询结果渲染到模板中 return render_template('index.html', results=results) if __name__ == '__main__': app.run() ``` 在上面的代码中,我们使用Flask框架来创建一个Web应用程序,并使用SQLite模块连接到SQLite数据库。我们定义了一个路由`'/'`,当用户访问网站时,会执行`index()`函数。 在`index()`函数中,我们执行了一个SQL查询,将查询结果存储在`results`变量中。然后我们将`results`变量作为参数传递给`render_template()`函数,该函数将渲染模板`index.html`并将`results`变量传递给模板。 接下来,我们需要创建一个模板`index.html`,用于显示查询结果。以下是一个简单的示例模板代码: ```html <!DOCTYPE html> <html> <head> <title>SQLite Text Field</title> </head> <body> <h1>SQLite Text Field</h1> <ul> {% for result in results %} <li>{{ result[0] }}</li> {% endfor %} </ul> </body> </html> ``` 在上面的模板代码中,我们使用`{% for %}`循环遍历`results`变量中的查询结果,并将每个结果输出为一个列表项。注意,我们使用`result[0]`来访问查询结果中的第一个字段。 最后,我们需要确保SQLite数据库中包含一个名为`table_name`的表,并且该表包含一个名为`text_field`的text字段。你可以根据你的需要修改这些名称。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值