sql实现a-b_《SQL必知必会》读书笔记(1)

一、检索

多条SQL语句必须以分号;分隔

SQL语句不区分大小写

SQL语句可分成多行

*符号为通配符

检索单个列:

select 列名称 from 表名称

检索多个列

select 列1,列2,列3 from 表名称

检索所有列

select * from 表名称

检索不同值:列名称前加 distinct,distinct适用于其后的所有列。

select distinct 列名称 from 表名称;

检索部分行(不同数据库实现方案不同),以mysql为例:limit 5(检索行数) offset 5(从哪开始)表示从第5行起的5行数据。注意:第一个被检索的是第0行,所以limit 1 offset 1会检索第二行。另外mysql和sqlite支持简化版语句,limit 3 offset 4对应limit3,4

select 列名称 from 表名称

limit 5 offset 5;

注释:

1)

select 列名称 from 表名称 --这是注释

2)

#这是注释

select 列名称 from 表名称

3)代码形式的注释

/*代码*/

select 列名称 from 表名称

二、排序检索

使用order by子句,且需要作为select语句中最后一条子句。且order by用费检索的列排序数据也是合法的。

select 列名称 from 表名称

order by 列名称;

按多个列(有相同值)按需求排序

select 列1,列2,列3

from 表名称

order by 列2,列3;

按列位置排序:先按第二个列排,再按第三个列排(数量多容易搞混)

select 列1,列2,列3

from 表名称

order by 2,3;

指定排序顺序:降序关键字desc(descending缩写)desc只应用到直接位于其前面的列名,如果在多个列上进行降序排列,必须每一列指定desc关键字。升序关键字:asc(默认)

select 列1,列2,列3

from 表名称

order by 列2 desc,列3;

三、过滤数据

where子句:智能搜索条件,在from子句表名之后给出。下语句是只返回列2值为XXX的行。同事用order by和where子句时,where置前。

如果只与字符串类型的列进行比较,需要限定引号,比如where topid<>‘nmnc01’

select 列1,列2,列3

from 表名称

where 列2=XXX;

范围值检查:between,值用and分隔(闭区间)

select 列1,列2,列3

from 表名称

where 列2 between 2 and 9;

空值检查:null

select 列1

from 表名称

where 列1 is null;

四、高级数据过滤

组合where,用and或or关联。可以用多个and或or

select 列1,列2,列3

from 表名称

where 列2=XXX and 列3<=4;

select 列1,列2,列3

from 表名称

where 列2=XXX or 列3<=4;

组合and和or:圆括号有更高优先级,使用圆括号进行明确分组

select 列1,列2,列3

from 表名称

where (列2=XXX or 列3<=4)and 列4>='nmnc';

in语句:和or效果相同

select 列1,列2,列3

from 表名称

where 列2=XXX or 列3<=4;

等同于

select 列1,列2,列3

from 表名称

where 列2 in(XXX,列3<=4);

not操作符:否定其后所跟的任何条件。一般不单独用,和in等语句组合用

select 列1,列2,列3

from 表名称

where not 列2=XXX;

五、用通配符进行过滤:

like操作符

通配符%:'fish%'检索任意以fish起头的词,不管后面多少字符;'%fish%'检索匹配任何位置上包含文本fish的值。适用于搜索模式,且还能匹配0个字符,但需要注意后面所跟的空格。%无法匹配null的行。

select 列1,列2,列3

from 表名称

where 列2 like '%fish%';

select 列1,列2,列3

from 表名称

where 列2 like 'f%h';

通配符_:用途同%,但只匹配单个字符(因此可能会有遗漏)。

select 列1,列2,列3

from 表名称

where 列2 like '_ kg cow';

select 列1,列2,列3

from 表名称

where 列2 like '% kg cow';

通配符[]:用来指定一个字符集,必须匹配指定位置(只有access和SQL sever支持)

如,找出某列中以a或b开头的行。

select 列1

from 表名称

where 列1 like'[ab]%'

order by 列1;

否定集合:^作用同not,但可以简化语法

select 列1

from 表名称

where 列1 like'[^ab]%'

order by 列1;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值