常用命令:
.sqlite3 --从dos命令模式进入sqlite命令行
.quit --退出sqlite命令行,回到dos命令
.databases  --查看有哪些数据库
.tables  --查看有哪些表
.schema 表名 --查看指定的表的DDL(表结构)
 
sqlite数据库中特殊的表    (系统自带表)sqlite_master
select name from sqlite_master where type='table'; 

字符串连接用 ||

--sqlite中查找所有表对应的select count(*) 语句:

select  'select count(*) from '||name||';' from sqlite_master where type='table';

 
创建/打开指定名称的数据库 .sqlite3 test.db (dos命令行输入,有则打开指定名称的数据库,没有则创建指定名称的数据)
 
导入数据: .read 数据文件(如 .read a.sql,数据库脚本文件放到数据库名.db相同路径下)

 
删除数据库表  drop table actor(表名字);
 
 
建表语句:
 
--基本建表1
CREATE TABLE employees (
    emp_no int(11) NOT NULL,
    birth_date date NOT NULL,
    first_name varchar(14) NOT NULL,
    last_name varchar(16) NOT NULL,
    gender char(1) NOT NULL,
    hire_date date NOT NULL,
    PRIMARY  KEY (emp_no)
)
 
--基本建表2
CREATE TABLE actor (
    actor_id smallint(5) NOT NULL,
    first_name  varchar(45) NOT NULL,
    last_name varchar(45) NOT NULL,
    last_update  timestamp NOT NULL DEFAULT (datetime('now','localtime')),
    PRIMARY  KEY (actor_id)
);
 
--建表同时建索引
CREATE TABLE salaries (
    emp_no int(11) NOT NULL,
    salary int(11) NOT NULL,
    from_date date NOT NULL,
    to_date date NOT NULL,
    PRIMARY  KEY (emp_no, from_date)
);
CREATE INDEX idx_emp_no ON salaries (emp_no);
 
--如果表已经存在就不创建
CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL);
 
注意,对于已经建好的表,sqlite中不能通过Alter table 来添加外健。

https://www.nowcoder.com/questionTerminal/aeaa116185f24f209ca4fa40e226de48

 
--花式建表
1.快速复制/备份一个表的数据
create table actor_backup20180106 as select * from actor;
注意:这种方式会把默认值、主键约束、NOT NULL等等这些给玩丢了。
2.已知表A,并且已经有数据,创建表B,并且表B的字段都(或部分)来源于表A,并导入表A对应的数据
解法1:
CREATE TABLE actor_name (
    first_name  varchar(45) NOT NULL,
    last_name varchar(45) NOT NULL
);
insert into actor_name  select first_name, last_name from actor;
解法2:
create table actor_name as select first_name,last_name from actor;
解法2更方便,但是会丢失Not Nul 主键等信息。
 
--插入数据
用inset into 表名 select插入子查询的结果集
inset into 表名 values (....),(.....),(......)
inset into 表名(字段1,字段2,字段3....)   values (....),(.....),(......)
 
--插入单条数据
INSERT INTO employees VALUES (1,datetime('1986-01-12 04:00'),'Luoke','Li','M',datetime('2010-01-12 04:00'));
--批量插入数据(多条Insert)
BEGIN TRANSACTION;
INSERT INTO actor  VALUES (1,'PENELOPE','GUINESS',datetime('2006-02-15 12:34:33'));
INSERT INTO actor  VALUES (2,'NICK','WAHLBERG',datetime('2006-02-15 12:34:33'));
COMMIT;
 
--用一条sql语句就批量插入多条数据-方法1
INSERT INTO actor(actor_id,first_name,last_name,last_update)
select 3,'Jones','Jim',datetime('2006-02-15 12:34:33')
UNION ALL
select 4,'DiLun','Bob',datetime('2006-02-15 12:34:33');
--用一条sql语句就批量插入多条数据-方法2
INSERT INTO actor values(5,'Luffy','MonkeyD',datetime('2006-02-15 12:34:33')),(6,'SuoLong','Luoluonua',datetime('2006-02-15 12:34:33'));
 
--用一条sql语句就批量插入多条数据并且不要插入已存在的数据(不能用replace)--方法1
INSERT INTO actor
select 5,'Luffy','MonkeyD',datetime('2006-02-15 12:34:33') where not exists(select * from actor where actor_id=5);
--用一条sql语句就批量插入多条数据并且不要插入已存在的数据(不能用replace)--方法2
在 SQLite 中,用 INSERT OR IGNORE 来插入记录,或忽略插入与表内UNIQUE字段都相同的记录
INSERT OR IGNORE INTO actor VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33');
 
用 INSERT OR REPLACE 来插入记录,或更新替代与表内UNIQUE字段都相同的记录
INSERT OR REPLACE INTO actor VALUES (3, 'ED', 'CHASE', '2006-02-15 12:34:33')
 
REPLACE   用法详解
 
 
创建索引:
CREATE UNIQUE INDEX uniq_idx_firstname on actor  (first_name); --创建唯一索引
CREATE INDEX idx_lastname on actor  (last_name); --创建普通索引
 
强制索引查询--SQLite中,使用 INDEXED BY 语句进行强制索引查询
SELECT * FROM salaries INDEXED BY idx_emp_no WHERE emp_no = 10005
 
 
创建视图:
create view actor_name_view as select first_name as fist_name_v, last_name as last_name_v from actor;
等价于
CREATE VIEW actor_name_view (fist_name_v, last_name_v) AS  SELECT first_name, last_name FROM actor
 
