在 SQLite 中,主键可以是 NULL,这是与其他数据库不同的地方。 主键是表中的一个字段,唯一标识数据库表中的各行/记录。主键必须包含唯一值。主键列不能有 NULL 值。 ...查询会把 table1 中的每一行与 table2 中的每一行进行比较,找到所有满足连接谓词的行的匹配对。...SQLite NULL值: SQLite 的 NULL 是用来表示一个缺失值的项。表中的一个 NULL 值是在字段中显示为空白的一个值。 带有 NULL 值的字段是一个不带有值的字段。...NULL 值与零值或包含空格的字段是不同的,理解这点是非常重要的。 (1)带有 NULL 值的字段在记录创建的时候可以保留为空。...(2)NULL 值在选择数据时会引起问题,因为当把一个未知的值与另一个值进行比较时,结果总是未知的,且不会包含在最后的结果中。 6.
DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。 SQL使用方式 简单的结构化查询语言查询只包括SELECT选择列表、FROM子句和WHERE子句。...二、FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。...在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。 三、WHERE子句 WHERE子句设置查询条件,过滤掉不需要的数据行。...目标数据表 select * from 源数据表" 把源数据表的记录添加到目标数据表 ☆ 更新数据记录 ☆ Sql="update 数据表 set 字段名=字段值 where 条件表达式" ...值n " 没有条件则更新整个数据表中的指定字段值 ☆ 删除数据记录 ☆ Sql="delete from 数据表 where 条件表达式" Sql="delete from 数据表" 没有条件将删除数据表中所有记录
m, n子句 为了性能,就需要将m的值尽力的小,比如当前在第3页,需要查询第5页,每页10条数据,当前第3页的最大id为#max_id#: select * from table where id...使用主键来作为 WHERE 子句的条件查询是非常快速的 如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据 MySQL 的 where字符串比较是不区分大小写的。...表 set 列=新值 where 更新条件; 可以同时更新若干个字段 可以在 where 子句中指定任何条件 当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的 可以在一个单独表中同时更新数据...JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。 LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。...RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
; -- 更新表中的记录,将随机数据字段更新为新的随机值,并更新对应的十六进制表示 UPDATE test_table SET random_data = randomblob(16), hex_data...创建视图后,可以在 FROM 子句中使用它 另一个 SELECT 来代替表名。...如果 WHERE 子句不存在,则将删除表中的所有记录。 如果提供了 WHERE 子句,则仅针对 删除 WHERE 子句布尔表达式为 true。 表达式为 false 或 NULL 的行将保留。...,并返回更新后的库存数量 UPDATE products SET stock = stock - 1 WHERE id = 1 RETURNING stock; -- 删除订单表中的一条记录,并返回被删除的订单...,并返回更新后的库存数量 UPDATE products SET stock = stock - 1 WHERE id = 1 RETURNING stock; -- 删除订单表中的一条记录,并返回被删除的订单
仅在指定列中插入数据 下面的 SQL 语句将插入一条新记录,但只在“CustomerName”、“City”和“Country”列中插入数据(CustomerID 会自动更新): INSERT INTO...如果表中的字段是可选的,则可以在不向该字段添加值的情况下插入新记录或更新记录。然后,该字段将保存为 NULL 值。 注意: NULL 值不同于零值或包含空格的字段。...WHERE condition; 注意: 更新表中的记录时要小心!注意 WHERE语句中的子句UPDATE。该WHERE子句指定应该更新哪些记录。...如果省略该WHERE子句,表中的所有记录都将被更新!...JOIN内连接关键字 INNER JOIN关键字选择在两个表中具有匹配值的记录。
一旦执行:结果就是只返回一行记录:第一行 子查询 子查询是嵌套查询下层的程序模块。...当一个查询是另一个查新的条件时,成为子查询 指在一条select语句中,嵌入另外一条select语句,那么被嵌入的select语句称为子查询 主查询 主查询指的是主要查询的查询对象,第一条select语句...,从一张表中取出所有的记录去另外一张表中匹配,利用匹配条件 进行匹配。...去匹配另外一张表的每一条记录 3、如果满足匹配条件:保留;不满足不保留。...4、如果主表记录在从表中一条都没有匹配成功,那么也要保留该记录,从表对应的字段值都为null; 基本语法: 左连接:主表 left join 从表 on 连接条件; 右连接: 主表 right join
行 表中的数据是按照行来进行存储的,所保存的每个记录存储在自己的行内。如果把表想象成一个网格,那么网格中垂直的列则为表列,水平则为表行。 行表示的是一个记录。行有时候也称之为记录。...如果表中的列可以作为主键,则它必须满足: 任意两行都不具有相同的主键值(主键列不允许NULL值) 每行都必须有一个主键值 主键列中的值不允许修改或者更新 主键值不能重用(如果某行从表中删除,则它的主键不能赋给以后的行记录...笔记:我们需要注意order by子句的位置,一定要保证它是select语句的最后一条子句。...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...但是最好使用 执行算术运算 计算字段的另一个常见运算是对检索出来的数据进行算术运算。
使用主键来作为 WHERE 子句的条件查询是非常快速的 如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据 MySQL 的 where字符串比较是不区分大小写的。...update 表 set 列=新值 where 更新条件; 可以同时更新若干个字段 可以在 where 子句中指定任何条件 当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的 可以在一个单独表中同时更新数据...TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。...JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。...RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...但是最好使用 执行算术运算 计算字段的另一个常见运算是对检索出来的数据进行算术运算。...WHERE prod_id = 'RGAN01')); 作为计算字段使用子查询 使用子查询的另一个方法是创建计算字段 SELECT...要删除列请使用UPDATE语句 更新和删除的指导原则 请一定要带上WHERE子句,否则会修改全部的数据;除非我们的确是需要更新全部记录(少见) 要保证每个表都有主键,可以指定各个主键、多个值或者值的范围...十八、视图VIEW 什么是视图 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
: 1.1.1 where常用关键字 AND、OR:连接多个条件 BETWEEN AND:在...之间 IS NULL:查询空值 IN:查询在某个集中中 LIKE:模糊查询 找出名字当中含有...where操作之后):(又名多行处理函数)自动忽略null count 计数 count(*)计数总记录的条数 count(comm):表示统计comm字段中不为null的数据总量 sum 求和 avg...将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询被称为嵌套查询。...表示第一条数据 length表示取几个 limit执行的顺序是最后一个 2 数据更新SQL操作 2.1 insert 插入记录 2.1.1 插入单条记录 语法:insert [into] 表名 [字段1...2.3 update 更新记录 语法:update 表名 set 列名1 = 值1,列名2 = 值2,…[where 条件]; 参考链接 【数据库】 mysql的四种安装方式_mysql安装-CSDN
行 表中的数据是按照行来进行存储的,所保存的每个记录存储在自己的行内。如果把表想象成一个网格,那么网格中垂直的列则为表列,水平则为表行。 行表示的是一个记录。行有时候也称之为记录。...计算字段是运行时在select语句内创建的。 拼接字段 将多个字段联结在一起构成单个字段。根据不同的DBMS,使用+或者||来进行联结。但是在MySQL中必须使用特殊的函数来进行操作。...但是最好使用 执行算术运算 计算字段的另一个常见运算是对检索出来的数据进行算术运算。...要删除列请使用UPDATE语句 更新和删除的指导原则 请一定要带上WHERE子句,否则会修改全部的数据;除非我们的确是需要更新全部记录(少见) 要保证每个表都有主键,可以指定各个主键、多个值或者值的范围...十八、视图VIEW 什么是视图 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询。
distinct,去重,只保留不重复的结果(所有字段值都相同才算重复) select distinct * from my_stud; 字段列表 字段我们可以取别名。...一条 select 语句,MySQL 允许 target list 中输出的表达式是除聚集函数或 group by column 以外的表达式。否则就是非法的。...select * from my_stud group by class_id; 注意: group by 分组之后,只会取出每组的第一条记录。...having 与 where 类似,都是进行条件筛选,但是也有不同点,having 用于 group by 子句之后,用于分组数据进行筛选。...子句 用来限制记录数量。
更新记录 要修改表中已经存在的一条或多条记录,应使用SQL UPDATE语句。同DELETE语句一样,UPDATE语句可以使用WHERE子句来选择更新特定的记录。...当为一个表中的记录建立备份时,这种形式的INSERT 语句是非常有用的。在删除一个表中的记录之前,你可以先用这种方法把它们拷贝到另一个表中。...要做到这一点,只需在字段列表中指定你想要拷贝的字段。另外,你可以使用WHERE 子句来限制拷贝到新表中的记录。下面的例子只拷贝字段second_columnd的值等于’Copy Me!’...更新记录 要修改表中已经存在的一条或多条记录,应使用SQL UPDATE语句。同DELETE语句一样,UPDATE语句可以使用WHERE子句来选择更新特定的记录。...要做到这一点,只需在字段列表中指定你想要拷贝的字段。另外,你可以使用WHERE 子句来限制拷贝到新表中的记录。下面的例子只拷贝字段second_columnd的值等于’Copy Me!’
得到最后一个记录值 11、lag() over(partition by ... order by ...) lag函数可以在一次查询中取出同一字段的前n行的数据 12、lead() over(...CUBE,也是GROUP BY子句的一种扩展,可以返回每一个列组合的小计记录,同时在末尾加上总计记录。...那么将该条记录插入emp表中后,按照sal字段降序排列后,该条记录的序号为多少?...,如果匹配上了就做更新操作,否则就做插入操作。 ...而前面的MIN或者MAX则是在KEEP的结果集中取某一字段的最大值或最小值。
驱动程序) 3 在django的项目中会默认使用sqlite数据库,在settings里有如下设置: ?...在“插入和更新数据”小节中,我们有提到模型的save()方法,这个方法会更新一行里的所有列。 而某些情况下,我们只需要更新行里的某几列。...# first(): 返回第一条记录 # last(): 返回最后一条记录 # exists():...当你遍历queryset时,所有匹配的记录会从数据库获取,然后转换成Django的model。...,是Book模型中price字段的平均值 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。
= DateTimeField() Remarks = CharField(null=True) 一、新增 1、create Model.create 向数据库中插入一条记录,并返回一个新的实例...说明: 1、当 rows 传递的是字典列表时,fields 是不需要传的,如果传了,那么,rows 中的字段在字典中必须存在,否则报错。..., [1]) 三、修改 1、save 之前说过,save() 方法可以插入一条记录,一旦模型实例具有主键,任何后续调用 save() 都将导致 UPDATE 而不是另一个 INSERT。...、原子更新 看这样的一个需求,有一张表,记录博客的访问量,每次有人访问博客的时候,访问量+1。...解释一下,在 SQLite 中,如果希望 like 的时候区分大小写,可以这么写: Person.select().where(Person.Remarks % 'a*') 如果不希望区分大小写,这么写
SQLite where 子句:WHERE 子句用于指定从一个表或多个表中获取数据的条件。...SQLite update子句: UPDATE 查询用于修改表中已有的记录。可指定条件更新。...只更新满足条件的记录 update company set SALARY = SALARY + 1000 where ID = 6 -- 修改表中ADDRESS和SALARY的所有值,则不需要使用where...SQLite distinct关键字:与 SELECT 语句一起使用,来消除所有重复的记录,并只获取唯一一次记录。...只获取唯一一次记录,而不是获取重复记录 (1)语法: 在select的后面: SELECT DISTINCT column1, column2,.....columnN FROM table_name
注意事项: 注:在ID或者其他字段设置自增长的时候可以不用向id插入数值,因为id 列是自动更新的,表中的每条记录都有一个唯一的数字。...table without a WHERE that uses a KEY column 注意事项: 注:WHERE 子句规定哪条记录或者哪些记录需要更新,WHERE 子句规定哪条记录或者哪些记录需要更新...注意事项: 注:与update语句一样,WHERE 子句规定哪条记录或者哪些记录需要删除;如果您省略了WHERE子句,所有的记录都将被删除!...2.外连接就好像是为非基准表添加了一行全为空值的万能行,用来与基准表中找不到匹配的行进行匹配,两个没有空值的表进行左连接,左表是基准表,左表的所有行都出现在结果中,右表则可能因为无法与基准表匹配而出现是空值的字段...HAVING 语句 描述:HAVING 子句可以让我们筛选分组后的各组数据; 在 SQL 中增加 HAVING 子句原因是 WHERE 关键字无法与聚合函数一起使用。
在使用主键查询,或者额外的主键索引只匹配一条数据时会出现(select * from table where primary_key=1) eq_ref 此连接类型表示使用了索引合并优化...ref 当使用索引列等值查询时,与索引列进行等值匹配的对象信息,可能是const(常量匹配),字段名匹配,方法匹配等 rows 估算结果行数 表示MySQL根据表统计信息及索引选用情况,估算的找到所需的记录所需要读取的行数...= 1) No matching min/max row 当查询列表处有 MIN 或者 MAX 聚集函数,但是并没有符合 WHERE 子句中的搜索条件的记录时,将会提示该额外信息...当我们的查询列表以及搜索条件中只包含属于某个索引的列,也就是在可以使用索引覆盖的情况下,在Extra 列将会提示该额外信息。...,并且该语句的 WHERE 子句中有针对该表的搜索条件时,在Extra 列中会提示上述额外信息。
,去另一张表中匹配,利用匹配条件进行匹配,成功保留,失败舍去。...基本语法: {表1} [inner] join {表2} on {匹配条件}; 注意: 如果内连接没有条件,则与交叉连接返回结果一样。...外连接(Outer Join) 一张表作为主表(表中记录都会保留),根据条件去匹配另一张从表中的记录,从而得到目标数据。...c.id; 注意: 如果从表数据都不匹配,则返回结果该条记录从表字段值都为 null。...Using 关键字 是在连接查询中替代 on 关键字的。 使用前提是两张表连接的字段是同名的,并且最终在结果只保留一个字段。
领取专属 10元无门槛券
手把手带您无忧上云