SQLITE学习之SQLITE基础操作(二)

1、插入

在SQLITE中适应insert into语句向数据库的某一个表中添加新的数据行。
insert into语句有两种基本语法,语法结构如下:

INSERT INTO TABLE_NAME [(column1, column2, column3,...columnN)]  
VALUES (value1, value2, value3,...valueN);

在这里,column1, column2,…columnN 是要插入数据的表中的列的名称。
如果要为表中的所有列添加值,您也可以不需要在 SQLite 查询中指定列名称。但要确保值的顺序与列在表中的顺序一致。SQLite 的 INSERT INTO 语法如下:

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

向指定数据库给定表(假设已在数据库demo.db中成功创建了表company)插入新的数据行具体操作如下:
在这里插入图片描述
补充:使用一个表来填充另一个表

INSERT INTO first_table_name [(column1, column2, ... columnN)] 
   SELECT column1, column2, ...columnN 
   FROM second_table_name
   [WHERE condition];

假设使用表company填充表people,具体操作如下:
在这里插入图片描述
在这里插入图片描述

2、查询

SQLite 的 SELECT 语句用于从 SQLite 数据库表中获取数据,以结果表的形式返回数据。这些结果表也被称为结果集。
SQLITE的SELECT语句的基本语法如下:

select column1,column2,column3,column4,……columnN from table_name;

在这里,column1, column2…是表的字段,他们的值即是您要获取的。如果您想获取所有可用的字段,那么可以使用下面的语法:

select * from table_name;

获取表所有可用字段,在插入新行的操作中已有应用。下面只进行查询表部分可用字段的操作,具体操作如下所示:
在这里插入图片描述
Note:在输出查询表的结果前,往往需要设置输出格式,如设置是否需要显示表头设置,显示模式设置,是否显示CPU时间设置,设置输出列的宽度等等。

补充: 设置输出列的宽度

  • 有时,由于要显示的列的默认宽度不够导致 .mode column这种模式输出的情况下,输出被截断。此时,您可以使用 .width num, num… 命令设置显示列的宽度,如下所示:
    .width 命令设置第一列的宽度为 10,第二列的宽度为 20,第三列的宽度为 10。
    在这里插入图片描述

  • SQLite数据库中一个特殊的名叫 SQLITE_MASTER 上执行一个SELECT查询以获得所有表的索引。每一个 SQLite 数据库都有一个叫 SQLITE_MASTER 的表, 它定义数据库的模式。 SQLITE_MASTER 表看起来如下:

     CREATE TABLE sqlite_master ( 
     type TEXT, 
     name TEXT, 
     tbl_name TEXT, 
     rootpage INTEGER, 
     sql TEXT 
     ); 
    

对于表来说,type 字段永远是 ‘table’,name 字段永远是表的名字。所以,要获得数据库中所有表的列表, 使用下列SELECT语句:

	SELECT name FROM sqlite_master 
	WHERE type=’table’ 
	ORDER BY name; 

对于索引,type 等于 ‘index’, name 则是索引的名字,tbl_name 是该索引所属的表的名字。 不管是表还是索引,sql 字段是原先用 CREATE TABLE 或 CREATE INDEX 语句创建它们时的命令文本。对于自动创建的索引(用来实现 PRIMARY KEY 或 UNIQUE 约束),sql字段为NULL。

SQLITE_MASTER 表是只读的。不能对它使用 UPDATE、INSERT 或 DELETE。 它会被 CREATE TABLE、CREATE INDEX、DROP TABLE 和 DROP INDEX 命令自动更新。

临时表不会出现在 SQLITE_MASTER 表中。临时表及其索引和触发器存放在另外一个叫 SQLITE_TEMP_MASTER 的表中。SQLITE_TEMP_MASTER 跟 SQLITE_MASTER 差不多, 但它只是对于创建那些临时表的应用可见。如果要获得所有表的列表, 不管是永久的还是临时的,可以使用类似下面的命令:

	SELECT name FROM 
	(SELECT * FROM sqlite_master UNION ALL 
	SELECT * FROM sqlite_temp_master) 
	WHERE type=’table’ 
	ORDER BY name

