十 一、计算字段

计算字段通常需要使用 AS 来取别名,否则输出的时候字段名为计算表达式

  select col1*col2 as col12 from mytable

concat() 用于连接两个字段,同时利用 trim() 可以去除首位空格

  select concat ( trim(col1) , ' (' , trim(col2) , ')' )

十二、函数

各个DBMS的函数都是不相同的,因此不可移植。

文本处理:

  left() right() 左边或者右边的字符

  lower() upper() 装换为小写或者大写字符

  ltrim() rtrim() 去除左边或者右边的空格

  length() 长度

  soundex() 转换为语音值  将一个字符串转换为描述其语音表示的字母数字模式

    select * from mytable where soundex(col1)=soundex('apple')

日期和时间处理:

  日期格式:YYYY-MM-DD

  时间格式:HH:MM:SS

  adddate() 增加一个时间(天、周)

  addtime() 增加一个时间(时、分)

  curdate() 返回当前日期

  curtime() 返回当前时间

  data() 返回日期时间的日期之差

  datediff() 计算两个日期之差

  data_add() 高度灵活的日期运算函数

  date_format()  返回一个格式化的日期或时间串

  day() 返回一个日期的天数部分

  dayofweek() |对于一个日期,返回对应的星期几

  hour() 返回一个时间的小时部分

  minute() 返回一个时间的分钟部分

  month() 返回一个日期的月份部分

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

  second() 返回一个时间的秒部分

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

  year() 返回一个日期的年份部分

    select now();

数值处理:

  sin() 正弦

  cos() 余弦

  tan() 正切

  abs() 绝对值

  sqrt() 平方根

  mod() 余数

  exp() 指数

  pi() π

  rand() 随机数

汇总函数:

  avg() 返回某列平均数

  count() 返回某列的行数

  max() 返回某列的最大值

  min() 返回某列的最小值

  sum() 返回某列列值之和

  注意:avg()会忽略Null行,使用distinct可以让汇总函数值汇总不同的值。

    select avg(distinct col1) as avg_col1 from mytable;

十三、分组

  分组就是把具有相同的数据值的行放在同一组中

  group by 按分组字段进行排序

    select col,count(*) as num from mytable group by col;

  order by 可以以汇总字段来进行排序

    select col,count(*) as num from mytable group by col order by num;

  where 过滤行,having过滤分组,行过滤应当先于分组过滤

    select col,count(*) as num from mytable where col>2 group by col having num>=2;

  注意:

  1、group by 子句出现在where 子句之后,order by子句之前

  2、除了汇总字段外,select语句中的每一字段都必须在group by 子句中给出

  3、null 的行会被单独分组

  4、大多数 sql 实现不支持 group by 列具有可变长度的数据类型

十四、子查询

  子查询中只能返回一个字段的数据。

  可以将子查询的结果作为 where 语句的过滤条件

    select * from mytable1 where col1 in ( select col2 from mytable2 )

  下面的语句可以检索出客户的订单数量,子查询语句会对第一个查询检索出的每个客户执行一次

    select * cust_name,

    ( select count(*) from Orders where Orderes.coust_id=Customers.cust_id ) as orders_num

    from Customers

    order by cust_name;

十五、连接

  连接用于连接多个表,使用 join 关键字,并且条件语句使用 on 而不是 where,连接可以替换子查询,并且比子查询的效率一般会更快。可以用 as 给列名、计算字段和表名取别名,给表名取别名是为了简化 sql 语句以及连接相同表。

  内连接:

  内连接又称等值连接,使用 inner join 关键字。

    select a,b,c

    from A inner join B

    on A.key=B,key

  可以不明确使用 inner join ,而使用普通查询并在 where 中将两个表中要连接的列用等值方法连接起来。

    select  a,b,c

    from A,B

    where A.key=B.key

  在没有条件语句的情况下返回笛卡尔积

  自连接:

  自连接可以看成内连接的一种,只是连接的表是自身而已。

  例如:一张员工表,包含员工姓名和员工所属部门,要找出与 Jim 处在同一部门的所有员工姓名。

    子查询表:

      select name from employee

      where department=(select department from employee where name ="Jim");

    自连接版本

      select e1.name

      from employee as e1,employee as e2

      where e1.department=e2.department

        and e2.name="Jim";

  连接一般比子查询的效率高。

  自然连接:

  自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。

  select * from employee natural join department;

  内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。

  外连接:

  外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。

  例如:检索所有顾客的订单信息,包括还没有订单信息的顾客。

    select Customers.cust_id , Orders.order_num

    from Customers left outer join Orders

    on Customers.cust_id =Orders.cust_id;

  例如:如果需要统计顾客的订单数,使用聚集函数。

    select Customers.cust_id,

      count(Orders.order_num) as num_ord

    from Customers left outer join Orders

    on Customers.cust_id=Orders.cust_id

    group by Customers.cust_id;

