给自己看的,所以以举例子为主了

检索数据

  SELECT  检索单列    SELECT name FROM student

         检索多列    SELECT no, name FROM student

         检索所有列   SELECT * FROM student

         检索不同行   SELECT DISTINCT name, sex FROM student    distinct修饰的select下的所有列,也就是说两条数据,name和sex中只要有一列不同,就算不同行了。

         限制结果    SELECT no FROM student LIMIT 5        如果搜出来的行不足限制数,那么全输出

         全限定表名   SELECT student.no FROM student

排序数据

  ORDER BY   按单列排序  SELECT name FROM student ORDER BY no      未被检索的列(no字段)也是可以以其排序的

           按多列排序  SELECT * FROM student ORDER BY birthday, sex   只有结果集中存在birthday相同的数据时,这些数据才会再按照sex排序

           排序方向   SELECT * FROM student ORDER BY birthday DESC   从大到小排序,常见的情形是价格最贵的,日期最新的。

过滤数据

  WHERE   单条件    SELECT name FROM student WHERE no=10

          不匹配    SELECT name FROM student WHERE no!=10

          范围     SELECT name FROM student WHERE no BETWEEN 1 AND 3  头尾都包含,即1、2、3

          空值     SELECT name FROM student WHERE sex IS NULL

数据过滤

  AND    多条件      SELECT name FROM student WHERE name='Deolin' AND sex=1

  OR      多条件      SELECT name FROM student WHERE name='Deolin' OR name='Bld'  一般AND和OR共存的情况,直接有小括号保证计算次序,而不是通过记忆去依赖优先级

  IN     范围       SELECT name FROM student WHERE name IN ('Deolin', 'Bld')     in和or, 优先选用in,因为速度更快,易管理,更直观

  NOT      否定单个条件     SELECT name FROM student WHERE NOT name IN ('Deolin1', 'Bld1')

通配符      为了效率,不过度使用;尽量不把通配符放在开始处

   LIKE %  通配符匹配  SELECT name FROM student WHERE name LIKE 'D%n'    任何字符任何次数, name是'Dn' 'Deolin'…的数据都在范围内;LIKE '%'匹配不到null

   LIKE _   通配符匹配  SELECT name FROM student WHERE name LIKE 'Deol_n'   任何字符一次,只能1次,不能多也不能少

正则表达式

  REGEXP

    OR匹配   REGEXP '1000|2000'   匹配1000或2000

    字符匹配    REGEXP '[ab12]ton'  匹配aton或bton或1ton或2ton

    范围匹配  REGEXP '[0-9]'     相当于[0123456789]

          REGEXP '[3-6]'     相当于[3456]

          REGEXP '[b-d]'     相当于[bcd]

    转义匹配  REGEXP '\\%'     匹配字符 %

    元字符匹配 REGEXP '\\f'       换页    \\f换页   \\n换行   \\r回车   \\t制表   \\v纵向制表

    字符类匹配 REGEXP '[:alnum:]'  相当于[a-zA-Z0-9],而且三者都得有

          REGEXP '[:alpha:]'   相当于[a-zA-Z],而且两者都得有

          REGEXP '[:digit:]'    相当于[0-9]

    多匹配   {n}          指定匹配次数

          {n,}          指定匹配次数不小于n

          {n,M}         指定匹配次数为n至M

          *             0次或多次匹配

          +           相当于{1,}

          ?            相当于{0,1}

    定位匹配  ^ $          文本开始至文本结束    举例:REGEXP '1000|2000' 会匹配到 h1000或sd2000之类的,但是REGEXP ^'1000|2000'$只会匹配到1000和2000两个

    否定匹配  [^ ]          ^出现在集合(指中括号)中时,用于否定集合里的表达式

计算字段

    CONCAT()  字段拼接      SELECT CONCAT('The name is '+name+'.') FROM student  

    RTRIM()   去除右边空格    SELECT RTRIM(name) FROM student      LTRIM()左边空格,TRIM()两边空格

    AS      别名        SELECT (RTRIM(name)+sex)  AS name FROM student  结合函数和列与列之间的算数运算使用

函数

    文本处理

      LEFT() / RIGHT()      文本的左/右边字符

      LENGTH()           文本长度

      LOWER() / UPPER()     转换为小/大写

    日期      日期比较时,尽量用DATE()包裹字段;目标值的链接符号虽然/和-都可以,但尽量和字段一致,使用-

      DATE() / TIME()          取出字段的年月日/时分秒

      YEAR() / MONTH() / DAY()      取出字段的年/月/日

      HOUR() / MINUTE() / SECOND()  取出字段的时/分/秒

      NOW()               现在的日期和时间

      DAYOFWEEK()           周几

汇总数据

    聚集函数        如果是select count(no) as cnt, name from student,那么虽然cnt的值是一致的,但是还是会被复制到每个行中,因为结果集被name字段“撑开”了

      AVG()    聚集结果集中某列的平均值,参数是非数字也可行,但是会返回奇怪的结果,avg()忽略null值

      COUNT()    用的太多了,“聚集”的作用都可以参考count    count()参数是列名时,会忽略列中的null值,null值不计入总数

      MAX()    聚集结果集中某列的最大值

      MIN()     聚集结果集中某列的最小值      min()会忽略null值

      SUM()    聚集结果集中某列的和,参数是非数字也可行,但是会返回奇怪的结果

