美文网首页
MySql必知必会1-10章总结

MySql必知必会1-10章总结

作者: yunqing_71 | 来源:发表于2020-02-23 18:23 被阅读0次

    mysql命令行客户端登录

    #默认端口3306 主机本地localhost
    mysql -u root -p
    #写全的话
    mysql -u root -p -h localhost -P 3307
    

    解释一下:-u 用户名为root -p 密码待输入 -h 主机名localhost -P 注意大写P ,意思是端口号3307

    数据库操作

    #展示所有数据库
    show databases;
    #使用数据库
    use kls;
    #展示数据库中所有的表
    show tables;
    #展示person表的字段
    show columns from person;
    #show columns from 可以用describe代替
    describe person;
    
    image.png

    mysql不区分大小写,但是为了易于阅读,开发人员经常把关键字大写,列和表名小写。(反正我是遵守不了,看大写的英文难受)

    检索不同的行

    如果查询学生表的年龄,每个年龄只出现一次

    select distinct age from student;
    

    限制返回结果数

    limit 5 表示从第1行开始,返回5条记录

    select name from student limit 5;
    

    limit 5, 5表示从第5行开始,返回5条数据

    select name from student limit 5,5;
    

    另一种写法:limit 2 offset 3 代表从行3(也就是第四行)开始取2行

    select name from student limit 2 offset 3;
    

    排序order by

    注意:order by 不仅可以按照检索的列排序,用非检索的列排序也是合法的。
    注意:在多个列进行降序排序,需要在每个列指定DESC关键字,因为不指定的都默认ASC升序排列。
    注意:order by 和 limit连用的时候,limit放在order by的后面。

    between操作符

    用来检索在两个数值之间的记录,例如查询在18-20岁之间的学生

    select * from student t where t.age between 18 and 20;
    

    通配符 % 和 _

    mysql使用LIKE操作符跟%通配符进行模糊搜索。

    #查询姓李的学生
    select name from student where name like '李%';
    

    ①注意:根据mysql的配置方式,搜索是要区分大小写的,例如模糊搜索中'jet%'是不会匹配JetPack的。
    ②注意'%jet%'表示匹配任何位置包括jet文本的值,而不论他之前或之后出现什么值。
    ③%表示搜索模式指定位置有0到多个任意字符。
    ④注意通配符_下划线,只能匹配1个字符,不能多也不能少。
    ⑤%不会匹配NULL行,即使是like '%'也不会匹配NULL行。
    ⑥通配符一般处理时间比其他搜索要长,其他操作能达到尽量不要使用,使用通配符时候除非有绝对必要,否则不要把通配符用在开始处,因为放在开始处,搜索会最慢。

    使用mysql正则表达式

    mysql使用 regexp 表示后面跟的内容为正则表达式

    基本字符匹配

    #正则匹配姓名为小刚的行
    select * from student where name regexp '小刚';
    

    . 点号是正则表达式中的一个重要字符,表示匹配任意一个字符。

    #正则匹配0前面有任意一个字符的行,例如10、20等
    select * from student where age regexp '.0';
    

    正则表达式不区分大小写,为了区分大小写可以使用binary关键字

    #下面例子则匹配jet 1000 或者 jet a000等
    ... where name regexp binary 'jet .000';
    

    进行OR匹配

    正则表达式利用|来表示or操作

    #匹配名字中包括小明或小李的
    ... where name regexp '小明|小李';
    

    匹配几个字符之一

    使用[]包裹的字符,表示匹配其中之一

    #正则匹配包括1或2或3的学号
    ... where id regexp '[123]';
    

    解释:[123][1|2|3]的缩写,其实[]就是正则中另一种形式的or语句,为什么加[]是因为如下:

    image.png

    字符集合也可以被否定,即匹配除指定字符之外的任何东西,即[^123]匹配除123这三个字符之外的任何东西。

    正则匹配范围

    #例如
    [0-9]
    [a-z]
    [1-3]
    [a-e]
    
    #将会匹配到1 Ton anvil 或 .5 ton anvil等 
    ... where name regexp '[1-5] Ton';
    

    正则匹配特殊字符\\转义

    如果需要转义\本身,需要使用\\\
    为什么正则表达式用两个\\呢?因为在mysql当中,mysql自己解释一个,正则表达式库解释一个。

    正则匹配字符类

    image.png

    正则匹配多个实例

    image.png
    image.png

    正则定位符

    image.png

    例如我们想搜索一个以.点号或者数字开头的结果,怎么办?
    [0-9\.]是不行的,因为他会在文本的任意位置开始查找,解决办法就是使用定位符^从文本开始位置查找。

    ... where name regexp '^[0-9\\.]';
    

    创建计算字段

    简单来说,数据库中存储的结果不是我们最终想要的,例如省市区分别存储在3列中,我们需要连在一列显示。

    拼接字段Concat()函数

    #将first_name、 ( 、last_name、和)这四个字符串拼接起来,例如: 李 (小明)
    select Concat(first_name, ' (' , last_name, ')') as name from student;
    

    Trim()LTrim()RTrim()函数

    分别为去掉左右两边的空格、去掉左边空格、去掉右边空格

    如何测试计算?

    image.png
    #例如查询当前时间
    select  now();
    
    image.png

    相关文章

      网友评论

          本文标题:MySql必知必会1-10章总结

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