MySQL正则表明式入门教程,轻松插入

我们领略,在SQL之中,能够用 like 那一个谓词(表明式) 来进行模糊检索,并支持%,?,_等占位符.
但是,那么些模糊检索的效用有好多限量,轻巧的话正是太模糊了。
在MySQL中提供了 REGEXP
关键字来支撑正则表明式,当然,只是部分很轻巧的正则啦。
率先,我们组织一些测试数据。

插入INSERT(3种方式)

复制代码 代码如下:

        1.INSERT  [INTO]  tb_name [(col_name, …)]  {VALUES  |
 VALUE}  ({expre  |  DEFAULT}, …), (…), …

— 建表
USE test;
DROP TABLE IF EXISTS t_regcustomer;
CREATE TABLE t_regcustomer (
 id INT(10) AUTO_INCREMENT
 ,name VARCHAR(256)
 ,age INT(10)
 , PRIMARY KEY(id)
) COLLATE=’utf8_general_ci’ ENGINE=InnoDB;

                $$:INSERT info_tb VALUES (DEFAULT, ‘111’, ‘小涛’,
DEFAULT, DEFAULT);

充实一些测试数据:

        2.INSERT  [INTO]  tb_name SET  col_name={expr  |  DEFAULT},

复制代码 代码如下:

                $$:INSERT info_tb SET nick_name=’小李’, age=DEFAULT;

— 插入一些测试数据:
TRUNCATE TABLE t_regcustomer;
INSERT INTO t_regcustomer(name, age) VALUES (‘王明’,20);
INSERT INTO t_regcustomer(name, age) VALUES (‘王大’,21);
INSERT INTO t_regcustomer(name, age) VALUES (‘小王’,22);
INSERT INTO t_regcustomer(name, age) VALUES (‘小王2’,22);
INSERT INTO t_regcustomer(name, age) VALUES (‘敲不死’,23);
INSERT INTO t_regcustomer(name, age) VALUES (‘憨憨’,24);
INSERT INTO t_regcustomer(name, age) VALUES (‘憨憨2’,24);
INSERT INTO t_regcustomer(name, age) VALUES (‘郭靖名’,25);
INSERT INTO t_regcustomer(name, age) VALUES (‘郭靖2’,25);
INSERT INTO t_regcustomer(name, age) VALUES (‘郭靖3’,25);
INSERT INTO t_regcustomer(name, age) VALUES
(‘郭得缸’,25)
,(‘大鹏’,20)
,(‘大鹏2’,20)
,(‘大鹏3’,20)
,(‘二鹏’,19)
,(‘鹏鹏’,18)
,(‘鹏鹏1’,18)
,(‘小鹏’,17)
,(‘AAA’,17)
,(‘aaa’,17)
,(‘SS’,17)
,(‘s2’,17)
,(‘ss’,17)

        3.INSERT  [INTO]  tb_name [(col_name, …)]  SELECT…

  1. 最简单易行的询问:

                $$:INSERT cp_info_tb (name) SELECT (nick_name) FROM
info_tb WHERE id = 2;

复制代码 代码如下:

履新记录(update)

SELECT * 
FROM t_regcustomer; 

    一.单表更新: UPDATE  [LOW_PRIORITY]  [IGNORE]  table_reference
 SET  col_name1= {expr1 | DEFAULT} [, col_必发88官网,name2={expr2 |
DEFAULT}]…  [WHERE where_condition]

  1. 钦定列名查询

        $$: UPDATE info_tb SET token=’222′, sex=5 WHERE id = 2;

复制代码 代码如下:

删除记录

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 

    一.单表删除: DELETE  FROM tb_name [WHERE  where_condition]

  1. 对查询结果排序

        $$:DELETE FROM info_tb where token=’222′;

复制代码 代码如下:

