一、插入语句

1、查询的基本语句

插入单行数据:

INSERT INTO table_name [(column_names)] VALUES (column_values);

备注:自增长字段不指定值或者指定null值的时候会触发自增长。

根据查询结果插入多行数据:

INSERT INTO table_name SELECT * FROM table_name2;

把表格二的数据插入到表格一中

二、更新数据

UPDATE table_name SET column_name1=column_value1[,column_name1=column_value1] WHERE predicate;

三、删除数据

DELETE FROM table_name1 WHERE predicate;

四、查询语句

1、查询语句的关系操作

基本操作

  • Restriction(限制)
  • Projection(投影)
  • Cartesian Production(笛卡尔积)
  • Union(联合)
  • Difference(差)
  • Rename(重命名)

附加操作

  • Intersection(交叉)
  • Natural Join(自然连接)
  • Assign(赋值)

拓展操作

  • Generalized Projection(广义投影)
  • Left Outer Join(左外连接)
  • Right Outer Join(右外连接)
  • Full Outer Join(全外连接)

2、查询语句的基本结构

SELECT [distinct] hedaing /*distinct:表示重复结果*/
    FROM table_name
    WHERE predicate
    GROUP BY coulmn_name /*对数据进行分组,一般与聚合运算合用*/
    HAVING predicate /*对分组数据进行约束*/
    ORDER BY column_name [asc|desc] /*asc:升序排序,desc:降序排序*/
    LIMIT count,offset;/*count :最多显示多少数据,offset:跳过多少行*/

筛选语句的执行顺序:原表-条件-分组-分组约束-筛选列-排序-限制。 

3、条件子句

根据关系运算符来查询:<、>、=

逻辑运算符:AND、OR、NOT、IN

LIKE和GLOB操作符:
GLOB
LIKE 是 SQLite 中两种用于字符串模式匹配的不同操作符,它们有以下区别:

  1. 通配符
    • GLOB 使用通配符 *?,其中 * 匹配零个或多个字符,而 ? 匹配一个字符。
    • LIKE 使用 % 作为通配符,其中 % 匹配零个、一个或多个字符,而 _ 匹配一个字符。
  2. 区分大小写
    • GLOB 是区分大小写的,这意味着它将区分字符串的大小写。
    • LIKE 可以是区分大小写或不区分大小写,具体取决于数据库的配置。如果在 LIKE 表达式中使用 COLLATE NOCASE,则可以执行不区分大小写的匹配。
  3. 功能
    • GLOB 更接近正则表达式的功能,允许执行更复杂的模式匹配,但它的语法与 LIKE 不同。
    • LIKE 是更常见的模式匹配操作符,通常用于执行基本的字符串匹配操作。
  4. 性能
    • 通常情况下,LIKE 的性能较好,因为它使用简单的通配符,而不涉及复杂的正则表达式匹配。
    • GLOB 可能会比较慢,因为它执行更复杂的匹配,特别是在大型数据集上。

综上所述,选择使用 GLOB 还是 LIKE 取决于您的需求。如果您只需要执行基本的字符串匹配,通常建议使用 LIKE。如果需要执行更高级或复杂的模式匹配操作,可以考虑使用 GLOB,但请注意性能方面的潜在差异。

in操作符:输入一个值和一列值,若值在列中返回真,否则返回假。

4、分组和分组约束

SELECT type_id,count(*) FROM table_name GROUP BY type_id HAVING count(*) > 20;

从表格中筛选出type_id和对应的数量,并约束数量大于20的type_id和对应的数量。

5、别名

SELECT name,(SELECT count(id) from foods_episodes WHERE food_id = f.id) [AS] count FROM foods [AS] f ORDER BY count desc LIMIT 10;

f是foods表的别名,count是一个子查询结果的别名。AS是一个可选的关键字

6、子查询

用在where in 子句,为查询提供数据列。

SELECT * from table1 where table1.column1 in (SELECT id FROM table2);

查询表1中的数据,表一中的某一列值在表格2的id列中。

7、复合查询

复合查询是对多个查询结果的处理。包含关键字UNION、EXCEPT和INTERSECT。

  • UNION:将两个查询结果联合成一个只包含AB非重复字段的新结果。
  • INTERSECT:即在A结果也在B结果中的数据。
  • EXCEPT:在A中但是不在B中的数据

8、case语句

对条件进行匹配,输出相应的值。

CASE value
    WHEN x THEN value_x
    WHEN y THEN value_y
    WHEN z THEN value_z
    ELSE default_value
END

CASE
    WHEN condition1 THEN value1
    WHEN condition1 THEN value1
    WHEN condition1 THEN value1
    ELSE default_value
END
最后修改日期: 2023年10月16日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。