1.创建sql表
create table student(id integer primary key, name text, score integer);

2.插入一条记录
insert into student(score, id, name) values(100, 1, 'XiaoMing');
insert into student values(2, "XiaoZhang", 90);
//主键没有的给的话,会自动分配一个给你的记录,其他没有not null约束的字段你没有提供的话,默认是可以为空(null)的
insert into student(name) values("XiaoLiu");

3.简单的查询语句
select id, name from student;
select * from student;

4.修改一条记录(where子句很重要,没有where则修改所有记录)
update student set score=80, name="XiaoWu" where id=3;

5.删除一条记录
delete from student; //没有where子句删除所有记录
delete from student where id=3;

6.数据的批量导入
这不是SQL语句,是sqlite3工具的一条命令
.import 1.txt student

7.修改表的结构
alter table student add score2 integer;
可以使用命令.schema student查看student表结构。
alter table student rename to newstudent;修改表名
但是不支持修改某一个现有字段。(没有modify操作)

8.备份一张表的内容(备份表内容,但是表结构可能有差异)
备份student表的所有内容到新的表newstudent
create table newstudent as select * from student;
备份student表的头三列到新的表newstudent中
create table newstudent as select id, name, score from student;

9.删除表
drop table student;删除student表

10.复杂的查询语句
select * from student where score>80;查询成绩大于80分的同学
select * from student where score>87 and score<100;
select * from student where score between 87 and 100;
where score between 87 and 100;
等价于 where score>=87 and score<=100;

模糊查询
select * from student where score like "9%";
select * from student where name like "%g";
select * from student where score like "87";等价于select * from student where score=87;

排序输出
select * from student order by score desc; 降序
select * from student order by score asc;升序
order by默认是升序排列

找80分以上成绩最低的两位学员:
select * from student where score>=80 order by score asc limit 2;

找班上成绩第三名的同学:
select * from student order by score desc limit 1 offset 2;

找班上成绩最高的一位或几位同学:
select * from student where score=(select score from student order by score desc limit 1);

group by子句(having是group by的条件子句)
select dep, sum(salory) from employee where salory>4000 group by dep; //按部门列出每个月每个部门所发薪水总和
select name from employee group by name, salory, dep having count(*)>1;//求出出现重复录入的数据的人的姓名

连接两张表的内容:
sqlite> select * from student;
1|XiaoMing|21
2|XiaoZhang|22
3|XiaoWu|19
sqlite> select * from score;
1|100
2|96

1.where子句连接两张表
select a.id, a.name, a.age, b.score from student a, score b where a.id=b.id;
1|XiaoMing|21|100
2|XiaoZhang|22|96

2.自然连接(要求两张表中要有相同名字的字段,字段值相同的记录被连接到一起输出)
select id, name, age, score from student natural join score;
1|XiaoMing|21|100
2|XiaoZhang|22|96
如果两张表中没有相同名字的字段(student的id,score的id名字相同),连接不能成功,输出两张表的笛卡尔积
select id, name, age, nid, score from student natural join newscore;
1|XiaoMing|21|1|100
1|XiaoMing|21|2|96
2|XiaoZhang|22|1|100
2|XiaoZhang|22|2|96
3|XiaoWu|19|1|100
3|XiaoWu|19|2|96

左外连接(左边的表中,即使在右边表内没有连接成功的项也会输出。)
select a.id, name, age, score from student a left outer join score b on a.id=b.id;
1|XiaoMing|21|100
2|XiaoZhang|22|96
3|XiaoWu|19|     =>这一项因为左外连接而输出,注意和下面的比较

select a.id, name, age, score from score b left outer join student a on a.id=b.id;
1|XiaoMing|21|100
2|XiaoZhang|22|96

