sqlite3 表连接

表连接主要有以下内连接、外连接、交叉连接。

inner join(内连接) 只返回两个表中联结字段相等的行

left join(左外连接) 返回包括左表中的所有记录和右表中联结字段相等的记录  

right join(右外连接) 返回包括右表中的所有记录和左表中联结字段相等的记录  (sqlite其实是不支持的)

cross join (交叉连接) 把第一个表的每一行与第二个表的每一行进行匹配。如果两个输入表分别有 x 和 y 行,则结果表有 x*y 行。由于交叉连接(CROSS JOIN)有可能产生非常大的表,使用时必须谨慎,只在适当的时候使用它们。

有两个表 stu 和 stu2

sqlite> select * from stu;

1001|wangliu|BEIJING

1003|lisi1|BEIJING

1002|lisi2|BEIJING

1004|lisi4|BEIJING


sqlite> select * from stu2;

1002|lisi|shanghai


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

把以前写的基础知识也搬运到。

一、数据类型

二、系统命令

系统命令都是以 . 开头

.help

.exit // 退出

.quit // 退出

.schema // 查看表结构

三、数据库基本操作命令

1、创建和查看数据库

sqlite3 testDB.db (无论这个数据库文件在不在,都是用这个命令。没有的话会创建)

.databases


2、创建和删除表格

CREATE TABLE IF NOT EXITS stu (id int, name text);

drop table stu2;

####在命令行里打的时候一定要加分号,来表示语句结束!

.tables 来产看

3、插入和查看数据

insert or replace into stu   values (1001, 'zhangsan'); 

####数据库语句里的字符串应该是单引号,实测双引号也可以用!

在命令行里打的时候一定要加分号,来表示语句结束!!!!!!

insert or replace into stu (id, name) values (1001, 'zhangsan');

select name from stu;

select * from stu;

4、update更新数据

UPDATE stu SET name='wangliu' where id=1001;

这样全部就更新了。

5、delete删除数据

delete from stu; //没有条件,会全部删除掉

6、条件语句

where 字段 = 某个值

where 字段 != 某个值

where 字段 is 某个值

where 字段 is not 某个值

where 字段1 = 值1 and 字段2 > 值2

where 字段1 = 值1 or 字段2 < 值2

7、升序、降序

ASC 、DESC // 默认升序

select * from stu order by id desc;

select * from stu ORDER BY 字段1 DESC 字段2 ASC; //也可以多个字段升降序

8、limit 

LIMIT 1, 2 //跳过前面的1条取2条

select * from stu ORDER BY id DESC  LIMIT 1, 2; //取出id最大的2条

9、字段的约束

not null

unique

default // 指定默认值

primary key // 主键约束,唯一的id,默认累加,但也可以自己设置,只是不能重复

// 也可以设置多个字段为主键,即所谓的联合主键

10、ALTER TABLE

ALTER TABLE STU ADD COLUMN ADDR text; // 给数据库增加列

数据库不支持删除列,要删除列要经过以下操作。

create table stu3 as select id,  name , addr from stu;

alter table stu3 rename to stu;


四、数据库其他操作命令

1、外键约束

利用外键可以给两张表添加约束,一般情况是,表A的某个字段引用着表B的主键字段。

2、表连接

分为内连接、左连接、右连接

你可能感兴趣的:(sqlite3 表连接)