SQLite进阶-10.约束
约束
约束是作用于数据表中列上的规则,用于限制表中数据的类型。约束的存在保证了数据库中数据的精确性和可靠性。
约束可以是列级或表级,列级约束作用于单一的列,而表级约束作用于整张数据表。
SQLite中常见的约束:
- NOT NULL 约束:确保某列不能有NULL值。
- DEFAULT 约束:当某列没有插入值时,为该列提供默认值。
- UNIQUE 约束:确保某列中的所有值是不同的。
- PRIMARY KEY 约束:唯一标识数据库表中的数据。
- FOREIGN KEY 约束:一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
- CHECK 约束:确保某列中的所有值满足一定条件。
NOT NULL 约束
默认情况下,列可以保存 NULL 值。如果您不想某列有 NULL 值,那么需要在该列上定义此约束,指定在该列上不允许 NULL 值。
NULL 与没有数据是不一样的,它代表着未知的数据。
-- 实例
CREATE TABLE link_men (
ID INT PRIMARY KEY NOT NULL;
NAME TEXT NOT NULL
)
DEFAULT 约束
DEFAULT 约束在 INSERT INTO 语句没有提供一个特定的值时,为列提供一个默认值。
-- 实例
CREATE TABLE link_men(
ID INT PRIMARY KEY NOT NULL;
NAME TEXT NOT NULL;
ADDRESS TEXT NOT NULL;
SALARY REAL DEFAULT 8000.00
)
UNIQUE 约束
UNIQUE 约束防止在一个特定的列存在两个记录具有相同的值。
-- 实例
CREATE TABLE link_men(
ID INT PRIMARY KEY NOT NULL;
NAME TEXT NOT NULL;
AGE INT NOT NULL UNIQUE;
ADDRESS TEXT;
SALARY REAL DEFAULT 8000.00
)
PRIMAY KEY 约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
-- 实例
CREATE TABLE link_men(
ID INT PRIMARY KEY NOT NULL;
NAME TEXT NOT NULL;
AGE INT NOT NULL UNIQUE;
ADDRESS TEXT;
SALARY , REAL DEFAULT 8000.00
)
FOREIGN KEY 约束
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
-- 实例
CREATE TABLE link_men (
ID INT PRIMARY KEY NOT NULL;
NAME TEXT NOT NULL;
AGE INT NOT NULL UNIQUE;
ADDRESS TEXT;
SALARY REAL DEFAULT 8000.00;
FOREIGN KEY (P_ID) REFERENCES persons(P_ID);
)
CHECK 约束
CHECK 约束启用输入一条记录要检查值的条件。如果条件值为 false,则记录违反了约束,且不能输入到表。
CREATE TABLE link_men(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS TEXT,
SALARY REAL CHECK(SALARY > 0)
);
SQLite进阶-10.约束的更多相关文章
- python进阶10 MySQL补充 编码、别名、视图、数据库修改
python进阶10 MySQL补充 编码.别名.视图.数据库修改 一.编码问题 #MySQL级别编码 #修改位置: /etc/mysql/mysql.conf.d/mysqld.cnf def ...
- js 进阶 10 js选择器大全
js 进阶 10 js选择器大全 一.总结 一句话总结:和css选择器很像 二.JQuery选择器 原生javaScript中,只能使用getELementById().getElementByNam ...
- Oracle 学习笔记 10 -- 约束
本次笔记来学习约束,约束在表中无处不在. 比如,表中的数据不同意为空或者是表中id为设为主键,都是约束. 约束分类: 主键约束(PRIMARY KEY):主键表示表中一个唯一的标识,本 ...
- SQLite进阶-19.常用函数
目录 SQLite常用函数 SQLite常用函数 SQLite 有许多内置函数用于处理字符串或数字数据. 序号 函数 & 描述 1 SQLite COUNT 函数SQLite COUNT 聚集 ...
- SQLite进阶-16.索引
目录 索引 创建索引 查看索引 删除索引 创建索引的注意项 索引使用(Indexed By) 索引 索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索.简单地说,索引是一个指向表中数 ...
- T-SQL查询进阶-10分钟理解游标
转:http://www.cnblogs.com/CareySon/archive/2011/11/01/2231381.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的 ...
- JAVA进阶10
间歇性混吃等死,持续性踌躇满志系列-------------第10天 1.Random package cn.intcast.day08.demo01; import java.util.Random ...
- [Swift实际操作]八、实用进阶-(10)使用Swift创建一个二叉树BinaryTreeNode
1.二叉树的特点: (1).每个节点最多有两个子树(2).左子树和右子树是有顺序的,次序不能颠倒(3).即使某节点只有一个子树,也要区分左右子树 2.二叉查找树(Binary Search Tree) ...
- SQLite进阶-18.事务
目录 SQLite事务 事务的属性 事务控制 BEGIN TRANSACTION命令 COMMIT命令 ROLLBACK命令 SQLite事务 事务(Transaction) 是一个对数据库执行工作单 ...
随机推荐
- 积性函数,线性筛入门 HDU - 2879
HDU - 2879HeHe 题意:He[N]为[0,N−1]范围内有多少个数满足式子x2≡x (mod N),求HeHe[N]=He[1]×……×He[N] 我是通过打表发现的he[x]=2k,k为 ...
- 人脸检测之Haar-like,Adaboost,级联(cascade)
最新版本整理完毕,见: http://face2ai.com/MachineLearning-Haar-like-Adaboost-cascade 0:写在前面的话 写在前面的牢骚 ...
- 集合家族——Vector
一.vector简介 Vector 可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.不过,Vector 的大小是可以增加或者减小的,以便适应创建 Vector 后进行添加或 ...
- Flask-Response
Flask中的HTTPResponse from flask import Flask,redirect app = Flask(__name__) @app.route("/index&q ...
- tp5 模型关联,多表联查实用方法
1.模型中建立关联关系 public function goods(){ return $this->belongsTo('app\common\model\goods\Goods', 'goo ...
- Telerik JustDecompile
Free. For everyone. Forever. With an open source decompilation engine https://www.telerik.com/produc ...
- pip下载提速
方法一使用国内镜像: 清华:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中 ...
- instanceof 实现
A instanceof B // 实现 instanceof function instance(a, b) { const proto = a.__proto__; // eslint-disab ...
- Python3+RobotFramewok RIDE环境搭建(一)
工欲善其事,必先利其器,RIDE目前可以比较稳定的支持python3了,这里简单介绍一下环境的部署,建议多看看读一读官方文档,对能力提升很有帮助,很简单的三步: (1)安装python3,不详细介绍了 ...
- Elasticsearch聚合问题
在测试Elasticsearch聚合的时候报了一个错误.具体如下: GET /megacorp/employee/_search { "aggs": { "all_int ...