sqlite笔记(akaedu)的更多相关文章

  1. 编写SQL语句操作数据库(慕课SQLite笔记)

    安卓常用数据存储方式之一SQLite学习及操作笔记 0.视频地址:http://www.imooc.com/video/3382 1.每个程序都有自己的数据库 默认情况下是各自互不干扰 1)创建一个数 ...

  2. Android中使用sqlite笔记

    1.实现SQLiteHelper来在android中使用SQLite.代码如下,来自android官网. public class FeedReaderDbHelper extends SQLiteO ...

  3. SQLite笔记

    一.SQLite下载: http://www.sqlite.org/download.html (或在NuGet下载安装) 二.SQLite操作: 1.添加引用System.Data.SQLite,如 ...

  4. python之SQLite笔记

    sqlite3 打开文件并创建游标 conn = sqlite3.connect('adressbook.db')c = conn.cursor() 连接对象:sqlite3.connect('数据文 ...

  5. Ionic2学习笔记(8):Local Storage& SQLite

    作者:Grey 原文地址: http://www.cnblogs.com/greyzeng/p/5557947.html              Ionic2可以有两种方式来存储数据,Local S ...

  6. SQLite学习笔记(七)&&事务处理

    说到事务一定会提到ACID,所谓事务的原子性,一致性,隔离性和持久性.对于一个数据库而言,通常通过并发控制和故障恢复手段来保证事务在正常和异常情况下的ACID特性.sqlite也不例外,虽然简单,依然 ...

  7. Sqlite学习笔记(四)&&SQLite-WAL原理

    Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然. WAL是 ...

  8. Sqlite学习笔记(一)&&编译安装

    Sqlite简介 sqlite是一个开源的嵌入式文件数据库,sqlite以动态链接库的方式供应用程序调用,所有的数据库对象都存储在同一个文件中. sqlite动态库非常小,最新的3.8.11版本也只有 ...

  9. 安卓第四天笔记-Sqlite

    安卓第四天笔记-Sqlite 1.数据库的创建运行与更新 1.1.创建一个类继承SqliteOpenHelper 1.2.创建构造方法 /** * 数据库创建类 * @author 刘楠 * * 20 ...

随机推荐

  1. 神奇的container_of

    container_of是linux内核中常用的一个宏,这个宏的功能是,根据某个结构体字段的指针,找到对应的结构体指针. 话不多说,先上源码: /** * container_of - cast a ...

  2. C#控件一览表

    C#控件一览表 .窗体 .常用属性 ()Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. () WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三 ...

  3. SQL语法 之 操作语句

    一.插入语句 1.插入单行记录 INSERT INTO table_name|view_name[(column1_name [,column2_name, ... ])] VALUES( value ...

  4. onvif杂项

    onvif规范 中文介绍 什么是ONVIF ? ONVIF规范描述了网络视频的模型.接口.数据类型以及数据交互的模式.并复用了一些现有的标准,如WS系列标准等.ONVIF规范的目标是实现一个网络视频框 ...

  5. Vue中使用节流Lodash throttle

    在Vue中,有时需要对ajax请求提交进行节流操作.这时候,如果页面在请求成功之后会跳转,使用vue指令once或者加载一个loading遮罩禁止点击即可,但如果请求之后不跳转,并且loading不适 ...

  6. java面试题(开发框架)

    博客分类: java基础 面试Java多线程编程设计模式          java基础面试题目,以备不时之需 俗话说 细节决定成败.      就算很简单,很小的问题,我们还是要注意一下的.     ...

  7. 无法启动此程序因为计算机中丢失 xxx.dll

    “无法启动此程序因为计算机中丢失 XXX.dll” 这类问题在 visual studio 中很常见… 许久不和VS打交道,一碰各种坑… 这是在 VS 2015 Community 出现的问题: (1 ...

  8. git eclipse 不标记修改后的文件(没有图标标明)

    在使用Eclipse做开发的时候,已经修改了某个文件,但是文件的图标没有明显的标示,如图: 解决上面问题的办法如下:

  9. EMQ ---payload

    问:payload传输过程中会不会拆包,粘包?业务层拿到payload还需要自己组包吗? 答:不需要,mqtt协议有约定,emq会帮忙处理tcp的粘包拆包.总之,直接拿出来用即可. 问:payload ...

  10. 报错 System.ComponentModel.Win32Exception:拒绝访问,如何以管理员身份调试应用程序

    打开程序集的属性窗口,找到“安全性”设置,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框. 此时在解决方案资源管理器中,就可以找到 app.manifest 文件,勾选“启 ...