`
shen829475
  • 浏览: 5751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

MySQL学习笔记

阅读更多

 

1.使用DISTINCT只返回不同的值,要应用于所有列而不仅是前置它的列. 

   SELECT DISTINCT prod_name

   FROM products;

 

2.LIMIT限制结果,LIMIT 5指示MySQL返回前5行,LIMIT 5,3指示MySQL返回从第6行开始的3行(第1行为行0)。

   SELECT prod_name

   FROM products LIMIT 5,3

   等效于

   SELECT prod_name

   FROM products LIMIT 3 offset 5;

 

3.ORDER BY排序,默认为升序ASC,DESC关键字表示降序

   SELECT prod_id,prod_price,prod_name

    FROM products

    ORDER BY prod_price,prod_name;

 

4.BETWEEN AND 匹配范围中所有的值,包括指定的开始值和结束值。

 

5.空值检查

  SELECT cust_id

  FROM customers

  WHERE cust_email IS NULL;

 

6.IN操作符

   SELECT prod_name,prod_price

   FROM products

   WHERE vend_id IN (1002,1003)

   ORDER BY prod_name;

 

7.NOT操作符

   MySQL支持使用NOT对IN,BEWTEEN和EXISTS子句取反

   SELECT prod_name,prod_price

   FROM products

   WHERE vend_id NOT IN (1002,1003);

 

8.用通配符进行过滤

   %表示任何字符出现任意次数, _下划线只匹配单个字符,不能多也不能少

   SELECT prod_id,prod_name

   FROM products

   WHERE prod_name LIKE '%anvil%';

  '%anvil%'表示匹配任何位置包含文本anvil的值

   SELECT prod_id,prod_name

   FROM products

   WHERE prod_name LIKE '_ ton anvil';

 

9.用正则表达式进行搜索

   检索列prod_name包含文本1000的所有行:  匹配任一字符

   SELECT prod_name                                     SELECT prod_name

   FROM products   FROM products

   WHERE prod_name REGEXP '1000'   WHERE prod_name REGEXP '.000'

   ORDER BY prod_name; ORDER BY prod_name;

   输出

+-----------------+

|   prod_name  |

+-----------------+

| JetPack 1000 |

| JetPack 2000 |

 

  匹配不区分大小写,为区分大小写,可使用BINARY关键字。例如

  SELECT prod_name

  FROM products

  WHERE prod_name REGEXP BINARY 'JetPack'; 

 

  匹配其中之一,使用|,如

  SELECT prod_name

  FROM products

  WHERE prod_name REGEXP '1000|2000|3000'

 

  匹配几个字符之一

  SELECT prod_name

  FROM products

  WHERE prod_name REGEXP '[123] ton'

   [^123]匹配除这些字符外的任何东西

 

  匹配范围[0123456789]等价于[0-9],范围不一定是数值,如[a-z]

 

  匹配特殊字符,要用\\为前导,例如\\-\\\匹配\

 

   空白元字符

  +--------------------------------------------------------------------------------------+

  |    元字符 说明  |

  -----------------------------------------------------------------------------------------

\\f 换页

\\n 换行

\\r 回车

\\t 制表

\\v 纵向制表

   -----------------------------------------------------------------------------------------

 

  字符类

  +---------------------------------------------------------------------------------------+

  |  说明   |

  ------------------------------------------------------------------------------------------

   [:alnum:] 任意字母和数字(同[a-zA-Z0-9])

   [:alpha:] 任意字符(同a-zA-Z)

   [:blank:]   空格和制表(同[ \\t])

   [:cntrl:] ASCII控制字符(ASCII 0到31和127)

   [:digit:] 任意数字(同[0-9])

   [:print:] 任意可打印字符

   [:graph:] 与[:print:]相同,但不包括空格

   [:lower:] 任意小写字母(同[a-z])

   [:upper:] 任意大写字母(同[A-Z])

   [:punct:] 即不在[:alnum:]又不在[:cntrl:]中的任意字符

   [:space:]                       包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])

   [:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

  -----------------------------------------------------------------------------------------

 

   重复元字符

  +---------------------------------------------------------------------------------------+

  |    元字符 说明

   -----------------------------------------------------------------------------------------

        * 0个或多个匹配

+ 1个或多个匹配(等于{1,})

? 0个或1个匹配(等于{0,1})

{n} 指定数目的匹配

{n,} 大于等于指定数目的匹配

  {n,m} 匹配数目的范围(m不超过255)

  --------------------------------------------------------------------------------------------

 

  SELECT prod_name

  FROM products

  where prod_name REGEXP '\\([0-9] sticks?\\)';

  +-------------------+

  |   prod_name    |

  +-------------------+

  |  TNT (1 stick)    |

  |  TNT (5 sticks)  |

  +-------------------+

  \\(匹配(,[0-9]匹配任意数字(这个例子为1和5),sticks?匹配stick和sticks(s后的?使s可选),\\)匹配)

 

  SELECT prod_name

  FROM products

  where prod_name REGEXP '[[:digit:]]{4}';

  +-------------------+

  |   prod_name    |

  +-------------------+

  |  JetPack 1000  |

  |  JetPack 2000  |

  +-------------------+

  [:digit:]匹配任意数字,{4}确切地要求它前面的字符出现4次,所以[[:digit:]]{4}匹配连在一起的任意4位数字

 

   定位元字符

  +-----------------------------------------------------------------------------------------+

  |    元字符  说明

  ---------------------------------------------------------------------------------------------

 ^ 文本的开始

         $ 文本的结尾

         [[:<:]] 词的开始

         [[:>:]] 词的结尾

  ----------------------------------------------------------------------------------------------

  例如^[0-9\\.] 只在.或任意数字为串中第一个字符时才匹配它们

 

  简单的正则表达式测试,可以在不使用数据库表的情况下用SELECT来测试正则表达式。REGEXP检查总是返回0(没有匹   配)或1(匹配)。可以用带文字串的REGEXP来测试表达式,并试验它们。相应的语法如下:

  SELECT 'hello' REGEXP '[0-9]';

 

 10.创建计算字段

  多数DBMS使用+或||来实现拼接,MySQL则使用Concat()函数来实现

  SELECT Concat(vend_name, ' (', vend_country, ')')

  FROM vendors;

 

  LTrim()函数去掉值左边的空格,RTrim()函数去掉值右边的空格,Trim()函数去掉值两边的空格

 

  使用AS关键字赋予别名 

  SELECT Concat(vend_name, ' (', vend_country, ')') AS vend_title

  FROM vendors;

 

  SELECT提供了测试和试验函数与计算的一个很好的办法,省略FROM子句以便简单地访问和处理表达式,例如,

  SELECT 3*2;将返回6, SELECT Trim('   abc   ');将返回abc, SELECT Now()返回当前日期和时间。


  11.函数

   文本处理函数

   +-----------------------------------------------------------------------------+

    |          |

    -------------------------------------------------------------------------------

    Left() 返回串左边的字符

Right() 返回串右边的字符

   Length() 返回串的长度

  Locate() 找出串的一个子串

Lower() 将串转换为小写

Uppter() 将串转换为大写

LTrim() 去掉串左边的空格

RTrim() 去掉串右边的空格

Soundex() 返回串的SOUNDEX值

SubString() 返回子串的字符

   +-----------------------------------------------------------------------------+

Soundex匹配发音类似

    SELECT cust_name,cust_contact

    FROM customers

    where cust_contact = 'Y.Lie';

    返回空,改为where Soundex(cust_contact) = Soundex('Y.Lie'); 返回

    +------------------+-------------------+

     |  cust_name    |  cust_contact  |

    +------------------+-------------------+

     |  Coyote Inc.   |   Y Lee        |

    +------------------+-------------------+

 

        日期和时间处理函数

   +--------------------------------------------------------------------------------------+

    | 说                  |

    ----------------------------------------------------------------------------------------

    AddDate() 增加一个日期(天、周等)

AddTime() 增加一个时间(时、分等)

   CurDate() 返回当前日期

  CurTime() 返回当前时间

Date() 返回日期时间的日期部分

DateDiff() 计算两个日期之差

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

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

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

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

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

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

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

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

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

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

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

   +--------------------------------------------------------------------------------------+

     SELECT cust_id,order_num

     FROM orders

     WHERE Date(order_date) = '2005-09-01';

     当order_date值为2005-09-01 11:30:05,也匹配,Date()指示MySQL仅将给出的日期与列中的日期部分进行比较,而不是给出的日期与整个列值进行比较。Year(), Month()函数同理,如WHERE Year(order_date) = 2005 AND

Month(order_date) = 9;匹配2005年9月。这样就不需要记住每个月有多少天,也不用操作闰年。

 

常用的数值处理函数

  +-------------------------------------------------------------------------+

  |    函  数 说  明 |

  ----------------------------------------------------------------------------

Abs() 返回一个数的绝对值

Sin() 返回一个角度的正弦

Cos() 返回一个角度的余弦

Tan() 返回一个角度的正切

Exp() 返回一个数的指数值

Mod() 返回一个数的余数

Pi() 返回圆周率

Rand() 返回一个随机数

Sqrt() 返回一个数的平方根

   +-------------------------------------------------------------------------+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MySQL学习笔记.zip

    这份“MySQL学习笔记”将引导我们深入理解其核心概念和实用技能。 一、MySQL简介 MySQL是一个开源、免费的数据库系统,由瑞典的MySQL AB公司开发,后被Oracle公司收购。它的设计目标是速度、可移植性和简洁性,支持...

    mysql学习笔记.rar

    这份"mysql学习笔记.rar"包含的资源旨在帮助初学者和有经验的开发者深入理解和掌握MySQL的相关知识。 首先,"mysql学习笔记.doc"很可能是核心的学习资料,它可能包含了MySQL的基础概念、安装与配置、SQL语言基础、...

    mysql学习笔记

    这份“mysql学习笔记”涵盖了MySQL的基础知识,包括但不限于数据库的概念、SQL语言的使用、以及更深入的多表操作。 在“day08入门笔记”中,你可能会学到以下内容: 1. **数据库基本概念**:了解什么是数据库,...

    Mysql学习笔记1

    ### MySQL学习笔记1:深入理解内连接与外连接 #### 一、引言 在数据库管理与查询过程中,连接操作是十分常见且重要的一个环节。MySQL作为一种广泛使用的开源关系型数据库管理系统,在处理复杂的多表查询时,提供了...

    MySQL学习笔记.chm

    MySQL学习笔记.chmMySQL学习笔记.chmMySQL学习笔记.chmMySQL学习笔记.chm

    数据库 MySQL 学习笔记高级篇.md

    数据库 MySQL 学习笔记高级篇.md

    mysql学习笔记(一).txt

    mysql入门学习笔记整理,如何创建数据库、查看数据库,删除数据库,创建表和对表字段类型操作、约束、mysql数据类型整理

    MySQL学习笔记(含基础、运维、进阶三部分)

    MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) MySQL学习笔记(含基础、运维、进阶三部分) 包含了我学习 MySQL 过程中的笔记和资源,从入门到进阶的内容都有涉及。通过...

    MySQL学习笔记666

    mysql学习笔记

    MySQL学习笔记.pdf

    MySQL学习笔记.pdf MySQL学习笔记主要涵盖了 MySQL 服务器的基本操作、数据库管理、数据表的创建和管理、数据的crud 操作、约束的添加和删除等内容。 一、登录和退出 MySQL 服务器 在 MySQL 学习笔记中,首先...

    Mysql学习笔记.pdf

    MySQL 是一款广泛使用的开源关系型数据库管理系统,其学习笔记涵盖了多个关键知识点。以下是对这些知识点的详细解释: 1. **MySQL 体系架构** - **网络连接层**:处理客户端的连接请求,包括连接管理、认证和安全...

    MySql学习笔记

    在MySQL学习过程中,了解和掌握基本的命令是非常重要的。以下是一些关键知识点的详细解释: 1. **显示数据库**: 使用`SHOW DATABASES;`命令可以列出当前MySQL服务器上存在的所有数据库。 2. **创建数据库**: `...

    MySQL学习笔记-JSP操作MySQL

    从给定的文件信息来看,本文档主要围绕“MySQL学习笔记—JSP操作MySQL”的主题展开,详细介绍了如何在JSP环境下操作MySQL数据库的过程。以下是对该文档中的关键知识点进行的深入解析: ### 一、MySQL与JSP的集成 ...

    非常详细的某培训机构mysql学习笔记

    非常详细的某培训机构mysql学习笔记,内容系统全面,实用性强 MySQL1 MySQL基础 MySQ单实例部署 MySQL多实例部署 MySQL数据库操作 MySQL数据类型 MySQL存储引擎 MySQL表操作 MySQL2 MySQL数据操作 MySQL单...

    高性能mysql学习笔记

    ### 高性能MySQL学习笔记:查询性能优化与实践 #### 一、查询性能低下的原因与分析步骤 查询性能低下通常归因于访问了过多的数据。优化查询性能的关键在于识别并减少不必要的数据访问。具体可以通过以下两个步骤...

    MySQL学习笔记-基础到进阶

    内容概要:MySQL学习笔记,内容包括SQL基本语法、MySQL基础知识,包括存储引擎、索引、视图、锁、优化、存储结构等MySQL主要的内容。 适用人群:适合自学MySQL的同学使用。 能学到什么:MySQL从基础到进阶的全部内容...

    MYSQL学习笔记总结

    以下是对“MYSQL学习笔记总结”中的关键知识点的详细阐述: 1. **基础概念** - **数据库**: 数据库是存储数据的系统,MySQL中的数据组织成表格形式,每个表格包含多个列和行。 - **表**: 表是数据的基本单元,由...

Global site tag (gtag.js) - Google Analytics