mysql必知必会(三)

原创 2015年07月10日 14:53:49

创建计算字段
有时会拼接字段,求数据的总数,起别名等。
使用concat()拼接字段:

SELECT CONCAT(name,'(',tel,')') FROM user ORDER BY id DEESC;

使用别名(AS)

SELECT CONCAT(name,'(',tel,')') AS info FROM user ORDER BY id DEESC;

算数操作符

1.加 +
2. 减 -
3. 乘 *
4. 除 /

select id,prod_price,quantity,prod_price*quantity as expanded_price from product ;

文本处理函数
使用TRIM()去除两边的空格,使用LTRIM()去除左边的空格,RTRIM()去除右边的空格。

SELECT CONCAT(name,'(',TRIM(tel),')')  AS info FROM user ORDER BY id DEESC;

left()返回左边指定长度的字符,right()返回右边指定长度的字符。

select name,left(name,2) from user;

length()返回一个串的长度。

select length(name) from user;

lower()将字符串小写,upper()将字符串大写。

select name,upper(name) from user;

日期和时间处理函数
一般时间的格式为:yyyy-MM-dd HH:mm:ss

curtime() 返回当前时间
curdate() 返回当前日期
now() 返回当前日期和时间

select curtime();
select curdate();
select now();

date() 返回日期时间的日期部分
time() 返回一个日期时间的时间部分

select date('2015-07-09 13:34:20');

datediff() 两个时间差

select datediff('2015-05-09','2015-07-09');

year() 返回一个日期的年数
month() 返回一个日期的月数
day() 返回一个日期的天数部分
hour() 返回一个时间的小时部分
minute() 返回一个时间的分钟部分
second() 返回一个时间的秒部分

select year('2015-07-09 13:34:20');

dayofweek() 返回一个日期对应的星期数
adddate() 添加一个日期
addtime() 添加一个时间

select adddate('2015-07-09 13:34:20',20);

常用的数值处理函数

  • abs() 返回一个数的绝对值
  • exp() 返回一个数指数值
  • rand() 返回一个随机数
  • sqrt() 返回一个数的平方根
    聚合函数
  • avg() 返回某列的平均值
  • count() 返回某列的行数
  • max() 返回某列的最大值
  • min() 返回某列的最小值
  • sum() 返回某列之和

注意:avg()、max()、 min()、sum() 忽略列值为null的行。
使用count(*)对表中行的进行统计,不管列中包含的是空值(null)还是非空值。
count(column)对特定列中具有值的行进行统计,忽略null值。
分组统计
分组是用group by实现的

select prod_id,count(*) as num_prod from product group by prod_id;

having 过滤分组,用在group by 之后。where 是过滤行,在group by 之前。

select prod_id,count(*) as num_prod from product where prod_price > 10 group by prod_id having count(*) >2;

查询语句的顺序

  1. select
  2. from
  3. where
  4. group by
  5. having
  6. order by
  7. limit
    子查询、联接查询、组合查询
    子查询一般使用in操作符。
SELECT cust_name FROM customers WHERE cust_id 
IN (SELECT cust_id FROM orders WHERE order_num 
IN(SELECT order_num FROM orderitems WHERE prod_id = "TNT2")
);

SELECT
cust_id,cust_name,
(SELECT COUNT(*) FROM orders WHERE orders.cust_id  = customers.cust_id) AS order_num
FROM
customers; 

等值联接

SELECT ts.id AS 'stuid',stu_name,tc.id  AS 'class_id',class_name
FROM t_student  AS ts,t_class AS tc
WHERE  ts.class_id = tc.id 

内联接(inner join on)

SELECT  ts.id AS ' stuid',stu_name,tc.id  AS 'class_id',class_name
FROM t_student AS ts
INNER JOIN t_class AS tc
ON ts.class_id = tc.id

外联接(left join on/right join on)

SELECT ts.id AS ' stuid',stu_name,tc.id AS 'class_id',class_name
FROM t_student AS ts
LEFT JOIN  t_class AS tc
ON ts.class_id  = tc.id

left join on左外联接将显示左表的所有记录。
right join on右外联接将会显示右表的所有记录。

组合查询(union)
• union必须由两条或两条以上的select语句组成,语句之间使用union分割
• union的每个查询必须包含相同的列,表达式或聚合函数
• 列的数据类型必须兼容:类型不必完全相同,但是必须是相互可以转换的
• union查询会自动去除重复的行,如果不需要此特性,可以使用union all
• 对union结果进行排序,order by语句必须在最后一条select语句之后

版权声明:本文供交流学习,能够帮助到你是我最大的荣幸!

相关文章推荐

MySQL必知必会.pdf

  • 2017年10月26日 11:32
  • 53.81MB
  • 下载

MySQL必知必会(文字版).pdf

  • 2017年11月12日 10:47
  • 5.74MB
  • 下载

《MySQL必知必会学习笔记》:事务处理

事务处理并不是所有的引擎都支持事务处理,常见的引擎有:InnoDB和MyISAM。InnoDB支持事务处理,而MyISAM不支持。这里我们可以回顾一下:MyISAM是支持全文本搜索的,而InnoDB是...

Mysql必知必会

  • 2017年10月25日 20:54
  • 83.72MB
  • 下载

mysql必知必会ppt教程

  • 2017年06月05日 13:55
  • 5.87MB
  • 下载

《MySQL必知必会学习笔记》:高级联结

创建高级联结上篇博文简单的介绍了下联结的使用,这篇博文就介绍下如何来创建高级联结。使用表别名在前面的学习中,我们知道如何给列取一个别名,现在回顾下,如下:select cust_name,upper(...

mysql必知必会

  • 2017年08月07日 10:19
  • 30.15MB
  • 下载

mysql必知必会

  • 2012年11月18日 16:09
  • 24.86MB
  • 下载

mysql必知必会(六)

这章介绍数据库的事务和索引。1.事务 在mysql中只有使用了InnoDB的数据库引擎的数据库或表才支持事务 事务处理可以用来维护数据库的完整性,保证成批的mysql操作要么完全执行,要么完全不执行 ...

Mysql必知必会

  • 2017年07月18日 16:29
  • 24.79MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql必知必会(三)
举报原因:
原因补充:

(最多只允许输入30个字)