询问记录(SELECT):

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
ORDER BY c.age ASC 

    SELECT  select_expr [, select_expr…]

  1. like 模糊检索
    %相称放肆数量(0~n)的任性字符

        [

复制代码 代码如下:

            FROM  table_references

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name LIKE ‘%鹏%’ 
ORDER BY c.age ASC 

            [WHERE  where_condition]

  1. regexp 关键字
    .相配大肆一个字符
    注意此处因为尚未起始(^)和终止($)限定符,所以1旦列中现身的行都会被寻觅出来.

            [GROUP  BY {col_name | postion}  [ASC |  DESC], …]

复制代码 代码如下:

            [HAVING where_condition]

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP ‘.鹏.’ 
ORDER BY c.age ASC 

            [ORDER  BY {col_name  | expr  | position}  [ASC  |
 DESC], …]

  1. 正则起始限定符

            [LIMIT  {[offset, ]   row_count |  row_count  OFFSET
 offset}]

复制代码 代码如下:

        ]

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP ‘^王’ 
ORDER BY c.age ASC 

查询表明式

  1. 大大小小写敏感

   
每三个表明式表示想要的一列,必须有至少八个;八个列之间以英文逗号分隔;星号(*)表示全体列,tb_name.*能够表示命名表的有着列;查询表明式能够动用[AS]
alias_name为其给予外号;别称可用于GROUP  BY, O奇骏DEHummerH二 BY 或HAVING子句。

复制代码 代码如下:

条件表明式(where)

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP BINARY ‘^s’ 
ORDER BY c.age ASC 

   
对记录进行过滤,即便未有一点名WHERE子句,则展现全体记录;在WHERE表明式中,能够利用MySQL辅助的函数或运算符。

  1. 正则或运算

        $$: SELECT nick_name, id FROM info_tb WHERE id%2=0;

复制代码 代码如下:

查询结果分组(GROUP BY)

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP BINARY ‘a|s’ 
ORDER BY c.name ASC 

    [GROUP  BY  {col_name | position}  [ASC | DESC], ..]

  1. 组运算正则
    [123] 表示 一、2、3那三个数字之1出现就可以

        $$:SELECT id, nick_name FROM info_tb GROUP BY id DESC;

复制代码 代码如下:

分组条件(HAVING)

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP BINARY ‘鹏[123]’ 
ORDER BY c.name ASC 

        [HAVING where_condition]

[1-9] 匹配 1、2、3、…. 8、9

            $$:SELECT age, SUM(salary) FROM tb1 GROUP BY age HAVING
SUM(salary)<5000;

复制代码 代码如下:

对查询结果实行排序(O奥迪Q7DELAND  BY)

SELECT c.id, c.name, c.age 
FROM t_regcustomer c 
WHERE c.name REGEXP BINARY ‘鹏[1-9]’ 
ORDER BY c.name ASC 

        [ORDER  BY {col_name | expr | position}  [ASC | DESC], …]

  1. 转义
    使用 \\
    能够转义 \.[]()?-| 以及分页,换行符号等

                $$:SELECT salary, username, age FROM tb1 ORDER BY SALARY
DESC;

1一.越多内容

限制查询结果重临的数量(LIMIT)

请查阅 《MySQL必知必会》 6捌页
正则表明式,PDF下载地址://www.jb51.net/books/67331.html

        [LIMIT {[offset, ]  row_count  | row_count  OFFSET
offset}]

你或然感兴趣的文章:

  • mysql中怎样利用正则表达式查询
  • mysql
    正则表明式查询含有非数字和字符的笔录
  • MySql官方手册学习笔记二MySql的歪曲查询和正则表明式
  • MySql中动用正则表明式查询的诀窍
  • mysql正则表明式 LIKE
    通配符
  • 在MySQL中用正则表明式替换数据库中的内容的格局
  • MySQL中选拔replace、regexp进行正则表明式替换的用法深入分析
  • MySql中正则表明式的利用方法描述
  • MySQL 字符串格局相配扩张正则表达式形式相配
  • MYSQL使用正则表达式过滤数据
  • MySQL使用正则表达式举行查询操作非凡实例总计

            $$: SELECT salary, username, age FROM tb1 limit 1, 2;