分组数据

    GROUP BY    创建分组

    HAVING      过滤分组

子查询

    IN (SELECT…)      子查询作为检索条件的值(的集合)

    SELECT (SELECT…)    子查询作为检索项目的计算值      注意这里要全限定表名

理解分组

  创建分组(GROUP BY)

  简单说就是把结果集按列隐式地分组成了很多个结果集,分组是个结果集;

  既然分组是个“结果集”,那么select中的聚集函数会对每个分组分别计算,

  可以认为,分组的目的就是为了使用聚集函数

  group by可以跟任意数量的列名,代表结合多个列进行分组;

  group by后面不能跟聚集函数;

  列中的null值是一个特殊值,区别与其他的非null值;

  过滤分组(HAVING)

  跟where非常相似,where的语法having几乎全适用;

  where过滤的是整个结果集中不符合条件的每个数据,

  having过滤的是整个结果集中符合条件的每个分组

MySQL备忘点(上)的更多相关文章

  1. MySQL备忘

    Access denied for user 'root'@'localhost' >> 执行以下语句 GRANT ALL ON dbname.* TO 'root'@'localhost ...

  2. mysql -- 备忘

    select distinct(authorid),author from forum_post where tid=1;

  3. MySQL备忘点(下)

    联结表 创建联结 FROM 表1,表2 与内连接作用相同类似:如果失去WHERE子句,会出现笛卡尔积现象 内联结 INNER JOIN 高级联结 自联结 例子:SELECT 字段b FROM 表 WH ...

  4. centos 6.4 mysql rpm 离线安装【备忘】

    离线状态下使用rpm的安装包进行mysql的安装,仅作备忘 准备工作: 官网下载mysql离线rpm安装包(这里就不演示了,拿现成的做演示) =================更新线 2018-01- ...

  5. Mysql又一次整理笔记--woods备忘

    ==============================SQL备忘 CRUD 查询 多表 事件等=============================== ------------------ ...

  6. Mysql CPU使用率长期100%的解决思路备忘

    最近一台服务器的CPU使用率长期保持在100%的状态,查看进程发现是Mysql服务导致的.于是搜索各方资料,终于成功解决问题.备忘以及分享一下,希望可以帮助各位新手朋友. (服务器运行环境是Windo ...

  7. Nmap备忘单:从探索到漏洞利用(Part 4)

    这是我们的Nmap备忘单的第四部分(Part 1. Part 2. Part 3).本文中我们将讨论更多东西关于扫描防火墙,IDS / IPS 逃逸,Web服务器渗透测试等.在此之前,我们应该了解一下 ...

  8. ExtJs4常用配置方法备忘

    viewport布局常用属性 new Ext.Viewport({ layout: "border", renderTo: Ext.getBody(), defaults: { b ...

  9. MFC通过txt查找文件并进行复制-备忘

    MFC基于对话框的Demo txt中每行一个23位的卡号. 文件夹中包含以卡号命名的图像文件.(fpt或者bmp文件) 要求遍历文件夹,找到txt中卡号所对应的图像文件,并复制出来. VC6.0写的. ...

随机推荐

  1. springboot启动流程(一)构造SpringApplication实例对象

    所有文章 https://www.cnblogs.com/lay2017/p/11478237.html 启动入口 本文是springboot启动流程的第一篇,涉及的内容是SpringApplicat ...

  2. MUI顶部导航布局

    一.头部 核心css mui-bar mui-bar-nav <header class="mui-bar mui-bar-nav"> <a class=&quo ...

  3. 【Hibernate】入门

    一.Hibernate框架的概述 1.1 什么是Hibernate 1.2 Hibernate优点 二.Hibernate的日志记录 三.Hibernate 入门程序 3.1 引入依赖(5.x版本) ...

  4. Oracle 多租户环境学习路线图

    Category Topic Documentation Concepts Overview of CDBs and PDBs "Overview of the Multitenant Ar ...

  5. PHP获取当前页面地址

    #测试网址:     http://localhost/blog/testurl.php?id=5   //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."< ...

  6. C 预编译 宏 声明

  7. ORACLE归档日志满了之后,如何删除归档日志

    当ORACLE归档日志满后如何正确删除归档日志 版权声明:本文为博主原创文章,未经博主允许不得转载. 当ORACLE 归档日志满了后,将无法正常登入ORACLE,需要删除一部分归档日志才能正常登入OR ...

  8. centos7误删yum源的解决办法 ( -bash: yum: command not found)

    这里以安装阿里的yum源为例: 1.查看自己的centos版本 cat /etc/redhat-release 2.进入阿里云源站地址:http://mirrors.aliyun.com/centos ...

  9. JS Array.reverse 将数组元素颠倒顺序

    <pre><script type="text/javascript"> //JS Array.reverse 将数组元素颠倒顺序//在JavaScript ...

  10. oss打包下载

    private static final String OSS_ENDPOINT = PropertiesUtil.getString("oss.endpoint"); priva ...