SQLite 存储类型

1.NULL

2.INTEGER

3.REAL

4.TEXT

5.BLOB

创建表

  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL
  7. );

删除数据表

  1. DROP TABLE COMPANY;

插入数据表

1.方式一

  1. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  2. VALUES (1, 'Paul', 32, 'California', 20000.00 );
  3. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  4. VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
  5. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  6. VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );
  7. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  8. VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
  9. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  10. VALUES (5, 'David', 27, 'Texas', 85000.00 );
  11. INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
  12. VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );

2.方式二

  1. INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

查询数据表

1.查询全部

  1. SELECT * FROM COMPANY;

2.查询部分

  1. SELECT ID, NAME, SALARY FROM COMPANY;

SQLite 算术运算符

  1. select 10 + 20;
  2. select 10 - 20;
  3. select 10 * 20;
  4. select 10 / 5;
  5. select 12 % 5;

SQLite 比较运算符

  1. SELECT * FROM COMPANY WHERE SALARY > 50000;
  2. SELECT * FROM COMPANY WHERE SALARY = 20000;
  3. SELECT * FROM COMPANY WHERE SALARY != 20000;
  4. SELECT * FROM COMPANY WHERE SALARY <> 20000;
  5. SELECT * FROM COMPANY WHERE SALARY >= 65000;

SQLite 逻辑运算符

  1. SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;
  2. SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;
  3. SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
  4. SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';
  5. SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';
  6. SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
  7. SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
  8. SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
  9. SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
  10. SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

数值表达式

  1. SELECT COUNT(*) AS "RECORDS" FROM COMPANY;

更新数据

  1. UPDATE COMPANY SET ADDRESS = 'Texas' WHERE ID = 6; -- 按条件修改
  2. UPDATE COMPANY SET ADDRESS = 'Texas', SALARY = 20000.00; -- 修改全部

删除数据

  1. DELETE FROM COMPANY WHERE ID = 7; -- 按条件删除
  2. DELETE FROM COMPANY; -- 删除全部

LIKE查询

  1. SELECT * FROM COMPANY WHERE AGE LIKE '2%'; -- 查询2开头的年龄数据
  2. SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%'; -- 查询文本里包含一个连字符(-)的所有记录
  3. SELECT * FROM COMPANY WHERE AGE LIKE '_5'; -- 查询第二位是5的年龄数据

GLOB查询

like: 百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。

glob: 星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。

  1. SELECT * FROM COMPANY WHERE AGE GLOB '2*';
  2. SELECT * FROM COMPANY WHERE ADDRESS GLOB '*-*';

Limit 子句

  1. SELECT * FROM COMPANY LIMIT 6; -- 获取6条记录
  2. SELECT * FROM COMPANY LIMIT 3 OFFSET 2; -- 获取第二行之后的三条记录

Order By

  1. SELECT * FROM COMPANY ORDER BY SALARY ASC;
  2. SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;
  3. SELECT * FROM COMPANY ORDER BY NAME DESC;

Group By

  1. SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME;
  2. SELECT NAME, SUM(SALARY) FROM COMPANY GROUP BY NAME ORDER BY NAME DESC;

Having

  1. SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2; -- group by之后进行筛选

DISTINCT

  1. SELECT DISTINCT name FROM COMPANY; -- 去除重复记录

SQLite 约束

1.NOT NULL

  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL
  7. );

2.DEFAULT 约束

  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL DEFAULT 50000.00
  7. );

3.UNIQUE 约束

  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL UNIQUE,
  5. ADDRESS CHAR(50),
  6. SALARY REAL DEFAULT 50000.00
  7. );

4.PRIMARY KEY 约束

  1. CREATE TABLE COMPANY(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL
  7. );

5.CHECK 约束

CHECK 约束启用输入一条记录要检查值的条件。如果条件值为 false,则记录违反了约束,且不能输入到表。

  1. CREATE TABLE COMPANY3(
  2. ID INT PRIMARY KEY NOT NULL,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL CHECK(SALARY > 0)
  7. );