mysql基础知识(2)的更多相关文章

  1. mysql基础知识大全

    前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...

  2. mysql基础知识语法汇总整理(二)

    mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...

  3. mysql基础知识语法汇总整理(一)

    mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /* ...

  4. MySQL 基础知识梳理

    MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...

  5. MySQL基础知识:启动管理和账号管理

    整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. ...

  6. MySQL基础知识:创建MySQL数据库和表

    虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外 ...

  7. MySQL基础知识:Character Set和Collation

    A character set is a set of symbols and encodings. A collation is a set of rules for comparing chara ...

  8. mysql基础知识详解

    分享一些mysql数据库的基础知识. 1.每个客户端连接都会从服务器进程中分到一个属于它的线程.而该连接的相应查询都都会通过该线程处理.2.服务器会缓存线程.因此并不会为每个新连接创建或者销毁线程.3 ...

  9. Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型

    1.基础知识 1.1.数据库概述 简单地说:数据库(Database或DB)是存储.管理数据的容器: 严格地说:数据库是"按照某种数据结构对数据进行组织.存储和管理的容器". 总结 ...

  10. 一、MySQL基础知识

    一.背景介绍 我们每天都在访问各种网站.APP,如微信.QQ.抖音,今日头条等,这些东西上面都存在大量的信息,这些信息都需要有地方存储,存储在哪里呢?数据库. 所有我们需要开发一个网站.APP,数据库 ...

随机推荐

  1. mmm和mmma的区别

    m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...

  2. php mysqli 链接数据库 CURD 增改查删

    <?php function println($msg) { echo "<br>"; echo $msg; } $mysql_server_name = &qu ...

  3. 阿里ETL工具datax学习(一)

    阿里云开源离线同步工具DataX3.0介绍 一. DataX3.0概览 ​ DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL.Oracle等).HDFS.Hive.Ma ...

  4. js获取浏览器类型进行判断

    本文为webuploader.js中学习心得,感谢开源,从中加入了ie的edge判断 /** * @description 简单的浏览器检查结果. * * * `webkit` webkit版本号,如 ...

  5. STS启动失败:Failed to load the JNI shared library

    版本位不一致 jdk 版本 ↓ eclipse 版本(%STS_HOME%/STS.ini)

  6. 深入浅出javascript(五)函数

    全局函数 自定义函数 函数对象 函数的属性和方法 一.全局函数 全局函数不同于内置对象的方法(来源于网络),一共有7个,可以直接使用. escape( ).eval( ).isFinite( ).is ...

  7. CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记

    没想到安装过程这么曲折,gem安装时下载经常是不成功的,无耐只好把.gem文件下载回来再本地安装,加上radmine 1.2.1对各组件的版本了也比较挑剔,中间走了不少弯路,折腾了二天时间,终于摸清路 ...

  8. 准备用有人云平台和tlink.io云平台和电脑做云转发

    初步想的是用有人做国网电表转发,用tlink.io做综合采集模块转发,耗时一天 然后用tlink.io的做二次前端开发,耗时两天 用有人做二次前端开发,耗时两天 最后可以试试用常见的OPC公网转发到这 ...

  9. Hdu1695 GCD 2017-06-27 22:19 30人阅读 评论(0) 收藏

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  10. Vue的配置

    一.build:打包的配置文件的文件夹 1.build.js  生产版本的配置文件,一般这个文件我们是不改的 'use strict' //调用检查版本的文件,check-versions的导出直接是 ...