美文网首页
MySQL基础回顾(6-11)

MySQL基础回顾(6-11)

作者: 般若般罗蜜多 | 来源:发表于2020-03-23 21:45 被阅读0次

    六、过滤数据

    1、使用 WHERE 子句SELECT p_price,p_name FROM products WHERE p_price=2.50;

    ORDER BY 位于 WHERE 之后,否则将会产生错误。

    2、WHERE 子句操作符

    说明:= 等于;<> 不等于;!= 不等于;< 小于;<= 小于等于;> 大于
    ;>= 大于等于;BETWEEN 在指定的两个值之间。

    3、范围值检查SELECT p_price,p_name FROM products WHERE p_price BETWEEN 4 AND 6;
    4、空值检查SELECT p_price,p_name FROM products WHERE p_price IS NULL;

    七、数据过滤

    1、组合 WHERE 子句:以 AND 子句的方式或 OR 子句的方式使用。
    2、操作符(operator):用来联结或改变 WHERE 子句中的子句的关键
    字。也称为逻辑操作符(logical operator)。
    3、AND操作符SELECT p_id,p_name,p_price FROM products WHERE p_id = 520 AND p_price <= 100;
    4、OR 操作符SELECT p_id,p_name,p_price FROM products WHERE p_id = 520 OR p_price <=1314;
    5、计算次序SELECT p_id,p_name,p_price FROM products WHERE p_id = 520 OR p_id = 1314 AND p_price <=666;

    SQL(像多数语言一样)在处理 OR 操作符前,优先处理 AND 操作符。

    6、IN 操作符SELECT p_id,p_name,p_price FROM products WHERE p_id IN (520,1314) ORDER BY p_id;
    7、NOT 操作符SELECT p_id,p_name,p_price FROM products WHERE p_id NOT IN (520,1314) ORDER BY p_id;

    八、用通配符进行过滤

    1、LIKE 操作符

    • 百分号( % )通配符: % 表示任何字符出现任意次数。
      SELECT p_name FROM products WHERE p_name LIKE 'jet%';

    注意尾空格 尾空格可能会干扰通配符匹配。

    • 下划线( _ )通配符:下划线的用途与 % 一样,但下划线只匹配单个字符而不是多个字符。

    2、使用通配符的技巧:通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。要记住以下技巧。

    • 不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。
    • 在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
    • 仔细注意通配符的位置。

    九、用正则表达式进行搜索

    1、MySQL仅支持多数正则表达式实现的一个很小的子集。
    2、基本字符匹配SELECT p_name FROM products WHERE p_name REGEXP '1000' ORDER BY p_name;

    REGEXP 后所跟的东西作为正则表达式(与文字正文 1000 匹配的一个正则表达式)处理。

    3、正则表达式 .. 是正则表达式语言中一个特殊的字符。它表示匹配任意一个字符SELECT p_name FROM products WHERE p_name REGEXP '.000' ;

    匹配不区分大小写 MySQL中的正则表达式匹配(自版本3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用 BINARY 关键字,如WHERE prod_name REGEXPBINARY 'JetPack .000';

    4、进行OR匹配| 为正则表达式的 OR 操作符。SELECT p_name FROM products WHERE p_name REGEXP 'MAO|LI';
    5、匹配几个字符之一SELECT p_name FROM products WHERE p_name REGEXP '[123] mao';

    • [123] 定义一组字符,它的意思是匹配 1 或 2 或 3 ,因此, 1 mao 和 2 mao 都匹配且返回(数据表 3 mao )。
    • 正则表达式 [123]Ton为 [1|2|3]Ton 的缩写,也可以使用后者。

    6、匹配范围[1-5] 定义了一个范围,这个表达式意思是匹配 1 到 5 。
    7、匹配特殊字符:了匹配特殊字符,必须用 \ 为前导。 \- 表示查找 - , \. 表示查找 . 。SELECT p_name FROM products WHERE p_name REGEXP '\\.';

    \也用来引用元字符(具有特殊含义的字符)
    \f 换页
    \n 换行
    \r 回车
    \t 制表
    \v 纵向制表

    8、匹配字符类:为更方便工作,可以使用预定义的字符集,称为字符类(character class)。

    [:alnum:] 任意字母和数字(同[a-zA-Z0-9])
    [:alpha:] 任意字符(同[a-zA-Z])
    [:blank:] 空格和制表(同[\t])
    [:cntrl:] ASCII控制字符(ASCII 0到31和127)
    [:digit:] 任意数字(同[0-9])
    [:graph:] 与[:print:]相同,但不包括空格
    [:lower:] 任意小写字母(同[a-z])
    [:print:] 任意可打印字符
    [:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
    [:space:] 包括空格在内的任意空白字符(同[\f\n\r\t\v])
    [:upper:] 任意大写字母(同[A-Z])

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

    9、匹配多个实例SELECT p_name FROM products WHERE p_name REGEXP '\\([1-9] mao?\\) ORDER BY p_name;'

    • \( 匹配 ),[0-9] 匹配任意数字(这个例子中为1和9), mao? 匹配 mao和maos ( s 后的 ? 使 s 可选,因为 ? 匹配它前面的任何字符的0次或1次出现), \) 匹配 ) 。没有 ? ,匹配 stick 和 sticks 会非常困难。
    • 正则表达式重复元字符来完成:
      * 0个或多个匹配 ;+ 1个或多个匹配(等于{1,});
      ? 0个或1个匹配(等于{0,1});
      {n} 指定数目的匹配;
      {n,} 不少于指定数目的匹配;
      {n,m} 匹配数目的范围(m不超过255)。

    10、定位符

    ^ 文本的开始
    $ 文本的结尾
    [[:<:]] 词的开始
    [[:>:]] 词的结尾

    十、创建计算字段

    1、拼接字段SELECT CONCAT(p_name,p_country) FROM products ORDER BY p_name;
    输出:毛(中国)

    MySQL的不同之处 多数DBMS使用 + 或 || 来实现拼接,MySQL则使用 Concat() 函数来实现。当把SQL语句转换成MySQL语句时一定要把这个区别铭记在心。

    2、RTrim() 函数:删除数据右侧多余的空格来整理数据。
    SELECT CONCAT(RTRIM(p_name),'(',RTRIM(p_country),')') FROM products;

    Trim 函数 MySQL除了支持 RTrim() (正如刚才所见,它去掉串右边的空格),还支持 LTrim() (去掉串左边的空格)以及Trim() (去掉串左右两边的空格)。

    3、使用别名:别名用 AS 关键字赋予。SELECTCONCAT(RTRIM(p_name),'(',RTRIM(p_country),')') AS p_title FROM products;

    导出列 别名有时也称为导出列(derived column),不管称为什么,它们所代表的都是相同的东西。

    4、执行算术计算SELECT p_price*p_number AS e_price FROM products WHERE p_num=520;

    MySQL算术操作符:
    + 加
    - 减
    * 乘
    / 除

    十一、使用数据处理函数

    1、函数:函数一般是在数据上执行的,它给数据的转换和处理提供了方便。
    2、文本处理函数SELECT v_name,UPPER(p_name) AS c_name FROM products WHERE p_id=520 ORDER BY v_name;

    常用的文本处理函数:
    Left() 返回串左边的字符
    Length() 返回串的长度
    Locate() 找出串的一个子串
    Lower() 将串转换为小写
    LTrim() 去掉串左边的空格
    Right() 返回串右边的字符
    RTrim() 去掉串右边的空格
    Soundex() 返回串的SOUNDEX值
    SubString() 返回子串的字符
    Upper() 将串转换为大写

    3、日期和时间处理函数

    AddDate() 增加一个日期(天、周等)
    AddTime() 增加一个时间(时、分等)
    CurDate() 返回当前日期
    CurTime() 返回当前时间
    Date() 返回日期时间的日期部分
    DateDiff() 计算两个日期之差
    Date_Add() 高度灵活的日期运算函数
    Date_Format() 返回一个格式化的日期或时间串
    Day() 返回一个日期的天数部分
    DayOfWeek() 对于一个日期,返回对应的星期几
    Hour() 返回一个时间的小时部分
    Minute() 返回一个时间的分钟部分
    Month() 返回一个日期的月份部分
    Now() 返回当前日期和时间
    Second() 返回一个时间的秒部分
    Time() 返回一个日期时间的时间部分
    Year() 返回一个日期的年份部分

    无论你什么时候指定一个日期,不管是插入或更新表值还是用 WHERE 子句进行过滤,日期必须为格式yyyy-mm-dd。2005年9月1日,给出为2005-09-01。

    应该总是使用4位数字的年份 支持2位数字的年份,MySQL处理00-69为2000-2069,处理70-99为1970-1999。虽然它们可能是打算要的年份,但使用完整的4位数字年份更可靠,因为MySQL不必做出任何假定。
    SELECT p_id,p_num FROM products WHERE Date(p_date)='2013-05-20'; Date(order_date) 指示MySQL仅提取列的日期部分。

    4、数值处理函数

    Abs() 返回一个数的绝对值
    Cos() 返回一个角度的余弦
    Exp() 返回一个数的指数值
    Mod() 返回除操作的余数
    Pi() 返回圆周率
    Rand() 返回一个随机数
    Sin() 返回一个角度的正弦
    Sqrt() 返回一个数的平方根
    Tan() 返回一个角度的正切

    相关文章

      网友评论

          本文标题:MySQL基础回顾(6-11)

          本文链接:https://www.haomeiwen.com/subject/pugiyhtx.html