博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLite详解,案例,手册
阅读量:5053 次
发布时间:2019-06-12

本文共 6850 字,大约阅读时间需要 22 分钟。

SQLite 存储类型

1.NULL

2.INTEGER

3.REAL

4.TEXT

5.BLOB

创建表

CREATE TABLE COMPANY(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL);

删除数据表

DROP TABLE COMPANY;

插入数据表

1.方式一

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

2.方式二

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

查询数据表

1.查询全部

SELECT * FROM COMPANY;

2.查询部分

SELECT ID, NAME, SALARY FROM COMPANY;

SQLite 算术运算符

select 10 + 20;select 10 - 20;select 10 * 20;select 10 / 5;select 12 %  5;

SQLite 比较运算符

SELECT * FROM COMPANY WHERE SALARY > 50000;SELECT * FROM COMPANY WHERE SALARY = 20000;SELECT * FROM COMPANY WHERE SALARY != 20000;SELECT * FROM COMPANY WHERE SALARY <> 20000;SELECT * FROM COMPANY WHERE SALARY >= 65000;

SQLite 逻辑运算符

SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;SELECT * FROM COMPANY WHERE AGE IS NOT NULL;SELECT * FROM COMPANY WHERE NAME LIKE 'Ki%';SELECT * FROM COMPANY WHERE NAME GLOB 'Ki*';SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

数值表达式

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

更新数据

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

删除数据

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

LIKE查询

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

GLOB查询

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

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

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

Limit 子句

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

Order By

SELECT * FROM COMPANY ORDER BY SALARY ASC;SELECT * FROM COMPANY ORDER BY NAME, SALARY ASC;SELECT * FROM COMPANY ORDER BY NAME DESC;

Group By

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

Having

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

DISTINCT

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

SQLite 约束

1.NOT NULL

CREATE TABLE COMPANY(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL);

2.DEFAULT 约束

CREATE TABLE COMPANY(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL    DEFAULT 50000.00);

3.UNIQUE 约束

CREATE TABLE COMPANY(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL UNIQUE,   ADDRESS        CHAR(50),   SALARY         REAL    DEFAULT 50000.00);

4.PRIMARY KEY 约束

CREATE TABLE COMPANY(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL);

5.CHECK 约束

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

CREATE TABLE COMPANY3(   ID INT PRIMARY KEY     NOT NULL,   NAME           TEXT    NOT NULL,   AGE            INT     NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL    CHECK(SALARY > 0));

Joins

  • 交叉连接 - CROSS JOIN

  • 内连接 - INNER JOIN

  • 外连接 - OUTER JOIN

    准备表

CREATE TABLE DEPARTMENT(     ID INT PRIMARY KEY      NOT NULL,     DEPT           CHAR(50) NOT NULL,     EMP_ID         INT      NOT NULL  );  INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)  VALUES (1, 'IT Billing', 1 );  INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)  VALUES (2, 'Engineering', 2 );  INSERT INTO DEPARTMENT (ID, DEPT, EMP_ID)  VALUES (3, 'Finance', 7 );

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

NULL处理

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

别名

SELECT C.ID, C.NAME, C.AGE, D.DEPT        FROM COMPANY AS C, DEPARTMENT AS D        WHERE  C.ID = D.EMP_ID;SELECT C.ID AS COMPANY_ID, C.NAME AS COMPANY_NAME, C.AGE, D.DEPT        FROM COMPANY AS C, DEPARTMENT AS D        WHERE  C.ID = D.EMP_ID;

触发器

准备表

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

查询已存在的触发器

SELECT name FROM sqlite_masterWHERE type = 'trigger';SELECT name FROM sqlite_masterWHERE type = 'trigger' AND tbl_name = 'COMPANY';DROP TRIGGER audit_log; -- 删除触发器

ALTER修改表

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

视图

CREATE VIEW COMPANY_VIEW ASSELECT ID, NAME, AGEFROM  COMPANY; -- 创建视图SELECT * from COMPANY_VIEW; -- 查询视图DROP VIEW COMPANY_VIEW; -- 删除视图

事务

BEGIN;DELETE FROM COMPANY WHERE AGE = 25;ROLLBACK; -- 取消BEGIN;DELETE FROM COMPANY WHERE AGE = 25;COMMIT;  -- 确认

子查询

SELECT *      FROM COMPANY      WHERE ID IN (SELECT ID                   FROM COMPANY                   WHERE SALARY > 45000) ; -- 查询INSERT INTO COMPANY_BKP     SELECT * FROM COMPANY      WHERE ID IN (SELECT ID                   FROM COMPANY) ;  -- 插入 UPDATE COMPANY     SET SALARY = SALARY * 0.50     WHERE AGE IN (SELECT AGE FROM COMPANY_BKP                   WHERE AGE >= 27 ); -- 更新DELETE FROM COMPANY     WHERE AGE IN (SELECT AGE FROM COMPANY_BKP                   WHERE AGE > 27 ); -- 删除

自增

CREATE TABLE COMPANY(   ID INTEGER PRIMARY KEY   AUTOINCREMENT,   NAME           TEXT      NOT NULL,   AGE            INT       NOT NULL,   ADDRESS        CHAR(50),   SALARY         REAL);

方法论:整理的好辛苦

转载于:https://www.cnblogs.com/jiqing9006/p/6809076.html

你可能感兴趣的文章
Spring SpringMvc Hibernate整合
查看>>
Gradle 使用Maven本地缓存
查看>>
程序猿编程十大原则
查看>>
hdu1044
查看>>
MVC+EF之Attribute
查看>>
print_r 打印对象
查看>>
zTree——学习记录之一
查看>>
C++的IO操作
查看>>
v-cloakd的应用场景和使用方法
查看>>
BZOJ.3998.[TJOI2015]弦论(后缀自动机)
查看>>
localStorage登录页记住密码(艺博会)
查看>>
JSON.parse()与JSON.stringify()的区别
查看>>
json对象的获取
查看>>
php读取文件内容的三种方式(转)
查看>>
hadoop数据备份
查看>>
二分图匹配 学习笔记
查看>>
poj 2154:Color【polya计数,Euler函数】
查看>>
正则表达式
查看>>
SpringMVC框架学习笔记(2)——使用注解开发SpringMVC
查看>>
深入理解递归函数的调用过程
查看>>