表连接主要有以下内连接、外连接、交叉连接。
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、表连接
分为内连接、左连接、右连接
网友评论