sqlite3常用sql语言总结

2016-07-04  本文已影响185人  豪门百里

一、sqlite3接口部分

与mysql的show命令一样,sqlite3也有自己的接口命令。接口命令不需要在结尾输入分号。以下介绍几个重要的命令:

  1. 进入数据库。从交互式终端进入sqlite3时一定要指定一个数据库名。如果不指定,就会在当前文件夹下创建这个数据库。如果要删除数据库,显然就是将这个文件删除。
  2. 退出数据库:.exit
  3. 查看当前数据库的信息:.databases
  4. 查看所有的数据表:.tables。如果再在后面加一个表名,还可以用于查询这张表是否存在。
  5. 查看某张表的表结构:.schema tablename

二、sql语句部分

  1. 创建一个数据表。注意:
    • sqlite在创建字段时可以定义任何数据类型,就算是随便打一串字母也不会报错。sqlite会根据规则将sql语句中的数据类型转换为自身的5种类型之一。在sql语句中我们也不能对sqlite数据类型做任何限制。例如我们定义了一个int(1)字段,但当我们写入一个10位数时依然不会报错。唯一的作用在于,当我们通过create语句反向生成orm中的model时,以Django为例,int(1)就会为转为IntegerField(max_value=9),这样如果我们通过model插入一个2位数的数据,就不能过django.db.models的验证了
    • 5种亲和类型分别为INTEGER, REAL, NUMERIC, TEXT, NONE。其中整数和实数容易理解,一般用于适配整型和浮点型。文本显然是适配所有的字符串。NUMERIC就有些难理解了。因为整数和实数已经包含了所有的数值了,为什么还要加一个数值型呢?原来,NUMERIC不是一个真正的数据类型,它用于接收一个可能有多种形式的数据,然后再分发到INTEGER, REAL或TEXT中。例如datetime数据类型,我们可能向这个字段传入字符串,也可能传入1970年1月1日0点0分UTC以来的秒数。那么NUMERIC就会将前者分发给TEXT,后者分发给INTEGER。NONE用于适配不能识别的类型,它不会对插入内容进行任何处理
    • 对于自增字段,数据类型必须设为integer,不能设为int
    • 字段名加上单引号是为了高亮,不加也可以
    • 可以将所有需要用于计算的数值都设为numeric类型,sqlite3的定点数并不好使
    • comment加字段注释的方法并不适用于sqlite3,这也是sqlite3只适合开发不适合运维的原因之一
-- 创建旗舰表,表明各大厂商旗舰机的信息
create table flagship (
    'id' integer primary key autoincrement,
    'brand' varchar,
    'name' varchar,
    'price' numeric
);

2.删除数据表

drop table flagship;

3.插入一行数据,最好在表名后面加上(c1, c2),不然有多少个column就一定要填多少项,不填值的话可以写成null,否则不能通过!

-- 无论是用sql还是orm,每次都只能增加一行数据,不像删除可以一次多行
insert into meizhi values('27','Lili',null)

4.删除一行数据。这里要用到where,where是支持and和or的,如果依然搜索到多行,会一并删除!

-- 如果不写where,会将整张表的内容删除,但表还在
delete from meizhi where age = '27' and name = 'Lili'

5.查找数据,原理和删除数据差不多

-- select 列名称 from 表名称 where...
-- 注意,在整个sql语言中,只有表格内容是区分大小写的
select * from merzhi where age = '27'

6.更新数据。把妹纸的年龄从27岁改为28岁,意为长大了一岁嘛,哈哈!

updata meizhi set age = '28' where age = '27'

7.删除表格。有的时候看到别人建了一个测试表,但是建了之后不自觉删除,这个时候就要亲自操刀了!

-- 把TTT这张表删除
drop table TTT

8.增加一列。使用数据表的时候有时发觉需要增添一列,那总不能把表删了重建吧,于是可以这么做

-- 在meizhi这张表中增加一个school列,类型不大于255的字符串
alter table meizhi add school varchar(255)

9.最后一个,删除一列

-- 把刚才添加的那一列删掉,简单暴力
alter table meizhi drop school

后记:这些数据库语言都应该熟练,在java中配置好驱动之后也可以使用。当然在java中更流行使用orm,但掌握sql语言是掌握orm的基础。

上一篇下一篇

猜你喜欢

热点阅读