--日期时间
select datetime('now','localtime'); --获取系统当前时间

转义字符如:

--' 默认情况下, '是字符串的边界符, 如果在字符串中包含', 则必须使用两个', 第1个'就是转义符

select last_name||''''||first_name from employees;

(或SELECT last_name || "'" || first_name FROM employees;)

常用字符串函数:

length  replace   substr

replace函数的用法:replace('A','b','c') 用c替换字符串A中所有的b

例子:

select (length('10,A,B')-length(replace('10,A,B',",",""))/length(','));

函数:substr(string string,num start,num length)用法:
string为字符串;
start为起始位置;字符串的第一个字符的位置为1,不是从0开始计算
length为长度。

/*例如:获取某个字符串中最后2个字母
select substr('abcdefg',length('abcdefg')-1,2);*/

Sqlite常用命令及基本知识的更多相关文章

  1. linux 常用命令及零散知识

    磁盘管理常用命令 fdisk -l //展示磁盘使用情况 df -h      //展示目录挂载情况 du -sh   //查文件.文件夹的总大小 scp /home/a.txt /home/b.tx ...

  2. SQLite常用命令

    1.点命令 [退出SQLite提示符] .quit .exit [帮助] .help [显示设置] .show 2.语法 [结束符] : --一行语句的结束以分号(:)结尾 [CREATE TABLE ...

  3. sqlite 常用命令

    1)创建数据库文件: >sqlite3 /home/test.db 回车 就生成了一个test.db在/home路径下. 这样同时也SQLite3加载了这个test.db 2)用.help可以看 ...

  4. SQLite常用命令总结

    1) 创建数据库文件: >SQLite3 d:\test.db 回车 就生成了一个test.db在d盘. 这样同时也SQLite3挂上了这个test.db 2) 用.help可以看看有什么命令 ...

  5. Android SQLite3工具常用命令行总结

    Android SDK的tools目录下提供了一个sqlite3.exe工具,这是一个简单的sqlite数据库管理工具.开发者可以方便的使用其对sqlite数据库进行命令行的操作. 程序运行生成的*. ...

  6. 计算机硬件基本知识及Linux的常用命令

    ------------------1. 计算机硬件基本知识------------------ CPU - 寄存器 - L1/L2/L3 - 内存 - 硬盘 - 互联网下载/其他存储介质传输 寄存器 ...

  7. sqlite常用的命令-增删改查

    一.查看版本信息: #sqlite3 -version 二.sqlite3常用命令 1.当前目录下建立或打开test.db数据库文件,并进入sqlite命令终端,以sqlite>前缀标识: 2. ...

  8. Shell编程(二)——shell的基础知识及常用命令

    shell的基础知识 一.bash有以下特点: 1.记录命令历史 2.指令和文件名补全 3.别名 alias rm='rm -i' 4.通配符 * 0个或多个字符 ?​匹配一个字符 5 输入输出重定向 ...

  9. 五个知识体系之-Linux常用命令学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

随机推荐

  1. http各类型请求方法工具总结

    本文为博主原创,未经允许不得转载: 在项目中会用到各种类型的http请求,包含put,get,post,delete,formData等各种请求方式,在这里总结一下 用过比较好的请求工具,使用serv ...

  2. jdbc调用存储过程获取多个结果集

    jdbc调用存储过程获取多个结果集 2017年07月26日 21:20:22 Kenny-Liu 阅读数:1486 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.cs ...

  3. git 版本找回方法

    在 git reset --hard 之后,git 的版本会回退. 这个时候,需要使用 git reflog 去查看之前的操作 然后, 找到相对应的 hash 数值. git reset --hard ...

  4. OpenStack Neutron单网卡桥接模式访问外网

    环境配置: * Exsi一台 * Exsi创建的单网卡虚拟机一台 * Ubuntu 14LTS 64位操作系统 * OpenStack Liberty版本 * 使用Neutron网络而非Nova网络 ...

  5. [LeetCode] 12. Integer to Roman 整数转为罗马数字

    Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 ...

  6. Java之第一个Java程序

    编写第一个Java程序 打开文本编辑器,输入以下代码 public class Hello { public static void main(String[] args) { System.out. ...

  7. android基础---->SharedPreferences的使用

    SharedPreferences 还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的,存储的数据是一个字符串,读取出来的数据仍然是字符串.这样你应该就能明显地感觉到 ...

  8. 「模拟赛20191019」C 推式子+贪心+树状数组

    题目描述 给定一棵\(n\)个点的有根树,根节点编号为\(1\),点有点权. 定义\(d(v)\)表示\(v\)到\(1\)的路径上的边数. 定义\(f(v,u)\)在\(v<u\)且\(v\) ...

  9. c++11 standardized memory model 内存模型

    C++11 标准中引入了内存模型,其目的是为了解决多线程中可见性和顺序(order).这是c++11最重要的新特征,标准忽略了平台的差异,从语义层面规定了6种内存模型来实现跨平台代码的兼容性.多线程代 ...

  10. 在 SQL 中 快速 批量 插入数据的方法

    方法1:逐条执行,速度慢. INSERT INTO testimport (name, message) VALUES ('testname', 'jfksdfkdsfjksadljfkdsfjsdl ...