当前位置:   article > 正文

1201、数据库基础、搭建mysql服务器、密码管理、安装图形软件、基础命令、查询命令_t1201_password_policy_discovery

t1201_password_policy_discovery

目录

一、数据库概述

1  数据库介绍

2 常见的数据库服务软件

3 专业术语 

4 mysql介绍

二、搭建MySQL服务器

1、搭建第1台数据库服务器

1 清除冲突软件mariadb (如果安装了的话)

2 安装软件mysql 社区开源版软件

3 启动服务并设置开机运行 ,查看进程和端口

4 查看连接MySQL服务初始密码

5 使用初始密码连接服务

6 修改登录密码

7 断开连接

8 使用修改的密码登录并查看数据

以上操作失败的解决办法:

2、搭建第2台数据库服务器

三、密码管理

密码策略

1、修改数据库服务器的密码策略(设置密码的复杂度)

2、破解数据库管理员root 密码(忘了root密码)

 2.1 破解线下数据库服务器管理员root 密码

2.2 破解线上数据库服务器管理员root 密码(上一种破解必须重启服务,但线上服务器不能随便重启)

3、修改root密码 

四、安装图形软件

五、数据库必备命令的使用

1、基本操作

2、 相关参数

3、连接数据库服务的连接方式:

 五、查询 select    

1、查询命令格式:

2、select 命令用法:

        1、查看常量

        2、查看mysql环境变量

        3、查看计算结果

        4、查询时使用函数

        练习环境准备

        5、只查看表里的某个表头

3、常用的筛选条件有: 

        1.给查找到的数据定义别名 使用 as  或 空格

        2.给查找到的数据拼接   concat()

        3.查询的数据有重复时 ,不显示重复     distinct  字段名列表

         4.数值比较

        5、字符比较        符号    =    !=

        6、空和非空

        7、范围匹配条件

        8、模糊匹配条件

        9、正则匹配

        10、逻辑匹配

         11、()  提高优先级

        逻辑匹配什么时候需要加()

         () 提高执行的优先级


准备实验使用的虚拟机

准备做数据库服务器的虚拟机(RHEL7操作系统)
使用准备的模板机克隆(链接克隆就可以)2台虚拟机:配置要求如下
     ip   192.168.4.50     192.168.4.51

