不管是后台的开发还是Android前端使用本地数据库存储,使用到sql语句的地方挺多的,所以总结一下一些基础的sql语句。
简介
功能上无非也是增删改查,其中对于数据操作最多的还是用于查询。不同的查询语句,能得到不同的数据,也是对数据的应用。下边会以此介绍sql语句。
查询
首先创建一个叫做hero的表,其中有id、name、type、sex、age、shuchu、leader这些个字段。并填充了一些数据。
查询都是以select关键字开头,不区分大小写,但是对于列名,表名是有区分的。
1、全查: select * from hero
2、查部分列: select name,type from hero
多个列以逗号隔开
3、条件查询:使用where表示条件,在之后加过滤条件,包括所有逻辑运算符:>、<、=、>=、<=、!=
,其中字符串需要使用单引号引起来,数字加不加单引号都可以。所以最好条件的值都加单引号方便使用。
1 | select * from where age<30 |
4、多条件查询:包含与、或使用and和or表示
1 | select * from hero where sex='男' and age>'20' |
5、排序:使用order by关键字,默认升序。desc表示降序,asc表示升序。
1 | select * from hero where order by age |
6、区间查询与集合查询:between and、in
区间是闭区间,集合方式是in,表示或。
1 | 表示[18,50]的数据 |
7、模糊查询: 使用like关键字,表示模糊,在后边跟’%模糊的内容%’,前边是模糊查的字段。
其中%符号,相当于占位符,分为’模糊的内容%’和’%模糊的内容’,分别表示以模糊内容开头和结尾,如果不带%则相当于等于。
1 | select * from hero where name like '%李%' |
8、分页查询: 使用limit关键字,后边加两个int类型的数字,第一个表示从下表为几的数字开始,第二个表示当前分页中显示的数量,中间用逗号间隔。如果之后只加一个数字,表当前分页显示多少条数据。
1 | select * from hero limit 0,4 |
9、组合查询:order by要在条件的后边,limit与order一起时,limit放在最后。
1 | select * from hero where age<'30' and name like '%乔%' order by age |
10、别名命名: 使用as关键字,as前是要命名的字段或表,as后就是别名,as关键字可以省略。
1 | select name as 姓名 from hero |
11、常用聚合函数: max、min、avg(表示平均数)、sum、count(表示总数,可加一个字段或者*)
1 | select max(age) from hero |
12、子条件查询:将一个查询结果当作条件使用
1 | select * from hero where age=(select max(age) from hero) |
13、分组查询: 使用group by 关键字,按照某个字段的值进行分组,相同值一组,一般与聚合函数一起使用。
1 | select type,sum(age) from hero group by type |
14、分组条件查询:在分组后加条件,使用having关键字。
1 | select type,sum(age) as sage from hero group by type having sage>60 |
15、多表联合查询:多表查询时,表与表之间用逗号间隔,如果不对结果进行过滤,得到的结果就是两表数据的乘积,此种形式成为笛卡尔乘积。加条件就是表1.字段=表2.字段,其中=可以换成其他逻辑运算符
1 | select * from player,hero |
16、左连接查询: 关键字是left join。用法:left join 表名 on 条件。on(条件)必须加上。以左表为准,右表数据匹配,有匹配数据则获取,无匹配数据则过滤或用null填充;
1 | select * from player left join hero on player.shouxuan=hero.type |
17、右连接查询:关键字是right join。用法:right join 表名 on 条件。on(条件)必须加上。以右表为准,左表数据匹配,有匹配数据则获取,无匹配数据则过滤或用null填充;
1 | select * from player right join hero on player.shouxuan=hero.type |
18、内连接查询:关键字 inner join。用法:inner join 表名 on 条件。on(条件)必须加上。两表数据同时匹配,任意一边数据没有匹配则过滤。
1 | select * from player inner join hero on player.shouxuan=hero.type |
19、空值查询:
1 | 没有值 |
插入
关键字 insert into
用法: insert into 表名 (列名) values(对应值)
新增时,字段指定的位置,值也应该对应在那个位置。
1 | insert into player (id,name,age,birthday) value('006','林枫','19','1999-3-20') |
更新
关键字 update;
用法 update 表名 set (列名) values(对应值) where 条件;
一定要加条件,指定修改那一条数据;
1 | update player set name='西红柿' where id='007'; |
删除
关键字 delete;
用法 delete from 表名 where 条件
一定要加条件,不然就会把数据全删除
1 | delete from player where id='007'; |