zoukankan      html  css  js  c++  java
  • mysql基础知识(2)

    十 一、计算字段

    计算字段通常需要使用 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;

  • 相关阅读:
    php.ini中设置session过期时间
    IP(Internet Protocal) 地址 说明
    html年月日下拉联动菜单 年月日三下拉框联动
    使用数组的键值,做为变量名的方法
    html中js只允许输入数字
    阿里云服务器问题攻略
    小帆远行
    Android图片转换类 1. Bitmap去色,转换为黑白的灰度图, 2. Bitmap图片加圆角效果
    EditText禁止输入回车
    Android之系统自带的文字外观设置
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/9069374.html
Copyright © 2011-2022 走看看