Joins

  • 交叉连接 - CROSS JOIN

  • 内连接 - INNER JOIN

  • 外连接 - OUTER JOIN

    准备表

  1. CREATE TABLE DEPARTMENT(
  2. ID INT PRIMARY KEY NOT NULL,
  3. DEPT CHAR(50) NOT NULL,
  4. EMP_ID INT NOT NULL
  5. );
  6. INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
  7. VALUES (1, 'IT Billing', 1 );
  8. INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
  9. VALUES (2, 'Engineering', 2 );
  10. INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)
  11. VALUES (3, 'Finance', 7 );

  1. SELECT EMP_ID, NAME, DEPT FROM COMPANY CROSS JOIN DEPARTMENT; -- 交叉连接
  2. SELECT EMP_ID, NAME, DEPT FROM COMPANY INNER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID; -- 内连接
  3. SELECT EMP_ID, NAME, DEPT FROM COMPANY LEFT OUTER JOIN DEPARTMENT ON COMPANY.ID = DEPARTMENT.EMP_ID; -- 外连接

NULL处理

  1. UPDATE COMPANY SET ADDRESS = NULL, SALARY = NULL where ID IN(6,7);
  2. SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NOT NULL;
  3. SELECT ID, NAME, AGE, ADDRESS, SALARY FROM COMPANY WHERE SALARY IS NULL;

别名

  1. SELECT C.ID, C.NAME, C.AGE, D.DEPT
  2. FROM COMPANY AS C, DEPARTMENT AS D
  3. WHERE C.ID = D.EMP_ID;
  4. SELECT C.ID AS COMPANY_ID, C.NAME AS COMPANY_NAME, C.AGE, D.DEPT
  5. FROM COMPANY AS C, DEPARTMENT AS D
  6. WHERE C.ID = D.EMP_ID;

触发器

准备表

  1. CREATE TABLE AUDIT(
  2. EMP_ID INT NOT NULL,
  3. ENTRY_DATE TEXT NOT NULL
  4. );
  1. CREATE TRIGGER audit_log AFTER INSERT
  2. ON COMPANY
  3. BEGIN
  4. INSERT INTO AUDIT(EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));
  5. END; -- 创建触发器,每增加一条数据,就插入一条数据到AUDIT

查询已存在的触发器

  1. SELECT name FROM sqlite_master
  2. WHERE type = 'trigger';
  3. SELECT name FROM sqlite_master
  4. WHERE type = 'trigger' AND tbl_name = 'COMPANY';
  5. DROP TRIGGER audit_log; -- 删除触发器

ALTER修改表

  1. ALTER TABLE COMPANY RENAME TO OLD_COMPANY; -- 修改名字
  2. ALTER TABLE OLD_COMPANY ADD COLUMN SEX char(1); -- 增加字段

视图

  1. CREATE VIEW COMPANY_VIEW AS
  2. SELECT ID, NAME, AGE
  3. FROM COMPANY; -- 创建视图
  4. SELECT * from COMPANY_VIEW; -- 查询视图
  5. DROP VIEW COMPANY_VIEW; -- 删除视图

事务

  1. BEGIN;
  2. DELETE FROM COMPANY WHERE AGE = 25;
  3. ROLLBACK; -- 取消
  4. BEGIN;
  5. DELETE FROM COMPANY WHERE AGE = 25;
  6. COMMIT; -- 确认

子查询

  1. SELECT *
  2. FROM COMPANY
  3. WHERE ID IN (SELECT ID
  4. FROM COMPANY
  5. WHERE SALARY > 45000) ; -- 查询
  6. INSERT INTO COMPANY_BKP
  7. SELECT * FROM COMPANY
  8. WHERE ID IN (SELECT ID
  9. FROM COMPANY) ; -- 插入
  10. UPDATE COMPANY
  11. SET SALARY = SALARY * 0.50
  12. WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
  13. WHERE AGE >= 27 ); -- 更新
  14. DELETE FROM COMPANY
  15. WHERE AGE IN (SELECT AGE FROM COMPANY_BKP
  16. WHERE AGE > 27 ); -- 删除

自增

  1. CREATE TABLE COMPANY(
  2. ID INTEGER PRIMARY KEY AUTOINCREMENT,
  3. NAME TEXT NOT NULL,
  4. AGE INT NOT NULL,
  5. ADDRESS CHAR(50),
  6. SALARY REAL
  7. );