[root@host50 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1

TYPE=Ethernet
BOOTPROTO=none
IPV6INIT=no
NAME=eth1
DEVICE=eth1
ONBOOT=yes
PROXY_METHOD=none
BROWSER_ONLY=no
IPADDR=192.168.4.50
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no

[root@host50 ~]# ifdown eth1

[root@host50 ~]# ifup eth1


     配置YUM源
     关闭firewalld  和  selinux
     拷贝软件  mysql-5.7.17.tar 到创建的虚拟机里

一、数据库概述

数据库介绍

数据库就是存储数据的仓库,用来存储数据的服务器 就称为数据库服务器

数据库服务器  一定要有足够大的磁盘容量 (网络共享存储 、 直连式存储 )

2 常见的数据库服务软件

      

3 专业术语 

DB 数据库 :在数据库服务器上创建的存储数据库的文件夹    

DBMS 数据管理系统 : 提供数据存储服务软件  
                                      如 mysql  、oracle 、SQL SERVER  、 DB2 ...... 
RDBMS 关系型数据库管理系统

DBS 数据库系统 :安装了数据库服务软件的主机  

DBA 数据库管理员 : 维护数据库服务器的工作人员  负责数据存储架构的部署  数据库服务器的维护和优化  、 监控 、数据的备份与恢复 

4 mysql介绍

主要特点:
                  适用于中小规模、关系型数据库系统;
                  支持Linux、Unix、Windows等操作系统;
                  支持Python、java、Perl、PHP等编程语言。

典型应用环境:
                   LAMP平台,与Apache   HTTP  Server组合
                   LNMP平台,与Nginx组合

二、搭建MySQL服务器

1、搭建第1台数据库服务器

192.168.4.50主机 部署MySQL服务,设置数据库管理员连接密码为123qqq...A

具体步骤如下:

1 清除冲突软件mariadb (如果安装了的话)

rpm   -q   mariadb-server   mariadb

systemctl   stop   mariadb

rpm   -e   --nodeps   mariadb   mariadb-server

rm    -rf    /etc/my.cnf 

rm    -rf    /var/lib/mysql/*

2 安装软件mysql 社区开源版软件

从官网下载rpm包

tar  -xf mysql-5.7.17.tar

yum -y install mysql-community-*.rpm

3 启动服务并设置开机运行 ,查看进程和端口

systemctl  start mysqld                        # 启动服务

systemctl  enable mysqld                     # 开机自启

netstat  -utnlp  | grep  3306  等效与   ss  -utnlp  | grep  3306      #查看服务信息

ps -C mysqld   等效于  ps  aux  |  grep   mysqld                     # 查看进程

4 查看连接MySQL服务初始密码

[root@host50 ~]# grep   password    /var/log/mysqld.log  |   tail   -1

2021-12-06T01:47:49.262056Z 1 [Note] A temporary password is generated for root@localhost: p.7jr.uy.aiZ

5 使用初始密码连接服务

[root@host50 ~]# mysql   -hlocalhost    -uroot   -p'p.7jr.uy.aiZ'

6 修改登录密码

(服务强制修改且修改的密码要符合服务要求的复杂度)

mysql>  alter  user   root@"localhost"   identified   by   "123qqq...A";     # 修改密码

7 断开连接

mysql> exit;

8 使用修改的密码登录并查看数据

默认的4个库 不允许删除  库存放的是不同类型的数据 后边的课程会陆续讲解

[root@host50 ~]# mysql    -hlocalhost    -uroot     -p123qqq...A
mysql> show databases;      # 查看已有的库 
mysql> exit;

以上操作失败的解决办法:

[root@host50 ~]#systemctl    stop    mysqld        # 停掉服务
[root@host50 ~]#
rm   -rf   /var/lib/mysqld/*         #  删除刚才生成的全部文件
[root@host50 ~]#systemctl    start    mysqld       
[root@host50 ~]#grep  password  /var/log/mysqld.log  |    tail  -1
[root@host50 ~]#mysql   -hlocalhost    -uroot   -p'p.7jr.uy.aiZ'    # 用新生成的密码再练一遍
[root@host50 ~]#mysql>  alter user   root@"localhost" identified by "123qqq...A"; #修改密码

2、搭建第2台数据库服务器

诉求: 在ip地址  192.168.4.51 部署MySQL服务  数据库管理员录密码设置为 NSD2021...a

和192.168.4.50操作一样

三、密码管理

密码策略

 

1、修改数据库服务器的密码策略(设置密码的复杂度)

操作步骤:
        1 查看默认使用的密码策略和密码长度

        2 命令行修改密码策略和密码长度

        3 修改密码验证修改的密码策略和密码长度

        4 永久修改密码策略和密码长度

[root@host50 ~]# mysql   -hlocalhost   -uroot    -p123qqq...A

mysql> show variables like "%password%";                    # 查看与密码相关的配置项

mysql> set global validate_password_policy=0;              # 修改密码等级为0

mysql> set global validate_password_length=6;             # 修改最小密码长度

mysql> alter user  root@"localhost" identified by "tarena";     #  根据新密码策略修改密码

mysql> exit;

[root@host50 ~]# mysql -hlocalhost -uroot -ptarena             # 使用修改后的密码登陆

mysql> exit;

[root@host50 ~]# vim /etc/my.cnf      # (永久配置)把修改添加到配置文件里数据库服务重启了 依然有效

[mysqld]
validate_password_policy=0
validate_password_length=6

:wq

[root@host50 ~]# systemctl  restart mysqld                          # 重启服务
[root@host50 ~]# mysql -hlocalhost -uroot -ptarena             # 登陆后
mysql> show variables like "%password%";                         # 查看密码策略

2、破解数据库管理员root 密码(忘了root密码)

 2.1 破解线下数据库服务器管理员root 密码

具体操作如下:

        1 修改主配置文件 (使其可以无密码登录)

        2 重启数据库服务

        3 无密码登录,并修改登录密码,断开连接

        4 还原对主配置文件 的修改

        5 重启数据库服务

        6 使用破解后的密码登录(能登录为成功)

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

1 修改主配置文件 (使其可以无密码登录)
[root@host50 ~]# vim /etc/my.cnf

[mysqld]
#validate_password_policy=0
#validate_password_length=6
skip-grant-tables                    
#跳过授权库MySQL库启动服务,作用连接服务不需要输入密码

2 重启数据库服务
[root@host50 ~]# systemctl  restart mysqld

3 无密码登录,并修改登录密码,断开连接
[root@host50 ~]# mysql                                      # 不输入密码就可以登陆

Mysql> desc  mysql.user;
mysql> select user , host , authentication_string  from mysql.user;

+------------+-------------+-----------------------------------------------------------------------------+
| user         | host         | authentication_string                                                               |
+------------+-------------+-----------------------------------------------------------------------------+
| root          | localhost | *F19C699342FA5C91EBCF8E0182FB71470EB2AF30         |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
+-----------+--------------+-----------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql>
mysql> select password("123456");
+-------------------------------------------+
| password("123456")                        |
+-------------------------------------------+
| *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql>

#修改管理员root 本机登陆密码为  123qqq...A

mysql> update  mysql.user set authentication_string=password("123qqq...A")

where user="root" and host="localhost"; 

mysql> flush privileges;                         # 确保修改生效

mysql> exit;                          # 断开连接

4 还原对主配置文件 的修改
[root@host50 ~]# vim /etc/my.cnf                 #  还原修改

[mysqld]
validate_password_policy=0
validate_password_length=6
#skip-grant-tables

5 重启数据库服务
[root@host50 ~]# systemctl  restart mysqld                # 重启服务

6 使用破解后的密码登录(能登录为成功)
[root@host50 ~]# mysql -hlocalhost -uroot -p123qqq...A               # 使用恢复的密码登陆
                       

2.2 破解线上数据库服务器管理员root 密码(上一种破解必须重启服务,但线上服务器不能随便重启)

具体步骤如下:

       1拷贝其他数据库服务器,管理员root用户能正常连接数据库服务的mysql库,覆盖本机的mysql库
!!!!mysql库存放的是数据库服务器的用户和密码!!! 
        2 查看mysql服务父进程的pid
        3 给mysql服务的父进程发送 SIGHUP信息 (作用重新加载数据库目录下的文件 ,可以重新识别 mysql库里的用户和密码)
        4 使用破解后的密码登录(密码和root用户能正常登录服务主机的的root密码一样)

[root@host50 ~]# scp   -r    192.168.4.51:/var/lib/mysql/mysql       /var/lib/mysql/

[root@host50 ~]# which   pstree  ||  yum   -y  install  psmisc

[root@host50 ~]# pstree   -p  |  grep  mysqld  |  head  -1

                  |-mysqld(1806)-+-{mysqld}(1807)

[root@host50 ~]# kill   -SIGHUP   1807

[root@host50 ~]# mysql     -hlocalhost    -uroot     -p51主机的密码

3、修改root密码 

说明工作:为数据库管理员root用户密码的安全,可以定期修改密码(比如每隔10天修改一次密码)
注意:修改密码,必须要知道旧密码,才能设置新密码

(1) 使用alter user 修改 :数据库管理员连接服务后 修改自己的登陆密码 

(2) mysqladmin修改 (操作系统管理员 修改本机数据库服务的登陆密码)
        ]# mysqladmin  -uroot    -p旧密码   password  新密码

(3) (交互式)隐藏旧密码和新密码,根据提示输入密码
        ]# mysqladmin  -uroot    -p   password
第一次提示 输入旧密码
第二次提示 输入新密码  (新密码 要服务密码策略要求)

四、安装图形软件

在数据库服务器安装图形软件 ,通过连接图形软件,对数据库做管理

要求:在IP地址192.168.4.50主机安装phpmyadmin软件

   在host50主机做如下配置:

步骤一:安装phpmyadmin软件。

1) 部署phpmyadmin运行环境 LAP  (L 指的是 linux 系统  A 指的是apache   P 指的是PHP)

2) 安装phpmyadmin软件

3)  修改配置文件 :  修改phpmyadmin软件的配置文件

[root@host50 ~]# yum -y install httpd php  php-mysql 

[root@host50 ~]# systemctl  start httpd  ; systemctl  enable httpd

[root@host50 mysql]tar -xf phpMyAdmin-2.11.11-all-languages.tar.gz 

[root@host50 mysql]# mv phpMyAdmin-2.11.11-all-languages /var/www/html/phpmyadmin

[root@host50 mysql]# cd /var/www/html/phpmyadmin

[root@host50 phpmyadmin]cp config.sample.inc.php  config.inc.php  创建主配置文件 

vim +17 config.inc.php  #在' '号里添加plj123

        $cfg['blowfish_secret'] = 'plj123';

步骤二:客户端通过访问phpmyadmin软件管理数据库。

  打开真机的浏览器输入

  访问的网址  http://192.168.4.50/phpmyadmin

  用户名   root

  密码     root用户密码

五、数据库必备命令的使用

连接数据库服务器后使用的命令  在 mysql>  状态下执行的命令

1、基本操作

mysql> show  databases;         # 显示服务器上已有的库(文件夹)

mysql> select user();                # 显示当前登录的用户名和客户端地址
+----------------+
| user()         |
+----------------+
| root@localhost |                        # 数据库管理员root 用户本机登录
+----------------+

mysql> select    version();          # 显示数据库服务软件的版本号

mysql> select database();           # 显示当前所在的库
+------------+
| database() |
+------------+
| NULL         |                             # 表示没有在任何库里  在数据库目录里/var/lib/mysql
+------------+

mysql> use mysql;                   # 进入到mysql库里

mysql> show tables;                  # 显示所在库下已有的表 (表就是用来存数据的文件 )

mysql> exit;                                   # 断开连接(退回到系统命令行)

2、 相关参数

3、连接数据库服务的连接方式:

  •         1.命令行连接( mysql命令)
    •         2.访问安装的图形软件连接
      •         3.编写脚本连接(如 : python连接脚本  PHP连接脚本 java连接脚本)

 五、查询 select    

练习所用文件https://download.csdn.net/download/weixin_56619848/85566102

1、查询命令格式:

select  字段名列表  from  库名.表名;                                 #查看表里的所有行
select  字段名列表  from  库名.表名  where   查询条件 ;      #只查看与条件匹配的行

2、select 命令用法:

        1、查看常量

  1. mysql> select 3;
  2. +---+
  3. | 3 |
  4. +---+
  5. | 3 |
  6. +---+
  7. 1 row in set (0.00 sec)
  8. mysql> select 5;
  9. +---+
  10. | 5 |
  11. +---+
  12. | 5 |
  13. +---+
  14. 1 row in set (0.00 sec)

        2、查看mysql环境变量

  1. mysql> select @@version;
  2. +-----------+
  3. | @@version |
  4. +-----------+
  5. | 5.7.17 |
  6. +-----------+
  7. 1 row in set (0.00 sec)

        3、查看计算结果

  1. mysql> select 3+5;
  2. +-----+
  3. | 3+5 |
  4. +-----+
  5. | 8 |
  6. +-----+
  7. 1 row in set (0.00 sec)

        4、查询时使用函数

  1. mysql> select count(*) from tarena.user; # 统计表的行数
  2. +----------+
  3. | count(*) |
  4. +----------+
  5. | 23 |
  6. +----------+
  7. 1 row in set (0.00 sec)

        练习环境准备

[root@host50 ~]# mysql  -hlocalhost  -u用户名  -p密码   /root/tarena.sql        #导入外部数据库文件

  1. mysql> show databases;
  2. +--------------------+
  3. | Database |
  4. +--------------------+
  5. | information_schema |
  6. | mysql |
  7. | performance_schema |
  8. | studb |
  9. | sys |
  10. | tarena |
  11. +--------------------+
  12. 6 rows in set (0.00 sec)
  13. mysql> use tarena;
  14. Reading table information for completion of table and column names
  15. You can turn off this feature to get a quicker startup with -A
  16. Database changed
  17. mysql> show tables;
  18. +------------------+
  19. | Tables_in_tarena |
  20. +------------------+
  21. | departments |
  22. | employees |
  23. | salary |
  24. | user |
  25. +------------------+
  26. 4 rows in set (0.00 sec)
  27. mysql> desc tarena.user;
  28. +----------+-------------+------+-----+---------+----------------+
  29. | Field | Type | Null | Key | Default | Extra |
  30. +----------+-------------+------+-----+---------+----------------+
  31. | id | int(11) | NO | PRI | NULL | auto_increment |
  32. | name | char(20) | YES | | NULL | |
  33. | password | char(1) | YES | | NULL | |
  34. | uid | int(11) | YES | | NULL | |
  35. | gid | int(11) | YES | | NULL | |
  36. | comment | varchar(50) | YES | | NULL | |
  37. | homedir | varchar(80) | YES | | NULL | |
  38. | shell | char(30) | YES | | NULL | |
  39. +----------+-------------+------+-----+---------+----------------+
  40. 8 rows in set (0.00 sec)
  41. mysql> select * from tarena.user;
  42. mysql>
  43. id 行号
  44. name 用户名
  45. password 密码占位符x
  46. uid 用户的uid号
  47. gid 用户的组id号
  48. comment 用户的说明信息
  49. homedir 用户的家目录
  50. shell 用户使用的的shell

        5、只查看表里的某个表头

  1. mysql> select name from tarena.user; # 查一个表头
  2. mysql> select name ,uid from tarena.user; # 查多个表头
  3. mysql> select * from tarena.user; # 查看所有表头
  4. mysql> select * from tarena.user where id = 1; # 加条件查

3、常用的筛选条件有: 

        1.给查找到的数据定义别名 使用 as  或 空格

mysql> select name , homedir  from tarena.user;

mysql> select name as 用户名 , homedir 家目录 from tarena.user;

        2.给查找到的数据拼接   concat()

mysql> select name,uid from tarena.user;

mysql> select concat(name,"-",uid) from tarena.user;

mysql> select concat(name,"-",uid)  as  用户信息  from tarena.user;

        3.查询的数据有重复时 ,不显示重复     distinct  字段名列表

mysql> select shell from  tarena.user;

mysql> select distinct shell from  tarena.user;

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

| shell          |

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

| /bin/bash      |

| /sbin/nologin  |

| /bin/sync      |

| /sbin/shutdown |

| /sbin/halt     |

| /bin/false     |

| NULL           |

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

         4.数值比较

符号=!=>>=<<=
相等不相等大于大于等于小于小于等于
  1. mysql> select id,name,uid,gid from tarena.user where id = 3;
  2. +----+--------+------+------+
  3. | id | name | uid | gid |
  4. +----+--------+------+------+
  5. | 3 | daemon | 2 | 2 |
  6. +----+--------+------+------+
  7. 1 row in set (0.00 sec)
  8. mysql> select id,name,uid,gid from tarena.user where id < 3;
  9. +----+------+------+------+
  10. | id | name | uid | gid |
  11. +----+------+------+------+
  12. | 1 | root | 0 | 0 |
  13. | 2 | bin | 1 | 1 |
  14. +----+------+------+------+
  15. 2 rows in set (0.00 sec)
  16. mysql> select id,name,uid,gid from tarena.user where id <= 3;
  17. +----+--------+------+------+
  18. | id | name | uid | gid |
  19. +----+--------+------+------+
  20. | 1 | root | 0 | 0 |
  21. | 2 | bin | 1 | 1 |
  22. | 3 | daemon | 2 | 2 |
  23. +----+--------+------+------+
  24. 3 rows in set (0.00 sec)

        5、字符比较        符号    =    !=

  1. mysql> select name from tarena.user where name="apache" ;
  2. mysql> select name , shell from tarena.user where shell != "/bin/bash";

        6、空和非空

空           is  null         表头下没有数据
非空       is  not null    表头下有数据 

mysql服务  使用关键字  null  或 NULL  表示没有数据

  1. mysql> select id, name from tarena.user where name is null; # 查看没有名字的用户和行号 都有名字查询结果是empty
  2. mysql> insert into tarena.user(name) values(null) ; # 添加用户没给名字
  3. mysql> insert into tarena.user(name) values(null) ; # 添加用户没给名字
  4. mysql> select id, name from tarena.user where name is null; # 查看没有名字的用户和行号
  5. +----+------+
  6. | id | name |
  7. +----+------+
  8. | 28 | NULL |
  9. | 29 | NULL |
  10. +----+------+

mysql> insert into tarena.user(id,name) values(71,"");     # 零个字符

mysql> insert into tarena.user(id,name) values(72,"null");   # 是普通字母

mysql> insert into tarena.user(id,name) values(73,NULL);  #  表示空

mysql> insert into tarena.user(id,name) values(74,null);   # 表示空

        7、范围匹配条件

                        in   、                                                         # 在

                        not  in  、                                                  # 不在

                        between  num1   and    num2                  # 在...和...之间

  1. mysql> select name , uid from tarena.user where uid in (10 , 20 , 30 , 50);
  2. Empty set (0.00 sec)
  3. mysql> select name , uid from tarena.user where uid in (1 , 3 , 5 , 7);
  4. +------+------+
  5. | name | uid |
  6. +------+------+
  7. | bin | 1 |
  8. | adm | 3 |
  9. | sync | 5 |
  10. | halt | 7 |
  11. +------+------+
  12. mysql> select name , shell from tarena.user where shell not in ("/bin/bash","/sbin/nologin");
  13. +----------+----------------+
  14. | name | shell |
  15. +----------+----------------+
  16. | sync | /bin/sync |
  17. | shutdown | /sbin/shutdown |
  18. | halt | /sbin/halt |
  19. | mysql | /bin/false |
  20. +----------+----------------+
  21. mysql> select id, name,uid from tarena.user where id between 10 and 20 ;
  22. +----+-----------------+------+
  23. | id | name | uid |
  24. +----+-----------------+------+
  25. | 10 | operator | 11 |
  26. | 11 | games | 12 |
  27. | 12 | ftp | 14 |
  28. | 13 | nobody | 99 |
  29. | 14 | systemd-network | 192 |
  30. | 15 | dbus | 81 |
  31. | 16 | polkitd | 999 |
  32. | 17 | sshd | 74 |
  33. | 18 | postfix | 89 |
  34. | 19 | chrony | 998 |
  35. | 20 | rpc | 32 |
  36. +----+-----------------+------+
  37. 11 rows in set (0.00 sec)

        8、模糊匹配条件

where  字段名   like  ‘表达式’

 统配符号: 

  _          # 表示 1个字符

  %         # 表示零个或多个字符

  1. mysql> select name from tarena.user where name like "_ _ _"; # 找名字必须是3个字符的 (没有空格挨着敲)
  2. +------+
  3. | name |
  4. +------+
  5. | bin |
  6. | adm |
  7. | ftp |
  8. | rpc |
  9. | plj |
  10. | bob |
  11. +------+
  12. 6 rows in set (0.00 sec)
  13. mysql> select name from tarena.user where name like "_ _ _ _"; 找名字必须是4个字符的(没有空格挨着敲)
  14. +------+
  15. | name |
  16. +------+
  17. | root |
  18. | sync |
  19. | halt |
  20. | mail |
  21. | dbus |
  22. | sshd |
  23. | null |
  24. +------+
  25. 7 rows in set (0.00 sec)
  26. mysql> select name from tarena.user where name like "a%"; 找名字以字母a开头的(没有空格挨着敲)
  27. 查找名字等于等于4个字符的
  28. mysql> select name from tarena.user where name like "%o%";(没有空格挨着敲)
  29. +------+
  30. | name |
  31. +------+
  32. | root |
  33. +------+
  34. mysql> select name from tarena.user where name like "r%t";(没有空格挨着敲)
  35. +------+
  36. | name |
  37. +------+
  38. | root |
  39. +------+

        9、正则匹配

使用正则表达式做判断条件        

  格式:   字段名 regexp  '正则表达式'

        ^ 匹配行首

        $ 匹配行尾

        [] 匹配范围内任意一个

        *  前边的表达式出现零次或多次

        |  或者

mysql> insert into  tarena.user(name)values("yaya9");

mysql> insert into  tarena.user(name)values("6yaya");

mysql> insert into  tarena.user(name)values("ya7ya");

mysql> insert into  tarena.user(name)values("yay8a");

  1. mysql> select name from tarena.user where name regexp "[0-9]";
  2. +-------+
  3. | name |
  4. +-------+
  5. | yaya9 |
  6. | 6yaya |
  7. | ya7ya |
  8. | yay8a |
  9. +-------+
  10. 4 rows in set (0.00 sec)
  11. mysql> select name from tarena.user where name regexp "^[0-9]";
  12. +-------+
  13. | name |
  14. +-------+
  15. | 6yaya |
  16. +-------+
  17. 1 row in set (0.00 sec)
  18. mysql> select name from tarena.user where name regexp "[0-9]$";
  19. +-------+
  20. | name |
  21. +-------+
  22. | yaya9 |
  23. +-------+
  24. 1 row in set (0.00 sec)
  25. mysql>
  26. mysql> select name from tarena.user where name regexp "^r";
  27. +---------+
  28. | name |
  29. +---------+
  30. | root |
  31. | rpc |
  32. | rpcuser |
  33. +---------+
  34. 3 rows in set (0.00 sec)
  35. mysql> select name from tarena.user where name regexp "t$";
  36. +------+
  37. | name |
  38. +------+
  39. | root |
  40. | halt |
  41. +------+
  42. 2 rows in set (0.00 sec)
  43. mysql>
  44. mysql> select name from tarena.user where name regexp "^r|t$";
  45. +---------+
  46. | name |
  47. +---------+
  48. | root |
  49. | halt |
  50. | rpc |
  51. | rpcuser |
  52. +---------+
  53. 4 rows in set (0.00 sec)
  54. mysql> select name from tarena.user where name regexp "^r.*t$";
  55. +------+
  56. | name |
  57. +------+
  58. | root |
  59. +------+
  60. 1 row in set (0.00 sec)
  61. mysql>

        10、逻辑匹配

就是有多个判断条件

逻辑与   and  &&        多个判断条件必须同时成立

逻辑或   or    ||         多个判断条件其中某个条件成立即可

逻辑非   not   !          取反

  1. mysql> select name,shell from tarena.user where shell = "/bin/bash";
  2. +------+-----------+
  3. | name | shell |
  4. +------+-----------+
  5. | root | /bin/bash |
  6. | plj | /bin/bash |
  7. +------+-----------+
  8. 2 rows in set (0.01 sec)
  9. mysql> select name,shell from tarena.user where shell != "/bin/bash"; # 取反
  10. mysql> select name,shell from tarena.user where not shell = "/bin/bash"; # not 也是取反,要放在表达式的前边
  11. mysql> select id , name from tarena.user where id between 10 and 20 ;
  12. +----+-----------------+
  13. | id | name |
  14. +----+-----------------+
  15. | 10 | operator |
  16. | 11 | games |
  17. | 12 | ftp |
  18. | 13 | nobody |
  19. | 14 | systemd-network |
  20. | 15 | dbus |
  21. | 16 | polkitd |
  22. | 17 | sshd |
  23. | 18 | postfix |
  24. | 19 | chrony |
  25. | 20 | rpc |
  26. +----+-----------------+
  27. 11 rows in set (0.00 sec)
  28. mysql> select id , name from tarena.user where not id between 10 and 20 ; 取反

         11、()  提高优先级

                作用:改变执行顺序

  1. mysql> select 2 + 3 ;
  2. +-------+
  3. | 2 + 3 |
  4. +-------+
  5. | 5 |
  6. +-------+
  7. 1 row in set (0.00 sec)
  8. mysql> select 2 + 3 * 5;
  9. +-------------+
  10. | 2 + 3 * 5 |
  11. +-------------+
  12. | 17 |
  13. +-------------+
  14. 1 row in set (0.00 sec)
  15. mysql> select (2 + 3) * 5;
  16. +---------------+
  17. | (2 + 3) * 5 |
  18. +---------------+
  19. | 25 |
  20. +---------------+
  21. 1 row in set (0.00 sec)

        逻辑匹配什么时候需要加()

逻辑与and  的优先级要高于逻辑或 or 

如果在筛选条件里既有and 又有 or   先判断and 再判断or 

既有and又有or  优先匹配and 

  1. mysql> select name , uid from tarena.user where name = "root" or name = "bin" and uid = 1 ;
  2. +------+------+
  3. | name | uid |
  4. +------+------+
  5. | root | 0 |
  6. | bin | 1 |
  7. +------+------+
  8. 2 rows in set (0.00 sec)

         () 提高执行的优先级

  1. mysql> select name , uid from tarena.user where name = "root" or name = "bin" and uid = 1 ; 没加() 的查询结果
  2. +------+------+
  3. | name | uid |
  4. +------+------+
  5. | root | 0 |
  6. | bin | 1 |
  7. +------+------+
  8. 2 rows in set (0.00 sec)
  9. mysql> select name , uid from tarena.user where (name = "root" or name = "bin") and uid = 1 ; 加了()的查询结果
  10. +------+------+
  11. | name | uid |
  12. +------+------+
  13. | bin | 1 |
  14. +------+------+
  15. 1 row in set (0.00 sec)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/115205
推荐阅读
相关标签
  

闽ICP备14008679号