本篇文章仅供本人学习总结使用
数据库基本知识:(待补充)
-
大小写敏感
-
不支持修改已经存在的列的属性(包括删除列),如果需要修改可以使用重新创建表的方式来完成。
-
不支持if,可用CASE代替。
-
数据类型,sqlite会根据类型亲缘性匹配其他数据库的其他类型。
- NULL
- INTEGER –整型
- TEXT –文本
- REAL –浮点数
- BLOB –大二进制对象
-
比较表达式:
“=”, “==”, “<”, “<=”, “>”, “>=”, “!=”, “<>”, “IN”, “NOT IN”, “BETWEEN”, “IS” and “IS NOT”。 -
sqlite原生函数(待补充)
-
sqlite优化库操作或查询非表数据 PRAGMA command(待补充)
-
与MySql不同点(待补充):
表user_tab
|用户id|用户名| 用户年龄||用户标识|
uid | uname | uage | uflag |
---|---|---|---|
1 | Lihua | 18 | 1 |
2 | Xiaoming | 23 | 0 |
DDL:
CREATE
创建表:
CREATE TABLE IF NOT EXISTS user_tab
(uid INTEGER AUTOINCREMENT UNIQUE NOT NULL ,
uname TEXT,
uage INTEGER,
uflag INTEGER,
PRIMARY KEY(uid),
FOREIGN KEY(uname) REFERENCES user_tab(uid));
);
创建一个表结构与table2一模一样的表,复制结构同时也复制数据;
create table tab1(col_a,col_b) as select col1,col2 from tab2;
CREATE table user_tab1 AS select * from user_tab2;//若只复制结构则加where 1 = 2
待补充
DROP
删除表:
DROP TABLE IF EXISTS user_tab;
ALTER
修改表:
ALTER TABLE user_tab ADD COLUMN ucity text;
ALTER TABLE user_tab RENAME TO admin_tab;
DML:
INSERT:
INSERT INTO user_tab(col1,col2.col3) VALUES(var1,var2,var3);
insert or replace into tab1(col1,col2) select col1,col2 from tab2;
UPDATE:
UPDATE user_tab SET col1 = var1;
UPDATE user_tab SET col1 = (SELECT other_tab_col1 FROM other_tab where user_tab.uid = other_tab.id);
UPDATE user_tab SET col1 = (SELECT replace(col1,"1234","1289") FROM user_tab);--更改字符串
UPDATE user_tab SET col1 = replace(col1,"1234","1289");--更改字符串
UPDATE user_tab SET col1 =
CASE WHEN col2 = 1 THEN "u8"||"字节"
WHEN col2 = 2 THEN "u16"||"字节"
WHEN col2 = 4 THEN "u32"||"字节"
ELSE NULL END;
SELECT:
SELECT * FROM user_tab;
SELECT DISTINCT uname FROM user_tab;
CASE条件语句
SELECT CASE WHEN uid = 1 THEN "LiSi"
WHEN uid = 3 THEN "WangWu"
ELSE NULL
END AS u_name
LIKE模糊查询语句
SELECT * FROM user_tab WHERE col LIKE like语句
(1)%:表示任意0个或多个字符
(2)_ :表示任意单个字符,匹配单个任意字符,常用来限制表达式的字符长度语句。
(3)[ ]:表示括号内所列字符中的一个(类似正则表达式)
select * from user_tab where uname like ‘[张李王]三’;
表示搜索的是“张三”,“李三”或“王三”
(4):[^]表示不在括号所列之类的单个字符。
(5):查询内容包含通配符时,用“[ ]”括起来。
LIMIT分页语句
select * from account limit 5 offset 3; --从第3个起查询5个数据同下
select * from account limit 3,5;
嵌套语句
select * from user_tab where uage < (select avg(uage) from user_tab);