方法论:整理的好辛苦

SQLite详解,案例,手册的更多相关文章

  1. Spring Boot 集成 FreeMarker 详解案例(十五)

    一.Springboot 那些事 SpringBoot 很方便的集成 FreeMarker ,DAO 数据库操作层依旧用的是 Mybatis,本文将会一步一步到来如何集成 FreeMarker 以及配 ...

  2. SQLite详解

    一.新建SQLite操作类(继承SQLiteOpenHelper) public class SQLiteTest extends SQLiteOpenHelper { final static St ...

  3. Android SQlite详解

    在项目开发中,我们或多或少都会用到数据库.在Android中,我们一般使用SQLite,因为Android在android.database.sqlite包封装了很多SQLite操作的API.我自己写 ...

  4. MVP模式 详解 案例

    介绍 MVC: View:对应于布局文件 Model:业务逻辑和实体模型 Controllor:对应于Activity 实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,造 ...

  5. CentOS 6.6下JDK1.7安装与配置(Linux)经典入门详解案例

    最近用的linux较多,在网站找了一些关于linux环境下jdk安装的教程,过程是有的但是好多细节都没有表现出来,所以我花了点时间总结了一下,希望对大家都有帮助... CentOS下JDK1.7安装与 ...

  6. iOS SQLite详解

    这周比较忙,前几天都加班到11点左右,基本都是到家都是12点左右(稍稍的抱怨一下,免费加班,何为免费,就是任何补偿都没有,例如调休,加班薪,餐补等各项福利,是一点都没有呀)因为App要上线了!App上 ...

  7. IOS 数据存储之 SQLite详解

    在IOS开发中经常会需要存储数据,对于比较少量的数据可以采取文件的形式存储,比如使用plist文件.归档等,但是对于大量的数据,就需要使用数据库,在IOS开发中数据库存储可以直接通过SQL访问数据库, ...

  8. [转]ANDROID开发之SQLite详解

    SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...

  9. Go template高级用法、深入详解、手册、指南、剖析

    入门示例 以下为test.html文件的内容,里面使用了一个template语法{{.}}. <!DOCTYPE html> <html> <head> <m ...

随机推荐

  1. Android仿微信进度弹出框的实现方法

    MainActivity: package com.ruru.dialogproject; import android.app.Activity; import android.os.Bundle; ...

  2. jQuery的一些选择器

    一.基本选择器 1. id选择器(指定id元素) 将id="one"的元素背景色设置为黑色.(id选择器返单个元素) $(document).ready(function () { ...

  3. redis 扩展 windows

    下载地址:http://windows.php.net/downloads/pecl/releases/redis/

  4. 超轻便的 Cache_Lite 文件缓存

    Cache_Lite提供了快速,轻便和安全的缓存系统.它针对文件容器进行了优化,并且防止缓存损坏(因为它使用文件锁定和/或散列测试). 个人感觉还是挺方便的. Cache_Lite 官方参考地址. C ...

  5. NodeJS学习笔记 (14)URL查询字符串-querystring(ok)

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). **.stringify ...

  6. js利用点击事件做一个简单的计算器

    先放一个样式图: 源代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  7. 监控web服务(http,本地 / 远程监控nginx)

    监控 httpd 服务一: #!/bin/bash #描述: 秒级别监控 http 服务 while [ 1 -lt 2 ] do sleep 10 ai=`netstat -ntl | grep & ...

  8. unity C# StackOverflowException

    有时候图省事,属性这样写public int pageCount{get{return pageCount;}set{pageCount=value;}}可能会报栈溢出的错误, StackOverfl ...

  9. 【转】30分钟掌握 C#6

    [转]30分钟掌握 C#6 1. 只读自动属性(Read-only auto-properties) C# 6之前我们构建只读自动属性: public string FirstName { get; ...

  10. 绿色版SecureCRT启动崩溃,遇到一个致命的错误且必须关闭

    百度搜了半天,大家都是说删除注册表的VanDyke就能解决问题,但是我用的是绿色版的,删除VanDyke后还不行. 然后试了一下重新解压出一个绿色版的SecureCRT,发现能用. 但之前我配置了很多 ...