============================================================================

  • Sqlite运算符是什么?Sqlite有哪些运算符?
    运算符是一个保留字或字符,主要用于 SQLite 语句的 WHERE 子句中执行操作,如比较和算术运算。
    算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模);
    如:

     sqlite> .mode line
     sqlite> select 10 + 20;
     10 + 20 = 30
     sqlite> select 10 - 20;
     10 - 20 = -10
    

比较运算符:==(等于)、!=(不等)、<>(检查两个操作数的值是否相等,如果不相等条件为真)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!<(检查左操作数的值是否不小于右操作数的值,如果是则为真)、!>(检查左操作数的值是否不大于右操作数的值如果是则为真);
如:

	sqlite>  SELECT * FROM COMPANY WHERE SALARY != 20000;
	ID          NAME        AGE         ADDRESS     SALARY
	----------  ----------  ----------  ----------  ----------
	2           Allen       25          Texas       15000.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

逻辑运算符
在这里插入图片描述如:

	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

位运算符:
在这里插入图片描述

	sqlite> .mode line
	sqlite> select 60 | 13;
	60 | 13 = 61
	sqlite> select 60 & 13;
	60 & 13 = 12
	sqlite>  select  (~60);
	(~60) = -61
	sqlite>  select  (60 << 2);
	(60 << 2) = 240
	sqlite>  select  (60 >> 2);
	(60 >> 2) = 15
  • 表达式:表达式是一个或多个值、运算符和计算值的SQL函数的组合。SQL 表达式与公式类似,都写在查询语言中。
    SELECT 语句的基本语法如下:

      SELECT column1, column2, columnN 
      FROM table_name 
      WHERE [CONDITION | EXPRESSION];//条件或者表达式
    

1)SQLite - 布尔表达式
SQLite 的布尔表达式在匹配单个值的基础上获取数据。语法如下:

SELECT column1, column2, columnN 
FROM table_name 
WHERE SINGLE VALUE MATCHING EXPRESSION;	
如:
sqlite> SELECT * FROM COMPANY WHERE SALARY = 10000;
ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
4           James        24          Houston   10000.0

2)SQLite-数值表达式
表达式用来执行查询中的任何数学运算。语法如下:

SELECT numerical_expression as  OPERATION_NAME
[FROM table_name WHERE CONDITION] ;

如:

sqlite> SELECT (15 + 6) AS ADDITION
ADDITION = 21

有几个内置的函数,比如 avg()、sum()、count(),等等,执行被称为对一个表或一个特定的表列的汇总数据计算。

sqlite> SELECT COUNT(*) AS "RECORDS" FROM COMPANY; 
RECORDS = 7

3)SQLite - 日期表达式
日期表达式返回当前系统日期和时间值,这些表达式将被用于各种数据操作。

sqlite>  SELECT CURRENT_TIMESTAMP;
CURRENT_TIMESTAMP = 2013-03-17 10:43:35
  • SQLite where 子句
    SQLite的 WHERE 子句用于指定从一个表或多个表中获取数据的条件。
    如果满足给定的条件,即为真(true)时,则从表中返回特定的值。您可以使用 WHERE 子句来过滤记录,只获取需要的记录。
    SQLite 的带有 WHERE 子句的 SELECT 语句的基本语法如下:

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

如:
SELECT 语句列出了 NAME 以 ‘Ki’ 开始的所有记录,‘Ki’ 之后的字符不做限制:

	sqlite> SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
	ID          NAME        AGE         ADDRESS     SALARY
	----------  ----------  ----------  ----------  ----------
	6           Kim         22          South-Hall  45000.0

WHERE 子句的 AND 运算符的基本语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];

WHERE 子句的 OR 运算符的基本语法如下:

SELECT column1, column2, columnN 
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]

3、更新

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

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

具体操作如下:
在这里插入图片描述

4、删除

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

DELETE FROM table_name
WHERE [condition];//可以使用 AND 或 OR 运算符来结合 N 个数量的条件。

具体操作如下所示:
在这里插入图片描述
如果需要删除表company所有记录,则只需要delete from company;即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值