• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >SQLite > SQLite 入门教程三 好多约束 Constraints

SQLite 入门教程三 好多约束 Constraints

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了constraints,cascade constraints,constraints 翻译,uniqueconstraints,user constraints等相关知识,希望本文的分享对您有所帮助

一、约束 Constraints

在上一篇随笔的结尾,我提到了约束, 但是在那里我把它翻译成了限定符,不太准确,这里先更正一下,应该翻译成约束更贴切一点。 那么什么是约束呢?

我们在数据库中存储数据的时候,有一些数据有明显的约束条件。 比如一所学校关于教师的数据表,其中的字段列可能有如下约束:

年龄 - 至少大于20岁。如果你想录入一个小于20岁的教师,系统会报错
国籍 - 默认中国。所谓默认,就是如果你不填写,系统自动填上默认值
姓名 - 不能为空。每个人都有名字嘛
员工号 - 唯一。这个可不能乱,工资发错了就麻烦了
上面提到的大于、默认、不能为空、唯一等等,就是数据的约束条件。 我们在用 CREATE TABLE 创建表的时候,就应该将每个字段列的约束条件事先说明(如果有的话), 以后再往表里输入数据的时候,系统会自动为我们检查是否满足约束条件,如果不满足系统会报错。


SQLite 常用约束如下

NOT NULL - 非空
UNIQUE - 唯一
PRIMARY KEY - 主键
FOREIGN KEY - 外键
CHECK - 条件检查
DEFAULT - 默认

二、主键 PRIMARY KEY

我们还是进入 SQLite 命令行环境,建立一个 test.db 数据库用来做实验,如下

            运行 .tables 命令没有返回,说明数据库是空的。如果你的数据库里面有内容并影响到下面的实验, 你可以用我们上一篇学的 DROP TABLE 来删除造成影响的表, 或者用 ALTER TABLE ... RENAME TO ... 来改名。


--------------------------------------------------------------------------------

下面言归正转,我们来说说主键 PRIMARY KEY 。

首先,数据表中每一条记录都有一个主键, 这就像我们每的身份证号码、员工号、银行帐号; 反过来也可以说,每一个主键对应着一条数据记录。 所以,主键必须是唯一的。
其次,一般情况下主键同时也是一个索引,所以通过主键查找记录速度比较快。
第三,在关系型数据库中,一个表的主键可以作为另外一个表的外键, 这样,这两个表之间就通过这个键建立了关系。
最后,主键一般是整数或者字符串,只要保证唯一就行。 在 SQLite 中,主键如果是整数类型,该列的值可以自动增长。

--------------------------------------------------------------------------------

下面我们来做实验

我们先新建了一个 Teachers 表,并设置了两个字段列,其中 Id 字段列为主键列。 然后,我们向其中插入三条数据并查询,反馈一切正常。

注意:在插入前三条数据的时候,命令中并没有明确指明 Id 的值,系统自动赋值,并且数值自动增长。

插入第四条数据的时候,我给了一个明确的 Id 编号为 2,因为李四的编号已经是 2 了, 所以系统提示我错误:主键必须唯一。

三、默认值 DEFAULT

有一些特别的字段列,在每一条记录中,他的值基本上都是一样的。只是在个别情况下才改为别的值,这样的字段列我们可以给他设一个默认值。

下面我们来做实验

            先把之前的 Teachers 表删除,然后重新创建。这回 Teachers 表多了一个 Country 字段, 并且设置默认值为“中国”,然后我们插入四条数据到 Teachers 表。

前三条数据都没有明确指明 Country 字段的值,只有第四条数据指明了“孙悟空”的 Country 为“天庭”。

查询数据,发现前三条数据都填上了默认值,实验成功。

--------------------------------------------------------------------------------
数据显示有点走样,命令 .width 4 15 15 设置的列宽,可以通过 .show 查看, 可能是因为中文的原因,所以没有对齐。

四、非空 NOT NULL

有一些字段我们可能一时不知到该填些什么,同时它也没设定默认值, 当添加数据时,我们把这样的字段空着不填,系统认为他是 NULL 值。

但是还有另外一类字段,必须被填上数据,如果不填,系统就会报错。 这样的字段被称为 NOT NULL 非空字段,需要在定义表的时候事先声明。

下面我们来做实验

1     Alice            23               NULL      &nb

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQLite 入门教程三 好多约束 Constraints

相关文章

  • 2017-05-11SQLite 内存数据库学习手册
  • 2017-05-11保护你的Sqlite数据库(SQLite数据库安全秘籍)
  • 2017-05-11SQLite教程(三):数据表和视图简介
  • 2017-05-11SQLite教程(六):表达式详解
  • 2017-05-11基于sqlite特殊字符转义的实现方法
  • 2017-05-11为SQLite3提供一个ANSI到UTF8的互转函数
  • 2017-05-11SQLite 入门教程四 增删改查 有讲究
  • 2017-05-11SQLite3 命令行操作指南
  • 2017-05-11SQLite教程(四):内置函数
  • 2017-05-11sqlite时间戳转时间语句(时间转时间戳)

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Sqlite 操作类代码
    • sqlite 判断表中是否包含某个字段
    • 关于sqlite的使用介绍
    • SQLite3的绑定函数族使用与其注意事项详解
    • SQLite教程(一):SQLite数据库介绍
    • SQLite优化方法
    • SQLite教程(八):命令行工具介绍
    • SQLite3中的日期时间函数使用小结
    • SQLite 性能优化实例分享
    • SQLite教程(十一):临时文件

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有