SQLite基础:语法、数据类型、运算符、表达式

1. 语法

特点:

  • SQLite不区分大小写。但是有部分命令区分大小写:GLOB 和 glob 在 SQLite 语句中具有不同的含义。
  • 注释以两个连续的“-”字符开头、不能嵌套、与“/”一起出现并扩展到并包括下一个“/”字符对。
  • 语句都以一些关键字开头,如 SELECT、INSERT、UPDATE、DELETE、ALTER、DROP 等。
    所有语句都以分号 (😉 结束。
  1. ANALYZE 语句
  2. AND/OR 子句
  3. ALTER TABLE 语句
  4. ALTER TABLE 语句(重命名)
  5. ATTACH DATABASE 语句
  6. BEGIN TRANSACTION 语句
  7. BETWEEN 子句
  8. CREATE INDEX 语句
  9. CREATE UNIQUE INDEX 语句
  10. CREATE TABLE 语句
  11. CREATE TRIGGER 语句
  12. CREATE VIEW 语句
  13. CREATE VIRTUAL TABLE 语句
  14. COMMIT TRANSACTION 语句
  15. COUNT 计数子句
  16. DELETE 语句
  17. DETACH DATABASE 语句
  18. DISTINCT 子句
  19. DROP INDEX 语句
  20. DROP TABLE 语句
  21. DROP VIEW 语句
  22. DROP TRIGGER 语句
  23. EXISTS 子句
  24. EXPLAIN 语句
  25. GLOB 子句
  26. GROUP BY 子句
  27. HAVING 子句
  28. INSERT INTO 语句
  29. IN 子句
  30. Like 子句
  31. NOT IN 子句
  32. ORDER BY 子句
  33. PRAGMA 语句
  34. RELEASE SAVEPOINT 语句
  35. REINDEX 语句
  36. ROLLBACK 语句
  37. SAVEPOINT 语句
  38. SELECT 语句
  39. UPDATE 更新语句
  40. VACUUM 语句

2. 数据类型

SQLite数据类型用于指定任何对象的数据类型。在SQLite中,每个列、变量和表达式都有相关的数据类型。这些数据类型在创建表时使用。SQLite使用更通用的动态类型系统。在SQLite中,值的数据类型与值本身相关联,而不是与它的容器相关联。

2.1 SQLite 存储类

存储类描述
NULL它指定该值为空值。
INTEGER它指定值是一个有符号整数,根据值的大小存储在 1、2、3、4、6 或 8 个字节中。
REAL它指定值是一个浮点值,存储为一个 8 字节的 IEEE 浮点数。
text它指定值为文本字符串,使用数据库编码(utf-8、utf-16be 或 utf-16le)存储
BLOB它指定值是一个数据块,完全按照输入的方式存储。

注意:SQLite 存储类比数据类型更通用。例如: INTEGER 存储类包括 6 种不同长度的整数数据类型。

2.1 SQLite 关联类型

SQLite支持列的类型关联。任何列仍然可以存储任何类型的数据,但是列的首选存储类称为其关联。

Affinity描述
TEXT此列用于使用存储类 NULL、TEXT 或 BLOB 存储所有数据。
NUMERIC此列可能包含使用所有五个存储类别的值。
INTEGER它的行为与具有数字关联的列相同,但在强制转换表达式中例外。
REAL它的行为类似于具有数字关联的列,只是它强制整数值转换为浮点表示
NONE具有关联性 NONE 的列不偏爱一种存储类而不是另一种存储类,并且不会将数据从一个存储类说服到另一个。

以下是创建 SQLite 表时可以使用的各种数据类型名称的列表:

Data TypesCorresponding Affinity
INT INTEGER TINYINT SMALLINT MEDIUMINT BIGINT UNSIGNED BIG INT INT2 INT8INTEGER
CHARACTER(20) VARCHAR(255) VARYING CHARACTER(255) NCHAR(55) NATIVE CHARACTER(70) NVARCHAR(100) TEXT CLOBTEXT
BLOB no datatype specifiedNONE
REAL DOUBLE DOUBLE PRECISION FLOATREAL
NUMERIC DECIMAL(10,5) BOOLEAN DATE DATETIMENUMERIC

2.3 日期和时间数据类型

在 SQLite 中,没有单独的类来存储日期和时间。但是您可以将日期和时间存储为 TEXT、REAL 或INTEGER 值。

存储类日期格式
TEXT它以类似“yyyy-mm-dd hh:mm:ss.sss”的格式指定日期。
REAL它指定自公元前 4714 年 11 月 24 日中午在格林威治的天数
INTEGER它指定自 1970-01-01 00:00:00 UTC 以来的秒数。

2.4 布尔数据类型

在 SQLite 中,没有单独的布尔存储类。相反,布尔值存储为整数 0 (false) 和 1 (true)。

3. 运算符

3.1 算术运算符

操作符描述例子
‘+’加法运算符:用于将运算符两边的值相加。a+b = 150
‘-’减法运算符:用于从左手操作数中减去右手操作数。a-b = -50
‘*’乘法运算符:用于将两边的值相乘。a*b = 5000
/除法运算符:用于将左手操作数除以右手操作数。a/b = 0.5
%模运算符:用于将左手操作数除以右手操作数并返回余数。b%a = 0

3.2 比较运算符

操作符描述例子
==它用于检查两个操作数的值是否相等,如果是则条件为真。(a == b) 不是真的。
=它用于检查两个操作数的值是否相等,如果是则条件为真。(a = b) 不是真。
!=它用于检查两个操作数的值是否相等,如果值不相等则条件成立。(a != b) 是真的。
<>它用于检查两个操作数的值是否相等,如果值不相等则条件成立。(a <> b) 是真的。
‘>‘它用于检查左操作数的值是否大于右操作数的值,如果是则条件成立。(a > b) 不是真的。
<它用于检查左操作数的值是否小于右操作数的值,如果是则条件成立。(a < b) 是真的。
‘>=’它用于检查左操作数的值是否大于或等于右操作数的值,如果是则条件成立。(a >= b) 不是真的。
<=用于检查左操作数的值是否小于或等于右操作数的值,如果是则条件成立。(a <= b) 是真的。
!<用于检查左操作数的值是否不小于右操作数的值,如果是则条件成立。(a !< b) 是假的。
!>它用于检查左操作数的值是否不大于右操作数的值,如果是则条件成立。(a !> b) 是真的。

3.3 逻辑运算符

操作符描述
ANDAND 运算符允许在 SQL 语句的 WHERE 子句中存在多个条件。
BETWEENBETWEEN 运算符用于在给定最小值和最大值的情况下搜索一组值中的值。
EXISTSEXISTS 运算符用于搜索指定表中是否存在满足特定条件的行。IN
ININ 运算符用于将值与已指定的文字值列表进行比较。
NOT IN它是 IN 运算符的否定,用于将值与已指定的文字值列表进行比较。
LIKELIKE 运算符用于使用通配符运算符将值与相似值进行比较。
GLOBGLOB 运算符用于使用通配符运算符将值与相似值进行比较。此外, glob 区分大小写,不像喜欢。
NOTNOT 运算符颠倒了与它一起使用的逻辑运算符的含义。例如:EXISTS、NOT BETWEEN、NOT IN 等。这些被称为否定运算符。
OROR 运算符用于在 SQL 语句的 where 子句中组合多个条件。
IS NULLNULL 运算符用于将值与空值进行比较。
ISIS 运算符的工作方式类似于 =
IS NOTIS NOT 运算符的工作方式类似于 !=
‘’//此运算符用于添加两个不同的字符串并生成新的字符串。
UNIQUEUNIQUE 运算符搜索指定表的每一行的唯一性(无重复)。

3.4 按位运算符

操作符描述例子
&如果两个操作数中都存在二进制 AND运算符,则将其复制到结果中。(a & b) 将给出 12,即 0000 1100
/如果任一操作数中存在二进制 OR 运算符,则复制一点。(a
~Binary Ones Complement Operator是一元的,具有“翻转”位的效果。(~a ) 将给出 -61,它是 1100 0011 由于带符号的二进制数,以 2 的补码形式表示。
<<二元左移运算符。左操作数值向左移动右操作数指定的位数。a << 2 将给出 240,即 1111 0000
'>>二元右移运算符。左操作数值向右移动右操作数指定的位数。a >> 2 将给出 15,即 0000 1111

4. 表达式

SQLite 表达式是一个或多个值、运算符和 SQL 函数的组合。这些表达式用于计算值。

4.1 布尔表达式

SQLite 布尔表达式用于在匹配单个值的基础上获取数据。

SELECT column1, column2, columnN
FROM table_name
WHERE SINGLE VALUE MATCHTING EXPRESSION;

4.2 数值表达式

SQLite 数字表达式用于在查询中执行任何数学运算。

SELECT (25 + 15) AS ADDITION;

数值表达式包含几个内置函数,如 avg()、sum()、count() 等。这些函数称为聚合数据计算函数。

4.3 日期表达式

SQLite 日期表达式用于获取当前系统日期和时间值。

SELECT CURRENT_TIMESTAMP;
  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中,NURBS(非均匀有理B样条)是一种强大的数学工具,用于表示和处理复杂的曲线和曲面。NURBS在计算机图形学、CAD(计算机辅助设计)、CAM(计算机辅助制造)等领域有着广泛的应用。下面将详细探讨MATLAB中NURBS的绘制方法以及相关知识点。 我们需要理解NURBS的基本概念。NURBS是B样条(B-Spline)的一种扩展,其特殊之处在于引入了权重因子,使得曲线和曲面可以在不均匀的参数空间中进行平滑插值。这种灵活性使得NURBS在处理非均匀数据时尤为有效。 在MATLAB中,可以使用`nurbs`函数创建NURBS对象,它接受控制点、权值、 knot向量等参数。控制点定义了NURBS曲线的基本形状,而knot向量决定了曲线的平滑度和分布。权值则影响曲线通过控制点的方式,大的权值会使曲线更靠近该点。 例如,我们可以使用以下代码创建一个简单的NURBS曲线: ```matlab % 定义控制点 controlPoints = [1 1; 2 2; 3 1; 4 2]; % 定义knot向量 knotVector = [0 0 0 1 1 1]; % 定义权值(默认为1,如果未指定) weights = ones(size(controlPoints,1),1); % 创建NURBS对象 nurbsObj = nurbs(controlPoints, weights, knotVector); ``` 然后,我们可以用`plot`函数来绘制NURBS曲线: ```matlab plot(nurbsObj); grid on; ``` `data_example.mat`可能包含了一个示例的NURBS数据集,其中可能包含了控制点坐标、权值和knot向量。我们可以通过加载这个数据文件来进一步研究NURBS的绘制: ```matlab load('data_example.mat'); % 加载数据 nurbsData = struct2cell(data_example); % 转换为cell数组 % 解析数据 controlPoints = nurbsData{1}; weights = nurbsData{2}; knotVector = nurbsData{3}; % 创建并绘制NURBS曲线 nurbsObj = nurbs(controlPoints, weights, knotVector); plot(nurbsObj); grid on; ``` MATLAB还提供了其他与NURBS相关的函数,如`evalnurbs`用于评估NURBS曲线上的点,`isoparm`用于生成NURBS曲面上的等参线,以及`isocurve`用于在NURBS曲面上提取特定参数值的曲线。这些工具对于分析和操作NURBS对象非常有用。 MATLAB中的NURBS功能允许用户方便地创建、编辑和可视化复杂的曲线和曲面。通过对控制点、knot向量和权值的调整,可以精确地控制NURBS的形状和行为,从而满足各种工程和设计需求。通过深入理解和熟练掌握这些工具,可以在MATLAB环境中实现高效的NURBS建模和分析。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值