zoukankan      html  css  js  c++  java
  • 《SQLite3 — 语法where、update、delete、like、glob》

    1.where子句

      where子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。WHERE 子句不仅可用在 SELECT 语句中,它也可用在 UPDATE、DELETE 语句中,等等。

    语法:

    SELECT column1, column2, columnN 
    FROM table_name
    WHERE [condition]

    实例:

    假设 COMPANY 表有以下记录:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          California  20000.0
    2           Allen       25          Texas       15000.0
    3           Teddy       23          Norway      20000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    7           James       24          Houston     10000.0
    

      下面的 SELECT 语句列出了 AGE 大于等于 25 工资大于等于 65000.00 的所有记录:

    sqlite> SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    

     

    2.Update语句

      SQLite 的 UPDATE 查询用于修改表中已有的记录。可以使用带有 WHERE 子句的 UPDATE 查询来更新选定行,否则所有的行都会被更新。

    语法:

    UPDATE table_name
    SET column1 = value1, column2 = value2...., columnN = valueN
    WHERE [condition];

    实例:

      下面是一个实例,它会更新 ID 为 6 的客户地址:

    sqlite> UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6;
    

      现在,COMPANY 表有以下记录:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          California  20000.0
    2           Allen       25          Texas       15000.0
    3           Teddy       23          Norway      20000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          Texas       45000.0
    7           James       24          Houston     10000.0
    

      如果想修改 COMPANY 表中 ADDRESS 和 SALARY 列的所有值,则不需要使用 WHERE 子句,UPDATE 查询如下:

    sqlite> UPDATE COMPANY SET ADDRESS = 'Texas', SALARY = 20000.00;
    

      现在,COMPANY 表有以下记录:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          Texas       20000.0
    2           Allen       25          Texas       20000.0
    3           Teddy       23          Texas       20000.0
    4           Mark        25          Texas       20000.0
    5           David       27          Texas       20000.0
    6           Kim         22          Texas       20000.0
    7           James       24          Texas       20000.0
    

      

    3.Delete语句

      DELETE查询用于删除表中已有的记录。可以使用带有 WHERE 子句的 DELETE 查询来删除选定行,否则所有的记录都会被删除。

    语句:

    DELETE FROM table_name
    WHERE [condition];

    实例:

    下面是一个实例,它会删除 ID 为 7 的客户:

    sqlite> DELETE FROM COMPANY WHERE ID = 7;
    

      现在,COMPANY 表有以下记录:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    1           Paul        32          California  20000.0
    2           Allen       25          Texas       15000.0
    3           Teddy       23          Norway      20000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    

      想要从 COMPANY 表中删除所有记录,则不需要使用 WHERE 子句,DELETE 查询如下:

    sqlite> DELETE FROM COMPANY;
    

      

     4.Like

      like运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,LIKE 运算符将返回真(true),也就是 1。百分号 (%)和下划线 (_)两个通配符与 LIKE 运算符一起使用。

      百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。这些符号可以被组合使用。

    语法:

    SELECT column_list 
    FROM table_name
    WHERE column LIKE 'XXXX%'
    
    or 
    
    SELECT column_list 
    FROM table_name
    WHERE column LIKE '%XXXX%'
    
    or
    
    SELECT column_list 
    FROM table_name
    WHERE column LIKE 'XXXX_'
    
    or
    
    SELECT column_list 
    FROM table_name
    WHERE column LIKE '_XXXX'
    
    or
    
    SELECT column_list 
    FROM table_name
    WHERE column LIKE '_XXXX_'

    实例:

      显示 COMPANY 表中 AGE 以 2 开头的所有记录:

    sqlite> SELECT * FROM COMPANY WHERE AGE  LIKE '2%';
    

      这将产生以下结果:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    2           Allen       25          Texas       15000.0
    3           Teddy       23          Norway      20000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    7           James       24          Houston     10000.0
    

      下面是一个实例,它显示 COMPANY 表中 ADDRESS 文本里包含一个连字符(-)的所有记录:

    sqlite> SELECT * FROM COMPANY WHERE ADDRESS  LIKE '%-%';
    

      产生以下结果:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    4           Mark        25          Rich-Mond   65000.0
    6           Kim         22          South-Hall  45000.0
    

      

    5.Glob

      GLOB运算符是用来匹配通配符指定模式的文本值。如果搜索表达式与模式表达式匹配,GLOB 运算符将返回真(true),也就是 1。与 LIKE 运算符不同的是,GLOB 是大小写敏感的,使用星号 (*)和问号 (?)的通配符,它遵循 UNIX 的语法。

    语法:

    SELECT FROM table_name
    WHERE column GLOB 'XXXX*'
    
    or 
    
    SELECT FROM table_name
    WHERE column GLOB '*XXXX*'
    
    or
    
    SELECT FROM table_name
    WHERE column GLOB 'XXXX?'
    
    or
    
    SELECT FROM table_name
    WHERE column GLOB '?XXXX'
    
    or
    
    SELECT FROM table_name
    WHERE column GLOB '?XXXX?'
    
    or
    
    SELECT FROM table_name
    WHERE column GLOB '????'

    实例:

      下面一些实例演示了 带有 '*' 和 '?' 运算符的 GLOB 子句不同的地方:

       

       下面是一个实例,它显示 COMPANY 表中 AGE 以 2 开头的所有记录:

    sqlite> SELECT * FROM COMPANY WHERE AGE  GLOB '2*';
    

      这将产生以下结果:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    2           Allen       25          Texas       15000.0
    3           Teddy       23          Norway      20000.0
    4           Mark        25          Rich-Mond   65000.0
    5           David       27          Texas       85000.0
    6           Kim         22          South-Hall  45000.0
    7           James       24          Houston     10000.0
    

      下面是一个实例,它显示 COMPANY 表中 ADDRESS 文本里包含一个连字符(-)的所有记录:

    sqlite> SELECT * FROM COMPANY WHERE ADDRESS  GLOB '*-*';
    

      这将产生以下结果:

    ID          NAME        AGE         ADDRESS     SALARY
    ----------  ----------  ----------  ----------  ----------
    4           Mark        25          Rich-Mond   65000.0
    6           Kim         22          South-Hall  45000.0
    

      

     

  • 相关阅读:
    「开始,DP专题」
    ZOJ3612 Median treap
    [HNOI2004]宠物收养所 treap
    SIRO Challenge 状态压缩 + DP 未解
    SPOJ3273 Order statistic set treap模板
    HNU2[I题]Omar Loves Candies 贪心
    HNU1[B题] DP,数位DP
    HNU1[F题] 栈模拟计算
    Node.js权威指南 (6)
    瘦下来之后你会遇见不一样的自己
  • 原文地址:https://www.cnblogs.com/zhuangquan/p/13229513.html
Copyright © 2011-2022 走看看