SQL笔记(一)

登录:mysql -u user -p password -h server -P port

key word 保留字

show也可以用来显示列:SHOW COLUMNS FROM t;=DESCRIBE t;

HELP SHOW;

 

SELECT name

FROM pro;

(结果没有顺序)

 

SELECT DISTINCT vend_id

FROM pro;

只返回不重复的值,DISTINCT应用于所有列,所有列相同才算重复

 

SELECT a,b

FROM p

ORDER BY b DESC, c;

A和a值默认相同,即排序不区分大小写

 

(同时使用ORDER BY和WHERE,则ORDER BY必须在WHERE之后)

 

WHERE的操作符

= != <> BETWEEN

BETWEEN 5 AND 10

 

SELECT a,b

FROM p

WHERE a = 'fff';

会匹配到Fff,因为MySQL执行匹配时默认不区分大小写

 

WHERE a IS NULL;

NULL无论匹配过滤或不匹配过滤都不返回

 

WHERE (a = 1 OR b < 2) AND c > 3;

 

WHERE a IN (1002,1003);

a在集合中

 

通配符:用来匹配值的特殊字符

搜索模式:由字面值,通配符组成的搜索条件

 

谓词?

 

%任意字符出现任意次数

WHERE a LIKE 'jet%'

可匹配'JetPack 11'(若配置区分大小写则不匹配)

%a%

%可匹配0个字符,不能匹配NULL

下划线_匹配单个字符

 

WHERE a REGEXP '1000'

可匹配 1211000(包含,不是相等)

为区分大小写可用REGEXP BINARY

 

's1|s2 s3'匹配's1'和's2 s3'

'[123]ab',[]表示匹配其中一个字符

^为集合的否定

[^123]表示除123以外

-表示范围

[0-9]

.表示单个字符

\\表示转义,\\\匹配\(MySQL自己解释一个\,正则表达式解释另一个\)

\\(匹配(,括号不能直接用

字符类:例如[:alnum:] = [a-zA-Z0-9]

* 0或多个匹配

+ 1或多个匹配 ={1,}

? 0或1个匹配 ={0,1}

{n} n个匹配

{n,}

{n,m}

^匹配串的开始,$匹配串的结束

若REGEXP加上^开头$结尾,则与LIKE作用相同

SELECT 'hello' REGEXP '[0-9]'将返回0,这可以用来做正则表达式测试

 

SELECT Concat(RTrim(a), '(', b, ')')

FROM v

ORDER BY a;

Concat拼接串,RTrim删除串右侧的空格

这样查出来的数据没有名字,只是一个值

 

SELECT Concat(RTrim(a), '(', b, ')') AS c起别名

 

SELECT a,b*c AS d

FROM o;支持+-*/

 

SELECT可以用于测试,比如

SELECT 3*2;返回6

SELECT Trim('abc')

SELECT Now()返回时间

Upper()

Lower()

Soundex()比较串的发音..

一系列日期函数

AddTime()增加一个时间

CurTime()返回当前时间

Day()返回时间的天数部分

yyyy-mm-dd

WHERE Date(order_date) = '2005-08-01'

日期可以用BETWEEN

 

数值处理函数

Abs() Cos() Mod() Pi() Rand() Sqrt()

 

聚集函数:运行在行组上,计算和返回单个值的函数

对数据汇总,而不是返回数据本身。

AVG()平均值 COUNT()行数 MAX() MIN() SUM()

SELECT AVG(a) AS avg_a

FROM p;

除了COUNT(*) 都忽略NULL

COUNT(*)返回行数

MAX返回的是排序后的最后一个值,因此也可以用于串

SELECT SUM(a*b)对a*b求和

SELECT AVG(DISTINCT p) as a只考虑不同值

DISTINCT只能用于COUNT()不能用于COUNT(*)

只能用于列名,不能用于计算或表达式

 

select count(*) from 表名 会加重负担,改用select count(某列名) from 表名

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值