数据库——MySQL(三)(常用函数、聚合函数、内链接、外链接、子查询)

常用函数: (当取固定值时,使用数据库自带的虚表,可以不写表名称,取表记录时,正常写法既可)
●  把字符转化成ASCII值: select  ascii ('a');
●  把ASCII值转化成字符: select  char (97);
●  取字符串的长度: select  char_length ("中国");
●  取占位符: select  length ("中"); (utf8编码下,一个中文字占3个字符长度)
●  拼接字符串:          select  concat ('My', 'S', 'QL'); (字段个数没有限制)
●  大写转小写: select  lower ("ABC"); upper:小写转大写
●  字符串替换: select  replace (原字符,需要替换字符串,新字符串);
●  取指定方向指定长度的值: select  right ('adfnvadfa',1); left
●  取整数部分: select  floor (4.9);
●  四舍五入:    select  round (4.99999999,2);
注意:四舍五入第二个函数,如果为正整数,表示保留多少位小数。如果为0或者不写,表示不保留小数。如果为负整数,表示从小数点前的第几位进行四舍五入
●  查询当前日期时间: select  now();
●  查询当前日期:        select  curdate();
●  查询当前时间:       select  curtime();
注意:返回的是数据库安装那台电脑的系统时间。只返回年份year(now( )),月份与天数方法相同
------------------------------------------------------------------------------------------------------------------
聚合函数:count:统计记录数
●  语法: select  count(列名) from  表名称;
●  例子:select  count(*) from  user;
注意:如果指定了列名,那么列的个数有且只能有一个。如果不知道列名可以使 * 代替
------------------------------------------------------------------------------------------------------------------
聚合函数:sum:求和
●  语法: select  sum(列名) from  表名称;
●  例子:select  sum(age) from  user;
注意:只能作用在数值类型的列上,不能作用在字符串列上,作用在日期字段上无意义
------------------------------------------------------------------------------------------------------------------
聚合函数:avg:求平均
●  语法: select  avg(列名) from  表名称;
●  例子: select  avg(age) from  user;
注意:只能作用在数值类型的列上,不能作用在字符串列上,作用在日期字段上无意义。不会统计值为null的数,avg(ifnull(列名,0))把null的值换成0
------------------------------------------------------------------------------------------------------------------
聚合函数:max:求最大值。min:求最小值
●  语法: select  max(列名) from  表名称;
●  例子: select  max(age) from  user;
注意:字符串根据ASCII值
------------------------------------------------------------------------------------------------------------------
聚合函数:group  by:分组
●  语法: select  列名  from  表名  group  by  列名;
●  例子: select  age  from  user  group  by  age;
注意:使用了group by。那么在select后未使用聚合函数出现的列,必须出现在group by子句中,否则没意义
------------------------------------------------------------------------------------------------------------------
聚合函数:having:过滤
●  语法: select  列名  from  表名  group  by  列名  having  条件;
●  例子: select  age,count(*)  from  user  group  by  age  having  count(*)>5;
注意:having是对分组之后的结果进行过滤。having关键字必须和group by一起使用,不能单独使用
------------------------------------------------------------------------------------------------------------------
聚合函数:(综合使用)

注意:聚合函数都不会处理null的值
------------------------------------------------------------------------------------------------------------------
内链接:(取多个表中同时满足条件的记录(取公共部分))
一种写法:
●  语法: select  *  from  表名1,表名2...表名n;
●  例子: select  *  from  user  u,student  s  where  u.id = s.id;
另一种写法: inner  join、inner  outer  join 两种写法
●  语法: select  *  from  表名1  inner  join  表名2  on  条件...  inner  join  表名n  on  条件;
●  例子: select  *  from  user  u  inner  join  student  s  on  u.id = s.id ;
注意:如果使用的列名在多个表中存在,那么必须指明当前使用的是哪一个表中的列,给表取一个别名,取了别名就不能在使用表名
------------------------------------------------------------------------------------------------------------------
外链接: (取出指定方向外链接表的全部信息和指定条件中多表公共的信息)
左外链接: left  join、left  outer  join 两种写法
●  语法: select  *  from  表名1  left  join  表名2  on  条件...  left  join  表名n  on  条件;
●  例子: select  *  from  user  u  left  join  student  s  on  u.id = s.id ;
右外链接: right  join、left  outer  join 两种写法
●  语法: select  *  from  表名1  right  join  表名2  on  条件...  right  join  表名n  on  条件;
●  例子: select  *  from  user  u  right  join  student  s  on  u.id = s.id ;
注意:如果被关联的表按照条件未查询到关联的记录则把这个表的值用null代替。外链接必须指明关联关系
------------------------------------------------------------------------------------------------------------------
子查询:(当前一个select的条件或者显示的值,需来源于其他查询的结果,那么这种情况就可以使用子查询)
●  例子: select  *  from  user  where  id in(select  id  from  student  group  by  id  having  avg(ifnull(score,0))>80);
注意:每个查询出来的结果都相当于一个临时表。子查询返回的数据类型需和主查询列的数据类型一致。子查询返回列的数量必须和主查询列的数量一致。子查询可以使用在任意的地方(如果子查询放在列上,那么返回的值最多只能是一行记录。如果子查询在where条件上(可能返回多行记录),那么建议使用in关键字进行链接)

-----------------------------------------------------------------------------------------------------------------

自己整理,有些地方是扒拉的,如有侵犯,还望告知

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值