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必知必会》全书总结

知识点回顾
  • sinat_28978689
  • sinat_28978689
  • 2017年02月21日 21:08
  • 1801

mysql学习--mysql必知必会

数据库操作分类:
  • huang2009303513
  • huang2009303513
  • 2014年05月18日 09:12
  • 2765

mysql必知必会pdf

下载地址:网盘下载 内容简介 编辑 《MySQL必知必会》注重实用性,操作性很强,适用于广大软件开发和数据库管理人员学习参考。 作者简介 编辑...
  • cf406061841
  • cf406061841
  • 2017年06月03日 22:55
  • 831

《MySQL必知必会》学习笔记十五(触发器)------掌握部分

MySQL必知必会》学习笔记整理
  • sinat_28978689
  • sinat_28978689
  • 2017年02月20日 20:06
  • 244

《MySQL必知必会》中表的介绍及脚本文件

《MySQL必知必会》中表的介绍及脚本文件详见: customers表:存储所有顾客的信息; orderitems表:存储每个订单中的实际物品; orders表:存储顾客订单(不是订单细节); pr...
  • panda_AJ
  • panda_AJ
  • 2017年04月21日 10:38
  • 954

《mysql必知必会》笔记(一)

一:了解SQL 1:列是表中的字段,所有表都由一个或多个列组成的。行是表中的记录,表中的数据都按行存储。          2:表中每一行都应该有可以唯一标识自己的一列或一组列。主键(一列或一...
  • gqtcgq
  • gqtcgq
  • 2014年10月27日 09:18
  • 2478

mysql必知必会脚本

《mysql必知必会》脚本地址:http://www.forta.com/books/0672325675/    1.创建数据库表脚本 -----------------------------...
  • mediocre117
  • mediocre117
  • 2016年11月17日 06:51
  • 921

《MySQL必知必会》学习笔记十三(存储过程)------掌握部分

《MySQL必知必会》学习笔记整理
  • sinat_28978689
  • sinat_28978689
  • 2017年02月16日 18:36
  • 202

《SQL必知必会》(1-7)

《SQL必知必会》读书笔记 说明:本书SQL语句均使用PLSQL Developer客户端,在oracle数据库中实践。 1. 基本概念 表(table):某种特定类型数据的结构化清单。 模式...
  • Regina_niu
  • Regina_niu
  • 2016年12月21日 09:33
  • 527

使用Navicat导入《MySQL必知必会》书上用例数据库的方法

在 Navicat 中新建一个名为 mysqk_crash_course 的数据库 此数据库初始为空 接着将下载好的的 sql 文件导入完成:再导入另一个 sql 文件:完成:大功告成:书中用例...
  • HeatDeath
  • HeatDeath
  • 2017年04月14日 00:44
  • 864
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql必知必会(三)
举报原因:
原因补充:

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