数据库概述、部署MySQL服务、必备命令 、密码管理、安装图形软件、SELECT语法 、筛选条件

目录

1 案例1:构建MySQL服务器

1.1 问题

1.2 方案

1.3 步骤

2 案例2:密码管理

2.1 问题

2.2 步骤

3 案例3:安装图形软件

3.1 问题

3.2 方案

3.3 步骤

4 案例4:筛选条件

4.1 问题

4.2 方案

4.3 步骤


1 案例1:构建MySQL服务器

1.1 问题

  1. 在IP地址192.168.88.50主机和192.168.88.51主机上部署mysql服务
  2. 练习必备命令的使用

1.2 方案

准备2台虚拟机,要求如下:

配置yum源、关闭selinux和防火墙,如果忘记了请自行补习前边课程的知识或查看今天讲课的PPT,谢谢!!!

1.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:安装软件

命令操作如下所示:

mysql-server 提供服务软件

mysql 提供命令软件

    [root@mysql50 ~]# yum -y install mysql-server  mysql  //安装提供服务和命令软件//软件已安装[root@mysql50 ~]# rpm -q mysql-server  mysqlmysql-server-8.0.26-1.module+el8.4.0+652+6de068a7.x86_64mysql-8.0.26-1.module+el8.4.0+652+6de068a7.x86_64[root@mysql50 ~]#[root@mysql50 ~]# rpm -qi mysql-server  //查看软件信息Name        : mysql-serverVersion     : 8.0.26Release     : 1.module+el8.4.0+652+6de068a7Architecture: x86_64Install Date: 2023年03月13日 星期一 12时09分38秒Group       : UnspecifiedSize        : 126674945License     : GPLv2 with exceptions and LGPLv2 and BSDSignature   : RSA/SHA256, 2021年09月22日 星期三 07时27分14秒, Key ID 15af5dac6d745a60Source RPM  : mysql-8.0.26-1.module+el8.4.0+652+6de068a7.src.rpmBuild Date  : 2021年09月22日 星期三 07时06分32秒Build Host  : ord1-prod-x86build005.svc.aws.rockylinux.orgRelocations : (not relocatable)Packager    : infrastructure@rockylinux.orgVendor      : RockyURL         : http://www.mysql.comSummary     : The MySQL server and related filesDescription :MySQL is a multi-user, multi-threaded SQL database server. MySQL is aclient/server implementation consisting of a server daemon (mysqld)and many different client programs and libraries. This package containsthe MySQL server and some accompanying files and directories.[root@mysql50 ~]# systemctl  start  mysqld  //启动服务[root@mysql50 ~]# systemctl  enable  mysqld  //开机运行[root@mysql50 ~]# systemctl  enable mysqld  //设置服务开机运行Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.

步骤二:查看端口号和进程名

命令操作如下所示:

    [root@mysql50 ~]# ps -C mysqld   //仅查看mysqld进程PID TTY          TIME CMD21912 ?        00:00:00 mysqld[root@mysql50 ~]#[root@mysql50 ~]# ss -utnlp  | grep 3306  查看端口tcp   LISTEN 0      70                 *:33060            *:*    users:(("mysqld",pid=21912,fd=22))tcp   LISTEN 0      128                *:3306             *:*    users:(("mysqld",pid=21912,fd=25))[root@mysql50 ~]# 或[root@mysql50 ~]# netstat  -utnlp  | grep  mysqld   //仅查看mysqld进程tcp6       0      0 :::33060   :::*      LISTEN      21912/mysqld        tcp6       0      0 :::3306    :::*     LISTEN      21912/mysqld        [root@mysql50 ~]#

说明:

MySQL 8中的3306端口是MySQL服务默认使用的端口,主要用于建立客户端与MySQL服务器之间的连接。

MySQL 8中的33060端口是MySQL Shell默认使用的管理端口,主要用于执行各种数据库管理任务。远程管理MySQL服务器:使用MySQL Shell连接到MySQL服务,并在远程管理控制台上执行各种数据库管理操作,例如创建、删除、备份和恢复数据库等。

步骤三:连接服务。

说明: 数据库管理员本机登陆默认没有密码

命令操作如下所示:

     [root@mysql50 ~]# mysql  //连接服务Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 8Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>  登陆后的提示符mysql> exit //断开连接Bye[root@mysql50 ~]#

步骤四:配置第2台数据库服务器MySQL51。

命令操作如下所示:

    [root@mysql51 ~]# yum -y install  mysql-server mysql[root@mysql51 ~]# systemctl  start mysqld[root@mysql51 ~]# systemctl  enable mysqld[root@mysql51 ~]# mysqlmysql> exitBye[root@mysql51 ~]#

步骤五:练习必备命令的使用(在mysql50主机完成练习)

命令操作如下所示:

    mysql> select version() ;  //查看数据库软件版本+-----------+| version() |+-----------+| 8.0.26    |+-----------+1 row in set (0.00 sec)mysql> select user() ; //查看登陆的用户和客户端地址 +----------------+| user()         |+----------------+| root@localhost | 管理员root本机登陆+----------------+1 row in set (0.00 sec) mysql> show databases; //查看已有的库+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.00 sec)mysql>

说明:

默认4个库 不可以删除,存储的是 服务运行时加载的不同功能的程序和数据。

information_schema:是MySQL数据库提供的一个虚拟的数据库,存储了MySQL数据库中的相关信息,比如数据库、表、列、索引、权限、角色等信息。它并不存储实际的数据,而是提供了一些视图和存储过程,用于查询和管理数据库的元数据信息。

mysql:存储了MySQL服务器的系统配置、用户、账号和权限信息等。它是MySQL数据库最基本的库,存储了MySQL服务器的核心信息。

performance_schema:存储了MySQL数据库的性能指标、事件和统计信息等数据,可以用于性能分析和优化。

sys:是MySQL 8.0引入的一个新库,它基于information_schema和performance_schema视图,提供了更方便、更直观的方式来查询和管理MySQL数据库的元数据和性能数据。

    mysql> select database();  //查看当前在那个库里  null 表示没有在任何库里+------------+| database() |+------------+| NULL       |+------------+1 row in set (0.00 sec)mysql> use mysql ; //切换到mysql库mysql> select database();  // 再次显示所在的库+------------+| database() |+------------+| mysql      |+------------+1 row in set (0.00 sec)mysql> show tables;  //显示库里已有的表+------------------------------------------------------+| Tables_in_mysql                                      |+------------------------------------------------------+| columns_priv                                         || component                                            || db                                                   || default_roles                                        || engine_cost                                          || func                                                 || general_log                                          || global_grants                                        || gtid_executed                                        || help_category                                        || help_keyword                                         || help_relation                                        || help_topic                                           || innodb_index_stats                                   || innodb_table_stats                                   || password_history                                     || plugin                                               || procs_priv                                           || proxies_priv                                         || replication_asynchronous_connection_failover         || replication_asynchronous_connection_failover_managed || replication_group_configuration_version              || replication_group_member_actions                     || role_edges                                           || server_cost                                          || servers                                              || slave_master_info                                    || slave_relay_log_info                                 || slave_worker_info                                    || slow_log                                             || tables_priv                                          || time_zone                                            || time_zone_leap_second                                || time_zone_name                                       || time_zone_transition                                 || time_zone_transition_type                            || user                                                 |+------------------------------------------------------+37 rows in set (0.00 sec)mysql> exit ;  断开连接Bye[root@mysql50 ~]#  

2 案例2:密码管理

2.1 问题

1) 在192.168.88.50主机做如下练习:

  1. 设置root密码为tarena
  2. 修改root密码为123qqq…A
  3. 破解root密码为NSD2023…a

2.2 步骤

实现此案例需要按照如下步骤进行。

步骤一:设置root密码为tarena

命令操作如下所示:

2行输出是警告而已不用关心

     [root@mysql50 ~]# mysqladmin  -uroot -p  password "tarena"Enter password: //敲回车mysqladmin: [Warning] Using a password on the command line interface can be insecure.Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.[root@mysql50 ~]# mysql //无密码连接被拒绝ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)[root@mysql50 ~]#[root@mysql50 ~]# mysql -uroot –ptarena  //连接时输入密码mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 14Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 登陆成功

步骤二:修改root密码为123qqq…A

命令操作如下所示:

     [root@mysql50 ~]# mysqladmin  -uroot -ptarena password "123qqq...A"  //修改密码mysqladmin: [Warning] Using a password on the command line interface can be insecure.Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.[root@mysql50 ~]# mysql -uroot –ptarena //旧密码无法登陆mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)[root@mysql50 ~]# mysql -uroot -p123qqq...A  //新密码登陆mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 18Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> 登陆成功

步骤三:破解root密码为NSD2023…a

说明:在mysql50主机做此练习

命令操作如下所示:

     [root@mysql50 ~]# mysql -uroot -pNSD2023...a  //破解前登陆失败mysql: [Warning] Using a password on the command line interface can be insecure.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)[root@mysql50 ~]# vim /etc/my.cnf.d/mysql-server.cnf  //修改主配置文件[mysqld]skip-grant-tables  //手动添加此行 作用登陆时不验证密码:wq[root@mysql50 ~]# systemctl  restart mysqld //重启服务 作用让服务以新配置运行[root@mysql50 ~]# mysql //连接服务Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 7Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.//查看存放密码的表头名Mysql> desc  mysql.user ;//把mysql库下user表中 用户root的密码设置为无;mysql> update mysql.user set authentication_string="" where user="root";Query OK, 1 row affected (0.05 sec)Rows matched: 1  Changed: 1  Warnings: 0mysql> exit; 断开连接Bye[root@mysql50 ~]# vim  /etc/my.cnf.d/mysql-server.cnf  编辑配置文件[mysqld]#skip-grant-tables   //注释添加的行:wq[root@mysql50 ~]# systemctl  restart mysqld //重启服务 作用让注释生效[root@localhost ~]# mysql  无密码登陆Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 8Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.//设置root用户本机登陆密码mysql> alter user root@"localhost" identified by "NSD2023...a";Query OK, 0 rows affected (0.00 sec)mysql> exit 断开连接Bye[root@localhost ~]# mysql  不输密码无法登陆ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)[root@localhost ~]# mysql -uroot -pNSD2023...a  使用破解的密码登陆mysql: [Warning] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 10Server version: 8.0.26 Source distributionCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>mysql> 登陆成功mysql> show databases; 查看已有的库+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                |+--------------------+4 rows in set (0.01 sec)

3 案例3:安装图形软件

3.1 问题

  • 在IP地址192.168.88.50主机安装phpmyadmin软件
  • 客户端通过访问phpmyadmin软件管理数据库

3.2 方案

把用到的软件拷贝的虚拟机mysql50里

在mysql50主机,首先配置运行环境LNP,然后安装phpmyadmin软件,最后打开真机的浏览器输入phpmyadmin的网址访问。

3.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:部署运行环境LNP

命令操作如下所示:

    gcc 源码包编译工具unzip 提供解压.zip 压缩包命令make 源码软件编译命令pcre-devel 支持正则表达式zlib-devel 提供数据压缩命令[root@mysql50 ~]# yum -y install gcc unzip make pcre-devel zlib-devel //安装依赖[root@mysql50 ~]# tar -xf nginx-1.22.1.tar.gz //解压源码[root@mysql50 ~]# cd nginx-1.22.1 //进源码目录[root@mysql50 nginx-1.22.1]# ./configure //配置[root@mysql50 nginx-1.22.1]# make &&  make  install //编译并安装[root@mysql50 nginx-1.22.1]# ls /usr/local/nginx/   //查看安装目录conf  html  logs  sbin[root@mysql50 nginx-1.22.1]# vim /usr/local/nginx/conf/nginx.conf //修改主配置文件43         location / {44             root   html;45             index  index.php index.html index.htm; //添加首页名46         }65         location ~ \.php$ {  //访问.php的请求转给本机的9000端口66             root           html;67             fastcgi_pass   127.0.0.1:9000;68             fastcgi_index  index.php;69            #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;70             include        fastcgi.conf;  //保存nginx变量文件71         }:wq[root@mysql50 nginx-1.22.1]# /usr/local/nginx/sbin/nginx //启动服务[root@mysql50 nginx-1.22.1]# netstat  -utnlp  | grep 80  //查看端口tcp        0      0 0.0.0.0:80     0.0.0.0:*     LISTEN      42182/nginx: master [root@mysql50 nginx-1.22.1]#php 解释php代码php-devel php扩展包 php-mysqlnd 连接mysql命令包php-json 支持json代码php-fpm 提供fpm服务[root@mysql50 ~]# yum -y install php  php-devel php-mysqlnd php-json php-fpm //安装php软件[root@mysql50 ~]# vim /etc/php-fpm.d/www.conf //修改主配置文件38 ;listen = /run/php-fpm/www.sock39 listen = 127.0.0.1:9000  //非socket方式运行,不是必须的:wq[root@mysql50 ~]# systemctl  start php-fpm  //启动服务[root@mysql50 ~]# netstat  -utnlp  | grep 9000  //查看端口tcp        0      0 127.0.0.1:9000     0.0.0.0:*    LISTEN    67251/php-fpm: mast [root@mysql50 ~]#[root@mysql50 ~]# vim /usr/local/nginx/html/test.php //编写php脚本<?php$name = "plj" ;echo $name ;echo "\n" ;?>:wq[root@mysql50 ~]# curl  http://localhost/test.php  //访问脚本plj[root@mysql50 ~]#

步骤二:安装phpmyadmin软件

命令操作如下所示:

    [root@mysql50 ~]# unzip phpMyAdmin-5.2.1-all-languages.zip  //解压[root@mysql50 ~]# mv phpMyAdmin-5.2.1-all-languages /usr/local/nginx/html/phpmyadmin  //移动并改名 ,为了便于访问[root@mysql50 ~]# cd /usr/local/nginx/html/phpmyadmin/  //进软件目录[root@mysql50 phpmyadmin]# cp config.sample.inc.php config.inc.php //创建主配置文件[root@mysql50 phpmyadmin]# vim config.inc.php //修改主配置文件//定义cookies验证码16 $cfg['blowfish_secret'] = 'plj123'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! *///管理本机的数据库服务30 $cfg['Servers'][$i]['host'] = 'localhost';:wq[root@mysql50 phpmyadmin]# setenforce 0  //关闭selinux[root@mysql50 phpmyadmin]# systemctl  stop firewalld //关闭防火墙

步骤三:客户端访问

命令操作如下所示:

    http://192.168.88.50/phpmyadmin 打开浏览器输入此网址 效果如图-1所示

说明:输入数据库管理员root 和 密码 成功后如图-2所示

4 案例4:筛选条件

4.1 问题

  1. 准备练习环境
  2. 练习数值比较
  3. 练习范围匹配
  4. 练习模糊匹配
  5. 练习正则匹配
  6. 练习逻辑比较
  7. 练习字符比较/空/非空
  8. 练习别名/去重/合并

4.2 方案

拷贝tarena.sql文件到mysql50主机里,然后使用tarena.sql创建练习使用的数据。

4.3 步骤

实现此案例需要按照如下步骤进行。

步骤一:准备练习环境

    //拷贝tarena.sql 拷贝到 mysql50主机的/root 下[openeuler@server1 ~]$ scp /linux-soft/s3/tarena.sql  root@192.168.88.50:/root/root@192.168.88.50's password: tarena.sql    100%  284KB 171.9MB/s   00:00 //连接mysql50主机                                                                                    [openeuler@server1 ~]$ ssh root@192.168.88.50root@192.168.88.50's password: Last login: Tue May 23 10:59:57 2023 from 192.168.88.254//恢复数据[root@mysql50 ~]# mysql -uroot  -pNSD2023...a < /root/tarena.sqlmysql: [Warning] Using a password on the command line interface can be insecure.//连接服务[root@mysql50 ~]# mysql -uroot  -pNSD2023...amysql> show databases; //查看库+--------------------+| Database           |+--------------------+| information_schema || mysql              || performance_schema || sys                || tarena             | 恢复的库+--------------------+5 rows in set (0.00 sec)mysql> use tarena; //进入库Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;  //查看表+------------------+| Tables_in_tarena |+------------------+| departments      | 部门表| employees        | 员工表| salary           | 工资表| user             | 用户表+------------------+4 rows in set (0.00 sec)

使用user 表做查询练习

user表里存储的是 系统用户信息( 就是 /etc/passwd 文件的内容)

    mysql> desc tarena.user;  //查看表头+----------+-------------+------+-----+---------+----------------+| Field    | Type        | Null | Key | Default | Extra          |+----------+-------------+------+-----+---------+----------------+| id       | int(11)     | NO   | PRI | NULL    | auto_increment |行号| name     | char(20)    | YES  |     | NULL    |                  |用户名| password | char(1)     | YES  |     | NULL    |                  |密码占位符| uid      | int(11)     | YES  |     | NULL    |                  | uid号| gid      | int(11)     | YES  |     | NULL    |                  | gid号| comment  | varchar(50) | YES  |     | NULL    |                 | 描述信息| homedir  | varchar(80) | YES  |     | NULL    |                 | 家目录| shell    | char(30)    | YES  |     | NULL    |                  | 解释器+----------+-------------+------+-----+---------+----------------+8 rows in set (0.00 sec)

elect命令格式演示

语法格式1 SELECT 字段列表 FROM 库名.表名;

语法格式2 SELECT 字段列表 FROM 库名.表名 where 筛选条件;

    mysql> select name from  tarena.user;        //查看一个表头mysql> select name ,uid from  tarena.user;    //查看多个表头mysql> select *  from  tarena.user;        //查看所有表头

加筛选条件

    mysql> select *  from  tarena.user where  name = “root”;        //查找root用户信息 +----+------+----------+------+------+---------+---------+-----------+| id | name | password | uid  | gid  | comment | homedir | shell     |+----+------+----------+------+------+---------+---------+-----------+|  1 | root | x        |    0 |    0 | root    | /root   | /bin/bash |+----+------+----------+------+------+---------+---------+-----------+1 row in set (0.00 sec)mysql> mysql> select *  from  tarena.user where  id = 2 ;        //查找第2行用户信息+----+------+----------+------+------+---------+---------+--------------+| id | name | password | uid  | gid  | comment | homedir | shell         |+----+------+----------+------+------+---------+---------+--------------+|  2 | bin   | x        |    1 |   1   | bin      | /bin   | /sbin/nologin |+----+------+----------+------+------+---------+---------+--------------+1 row in set (0.00 sec)

步骤二:练习数值比较

比较符号:

= != > >= < <=

相等 不相等 大于 大于等于 小于 小于等于

符号两边要是数字或数值类型的表头 符号左边与符号右边做比较

    //查看第3行的行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  id = 3;+----+--------+------+------+| id | name   | uid  | gid  |+----+--------+------+------+|  3 | daemon |    2 |    2 |+----+--------+------+------+1 row in set (0.00 sec)//查看前2行的行号用户名、uid、gid 四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  id < 3;+----+------+------+------+| id | name | uid  | gid  |+----+------+------+------+|  1 | root |    0 |    0 ||  2 | bin  |    1 |    1 |+----+------+------+------+2 rows in set (0.00 sec)//查看前3行的行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  id <= 3;+----+--------+------+------+| id | name   | uid  | gid  |+----+--------+------+------+|  1 | root   |    0 |    0 ||  2 | bin    |    1 |    1 ||  3 | daemon |    2 |    2 |+----+--------+------+------+3 rows in set (0.00 sec)//查看前uid号大于6000的行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  uid > 6000;+----+-----------+-------+-------+| id | name      | uid   | gid   |+----+-----------+-------+-------+| 22 | nfsnobody | 65534 | 65534 |+----+-----------+-------+-------+1 row in set (0.00 sec)//查看前uid号大于等于1000的行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  uid >= 1000;+----+-----------+-------+-------+| id | name      | uid   | gid   |+----+-----------+-------+-------+| 22 | nfsnobody | 65534 | 65534 || 24 | plj       |  1000 |  1000 |+----+-----------+-------+-------+2 rows in set (0.00 sec)//查看uid号和gid号相同的行 仅显示行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  uid = gid;+----+-----------------+-------+-------+| id | name            | uid   | gid   |+----+-----------------+-------+-------+|  1 | root            |     0 |     0 ||  2 | bin             |     1 |     1 ||  3 | daemon          |     2 |     2 || 13 | nobody          |    99 |    99 || 14 | systemd-network |   192 |   192 || 15 | dbus            |    81 |    81 || 17 | sshd            |    74 |    74 || 18 | postfix         |    89 |    89 || 20 | rpc             |    32 |    32 || 21 | rpcuser         |    29 |    29 || 22 | nfsnobody       | 65534 | 65534 || 23 | haproxy         |   188 |   188 || 24 | plj             |  1000 |  1000 || 25 | apache          |    48 |    48 || 26 | mysql           |    27 |    27 |+----+-----------------+-------+-------+15 rows in set (0.00 sec)//查看uid号和gid号不一样的行 仅显示行号、用户名、uid、gid  四个表头的值mysql> select  id,name,uid,gid  from  tarena.user where  uid != gid;+----+----------+------+------+| id | name     | uid  | gid  |+----+----------+------+------+|  4 | adm      |    3 |    4 ||  5 | lp       |    4 |    7 ||  6 | sync     |    5 |    0 ||  7 | shutdown |    6 |    0 ||  8 | halt     |    7 |    0 ||  9 | mail     |    8 |   12 || 10 | operator |   11 |    0 || 11 | games    |   12 |  100 || 12 | ftp      |   14 |   50 || 16 | polkitd  |  999 |  998 || 19 | chrony   |  998 |  996 |+----+----------+------+------+11 rows in set (0.00 sec)mysql>

步骤三:练习范围匹配

in (值列表) //在…里

not in (值列表) //不在…里

between 数字1 and 数字2 //在…之间

命令操作如下所示:

    //uid号表头的值 是 (1 , 3 , 5 , 7) 中的任意一个即可mysql> select name , uid  from  tarena.user where  uid  in (1 , 3 , 5 , 7);  +------+------+| name | uid  |+------+------+| bin  |    1 || adm  |    3 || sync |    5 || halt |    7 |+------+------+//shell 表头的的值 不是 "/bin/bash"或"/sbin/nologin" 即可mysql> select name , shell  from  tarena.user where  shell  not in ("/bin/bash","/sbin/nologin");+----------+----------------+| name     | shell          |+----------+----------------+| sync     | /bin/sync      || shutdown | /sbin/shutdown || halt     | /sbin/halt     || mysql    | /bin/false     |+----------+----------------+//id表头的值 在 10  到  20 之间即可 包括 10 和  20  本身mysql> select id , name , uid  from  tarena.user where id  between 10 and 20 ;+----+-----------------+------+| id | name            | uid  |+----+-----------------+------+| 10 | operator        |   11 || 11 | games           |   12 || 12 | ftp             |   14 || 13 | nobody          |   99 || 14 | systemd-network |  192 || 15 | dbus            |   81 || 16 | polkitd         |  999 || 17 | sshd            |   74 || 18 | postfix         |   89 || 19 | chrony          |  998 || 20 | rpc             |   32 |+----+-----------------+------+11 rows in set (0.00 sec)mysql> 

步骤四:练习模糊匹配

where 字段名 like "表达式";

通配符

_ 表示 1个字符

% 表示零个或多个字符

命令操作如下所示:

    //找名字必须是3个字符的 (没有空格挨着敲)mysql> select name from  tarena.user where  name like "___"; +------+| name |+------+| bin  || adm  || ftp  || rpc  || plj  || bob  |+------+6 rows in set (0.00 sec)//找名字必须是4个字符的(没有空格挨着敲)mysql> select name from  tarena.user where  name like "_ _ _ _"; +------+| name |+------+| root || sync || halt || mail || dbus || sshd || null |+------+7 rows in set (0.00 sec)//找名字以字母a开头的(没有空格挨着敲)mysql> select name from  tarena.user where  name like "a%";  //查找名字至少是4个字符的表达式mysql> select name from  tarena.user where  name like "%_ _ _ _%";(没有空格挨着敲)mysql> select name from  tarena.user where name  like "_ _%_ _";(没有空格挨着敲)mysql> select name from  tarena.user where name  like "_ _ _ _%";(没有空格挨着敲)

步骤五:练习正则匹配

格式:select 字段名列表 from 库名.表名 where字段名 regexp '正则表达式';

回顾shell课程学过的元字符(正则符号)

^ 匹配行首

$ 匹配行尾

[] 匹配范围内任意一个

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

| 或者

. 任意一个字符

命令操作如下所示:

    //添加有数字的名字insert into  tarena.user(name)values("yaya9");insert into  tarena.user(name)values("6yaya");insert into  tarena.user(name)values("ya7ya");insert into  tarena.user(name)values("yay8a");//查看名字里有数字的mysql> select name from  tarena.user where name regexp "[0-9]"; +-------+| name  |+-------+| yaya9 || 6yaya || ya7ya || yay8a |+-------+4 rows in set (0.00 sec)//查看名字以数字开头mysql> select name from  tarena.user where name regexp "^[0-9]"; +-------+| name  |+-------+| 6yaya |+-------+1 row in set (0.00 sec)//查看名字以数字结尾mysql> select name from  tarena.user where name regexp "[0-9]$"; +-------+| name  |+-------+| yaya9 |+-------+1 row in set (0.00 sec)mysql> //查看名字以r开头mysql> select name from  tarena.user where name regexp "^r"; +---------+| name    |+---------+| root    || rpc     || rpcuser |+---------+3 rows in set (0.00 sec)//查看名字以t结尾mysql> select name from  tarena.user where name regexp "t$"; +------+| name |+------+| root || halt |+------+2 rows in set (0.00 sec)mysql> //查看名字以r开头或t结尾mysql> select name from  tarena.user where name regexp "^r|t$"; +---------+| name    |+---------+| root    || halt    || rpc     || rpcuser |+---------+4 rows in set (0.00 sec)//名字r开头t结尾mysql> select name from  tarena.user where name regexp "^r.*t$"; +------+| name |+------+| root |+------+1 row in set (0.00 sec)mysql> 

步骤六:练习逻辑比较

多个判断条件

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

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

逻辑非 not (!) 取反

命令操作如下所示:

    //逻辑非例子,查看解释器不是/bin/bash 的mysql> select name,shell from tarena.user where  shell != "/bin/bash"; //not 也是取反  要放在表达式的前边mysql> select name,shell from tarena.user where  not  shell = "/bin/bash";//id值不在 10 到 20 之间 mysql> select id , name from tarena.user where not  id between 10 and 20 ;  //逻辑与 例子mysql> select name , uid from tarena.user where name="root" and uid = 1;      Empty set (0.00 sec)mysql> select name , uid from tarena.user where name="root" and uid = 0;+------+------+| name | uid  |+------+------+| root |    0 |+------+------+1 row in set (0.00 sec)//逻辑或 例子mysql> select name , uid from tarena.user where name = "root"  or  name = "bin"  or  uid = 1;+------+------+| name | uid  |+------+------+| root |    0 || bin  |    1 |+------+------+mysql>

() 提高优先级

    mysql> select   2  + 3 * 5 ; //使用默认计算顺序 先乘除后加减+------------+| 2  + 3 * 5 |+------------+|         17 |+------------+1 row in set (0.00 sec)mysql> select   (2  + 3 ) * 5 ; //先加法再乘法+---------------+| (2  + 3 ) * 5 |+---------------+|            25 |+---------------+1 row in set (0.00 sec)mysql>

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

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

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

    //没加() 的查询结果select name , uid from tarena.user  where name = "root" or name = "bin"  and uid = 1 ;  +------+------+| name | uid  |+------+------+| root |    0 || bin  |    1 |+------+------+2 rows in set (0.00 sec)//加()的查询结果select name , uid from tarena.user  where (name = "root" or name = "bin")  and uid = 1 ;  +------+------+| name | uid  |+------+------+| bin  |    1 |+------+------+1 row in set (0.00 sec)mysql>

步骤七:练习字符比较/空/非空

符号两边必须是字符 或字符类型的表头

= 相等比较

!= 不相等比较。

命令操作如下所示:

    //查看表里是否有名字叫apache的用户mysql> select  name  from  tarena.user where name="apache" ;+--------+| name   |+--------+| apache |+--------+1 row in set (0.00 sec)//输出解释器不是/bin/bash的用户名 及使用的解释器mysql> select  name , shell  from  tarena.user where shell != "/bin/bash";+-----------------+----------------+| name            | shell          |+-----------------+----------------+| bin             | /sbin/nologin  || daemon          | /sbin/nologin  || adm             | /sbin/nologin  || lp              | /sbin/nologin  || sync            | /bin/sync      || shutdown        | /sbin/shutdown || halt            | /sbin/halt     || mail            | /sbin/nologin  || operator        | /sbin/nologin  || games           | /sbin/nologin  || ftp             | /sbin/nologin  || nobody          | /sbin/nologin  || systemd-network | /sbin/nologin  || dbus            | /sbin/nologin  || polkitd         | /sbin/nologin  || sshd            | /sbin/nologin  || postfix         | /sbin/nologin  || chrony          | /sbin/nologin  || rpc             | /sbin/nologin  || rpcuser         | /sbin/nologin  || nfsnobody       | /sbin/nologin  || haproxy         | /sbin/nologin  || apache          | /sbin/nologin  || mysql           | /bin/false     |+-----------------+----------------+24 rows in set (0.00 sec)mysql>

空 is null 表头下没有数据

非空 is not null 表头下有数据

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

    //添加新行 仅给行中的id 表头和name表头赋值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);  //表示空//查看id表头值大于等于70  的行 仅显示行中 id表头 和  name 表头的值mysql> select id , name from  tarena.user where  id >= 71;+----+------+| id | name |+----+------+| 71 |      || 72 | null || 73 | NULL || 74 | NULL |+----+------+//查看name 表头没有数据的行 仅显示行中id表头 和  naeme 表头的值mysql> select id , name from  tarena.user where name is null;+----+------+| id | name |+----+------+| 28 | NULL || 29 | NULL || 73 | NULL || 74 | NULL |+----+------+//查看name 表头是0个字符的行, 仅显示行中id表头 和  naeme 表头的值mysql> select id , name from  tarena.user where name="";+----+------+| id | name |+----+------+| 71 |      |+----+------+1 row in set (0.00 sec)//查看name 表头值是null的行, 仅显示行中id表头 和  naeme 表头的值mysql> select id , name from  tarena.user where name="null";+----+------+| id | name |+----+------+| 72 | null |+----+------+1 row in set (0.00 sec)//查看name 表头有数据的行, 仅显示行中id表头 和  name 表头的值mysql> select id , name from  tarena.user where name is not null;+----+-----------------+| id | name            |+----+-----------------+|  1 | root            ||  2 | bin             ||  3 | daemon          ||  4 | adm             ||  5 | lp              |........| 27 | bob             || 71 |                 || 72 | null            |+----+-----------------+

步骤八:练习别名/去重/合并

命令操作如下所示:

    //定义别名使用   as  或  空格    mysql> select name , homedir  from tarena.user;mysql> select name as 用户名 , homedir  家目录 from tarena.user;//拼接   concat()mysql> select concat(name,"-",uid) as 用户信息 from tarena.user where uid <= 5;+--------------+| 用户信息     |+--------------+| root-0       || bin-1        || daemon-2     || adm-3        || lp-4         || sync-5       |+--------------+6 rows in set (0.00 sec)//2列拼接mysql>  select concat(name , "-" , uid)  as  用户信息  from tarena.user where uid <= 5;//多列拼接mysql>  select concat(name , "-" , uid , "-" , gid)  as  用户信息  from tarena.user where uid <= 5;+--------------+| 用户信息     |+--------------+| root-0-0     || bin-1-1      || daemon-2-2   || adm-3-4      || lp-4-7       || sync-5-0     |+--------------+

去重显示 distinct 字段名列表

    //去重前输出mysql> select shell  from  tarena.user  where shell in ("/bin/bash","/sbin/nologin") ;+---------------+| shell         |+---------------+| /bin/bash     || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /sbin/nologin || /bin/bash     || /sbin/nologin |+---------------+22 rows in set (0.00 sec)//去重后查看mysql> select distinct shell  from  tarena.user  where shell in ("/bin/bash","/sbin/nologin") ;+---------------+| shell         |+---------------+| /bin/bash     || /sbin/nologin |+---------------+2 rows in set (0.01 sec)mysql>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/689044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AcWing 1050 鸣人的影分身(复杂DP ——整数划分问题)

[题目概述] 在火影忍者的世界里&#xff0c;令敌人捉摸不透是非常关键的。 我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。 影分身是由鸣人身体的查克拉能量制造的&#xff0c;使用的查克拉越多&#xff0c;制造出的影分身越强。 针对不同的作…

【Linux】进程的初步认识(二)

进程的初步认识 前言查看进程通过系统调用创建进程关于创建进程的几点补充 前言 之前的一篇文章(文章链接)已经初步对于进程有了一个认识&#xff0c;这篇文章主要是介绍如何去查看进程的相关信息以及创建一个进程的相关知识 查看进程 查看进程的信息可以在/proc系统文件夹中查…

代码随想录刷题笔记-Day19

1. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值之差的绝…

ZigBee学习——基于AF的数据通信

文章目录 一、简单描述符1.1 简单介绍1.2 简单描述结构体介绍1.3 结构体中的簇1.4 应用场景 二、AF通信原理2.1 通信过程2.2 端点号分类2.3 通信方式2.4 注册简单描述符 三、数据发送API简介3.1 AF层数据发送API3.2 基于AF层封装的通信API3.2.1 点对点通信API3.2.2 广播通信API…

数据库管理-第151期 Oracle Vector DB AI-03(20240218)

数据库管理151期 2024-02-18 数据库管理-第151期 Oracle Vector DB & AI-03&#xff08;20240218&#xff09;1 向量数据库应用场景2 Oracle Vector DB3 Vector数据类型4 Vector运算5 Vector DML插入向量获取向量 总结 数据库管理-第151期 Oracle Vector DB & AI-03&am…

LeetCode 热题 100 Day01

哈希模块 哈希结构&#xff1a; 哈希结构&#xff0c;即hash table&#xff0c;哈希表|散列表结构。 图摘自《代码随想录》 哈希表本质上表示的元素和索引的一种映射关系。 若查找某个数组中第n个元素&#xff0c;有两种方法&#xff1a; 1.从头遍历&#xff0c;复杂度&#xf…

【Spring】三级缓存

目录标题 触发所有未加载的实例a - 开始getBean&#xff08; doGetBean&#xff09; - 获取单例beangetSingleton() - 获取单例beancreateBean&#xff08;doCreateBean&#xff09; - 创建beancreateBeanInstance - 创建并返回beanaddSingletonFactory -放三级缓存populateBea…

序列发生器

一开始想直接FSM&#xff0c;划分出6状态依次输出对应的。但其实只要6比特的移位寄存器&#xff0c;每次输出高位。复位后的默认值时6’b001_011。这样就可以实现循环&#xff0c;这种移位寄存器也叫barrel_shifter。循环移位。也可以使用循环计数器&#xff0c;然后case计数器…

<爬虫Error篇>:乱码问题

前言: 当涉及到网页编码问题时&#xff0c;经常会遇到不同页面使用不同编码方式的情况。这可能导致在解析页面时出现乱码&#xff0c;使我们无法正确获取页面内容 正文: 网页的编码问题: 在处理网页编码问题之前&#xff0c;我们需要了解一些基础知识。网页中的编码方式通常…

JRT监听-PDF-Excel-Img

依赖全新设计&#xff0c;我们无需再顾虑历史兼容性的束缚&#xff1b;同时&#xff0c;基于多年来累积的深入需求理解&#xff0c;JRT监听机制巧妙地借助CMD命令模式&#xff0c;达成了监听的全面统一。无论是PDF、Excel还是图片文件&#xff0c;都不再需要特殊对待或额外区分…

MT8781核心板_MTK8781安卓核心板规格参数

MT8781安卓核心板以其强大的性能和高效的能耐备受瞩目。其八核CPU架构包括(2x Cortex-A76 2.2GHz 6x Cortex-A55 2.0GHz)&#xff0c;以及高性能的Arm Mali G57级GPU。同时&#xff0c;配备高达2,133MHz的LPDDR4X内存和快速的UFS 2.2级存储&#xff0c;大大加速了数据访问速…

java面试集合篇

上面是java中集合的整体框架图。 集合使用的数据结构 算法复杂度分析 时间复杂度分析 时间复杂度分析&#xff1a;来评估代码的执行耗时的 /*** 求1~n的累加和* param n* return*/ public int sum(int n) {int sum 0;for ( int i 1; i < n; i) {sum sum i;}return …

ubuntu22.04-磁盘管理-虚拟机动态扩容-系统monitor

文章目录 1.虚拟机2.ubuntu设置3.命令查看4.系统资源管理器 1.虚拟机 关闭ubuntu22.04&#xff0c;然后修改虚拟机设置&#xff0c;如下图所示&#xff1a; 修改容量 2.ubuntu设置 搜索打开disks&#xff0c;如下图所示&#xff1a; 选择目标磁盘&#xff0c;选择调整大小…

Filterajax

1.Filter概念 概念:表示过滤器,是JavaWeb三大组件(Servlet,Filter,Listener)之一;过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能.过滤器可以完成一些通用操作比如:登录添加购物车,视频广告,敏感字符处理等等... 2.Filter快速入门 3.Listener 4.Ajax学习 1.使用场…

Android 15 第一个开发者预览版

点击查看&#xff1a;first-developer-preview-android15 点击查看&#xff1a;Get Android 15 2024年2月16日,谷歌发布 Android 15 第一个开发者预览版 翻译 由工程副总裁戴夫伯克发布 今天&#xff0c;我们发布了Android 15的首个开发者预览版&#xff0c;这样我们的开发者就…

腾讯云OSS文件上传功能

腾讯云COS介绍 腾讯云COS&#xff08;Cloud Object Storage&#xff09;是一种基于对象的存储服务&#xff0c;用于存储和管理海量的非结构化数据&#xff0c;如图片、音视频文件、备份数据等。它具有以下特点和优势&#xff1a; 高可靠性&#xff1a;采用分布式存储架构&…

MySQL学习记录——십이 事务

文章目录 1、了解事务2、事务提交3、事务隔离级别1、隔离性和隔离级别2、查看、设置隔离级别3、读未提交4、读提交5、可重复读6、串行化7、总结 4、事务一致性5、事务隔离性1、隐藏字段2、undo日志3、模拟MVCC4、Read View 6、读提交RC、可重复读RR的区别 1、了解事务 MySQL内…

强化学习(TD3)

TD3——Twin Delayed Deep Deterministic policy gradient 双延迟深度确定性策略梯度 TD3是DDPG的一个优化版本&#xff0c;旨在解决DDPG算法的高估问题 优化点&#xff1a; ①双重收集&#xff1a;采取两套critic收集&#xff0c;计算两者中较小的值&#xff0c;从而克制收…

第一个 Angular 项目 - 动态页面

第一个 Angular 项目 - 动态页面 使用的所有技巧都在下面的笔记里&#xff1a; [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面&#xff0c;即不涉及到跨组件交流的内容 以下涉及到组件内的沟通&#xff0c;从这开始数据就“活”…

才气系统与逻辑系统道装实现的比较

才气系统与逻辑系统道装实现的比较 道装道装思想简介烛火流形学习引擎&#xff0c;流形学习的引入王船山信息熵&#xff0c;简称王船山熵&#xff1b;凝聚态数学可计算函数科学方法道装由来琴语言简介逻辑与才气的逐层比较表格&#xff08;王船山熵&#xff09; 道装 道装思想…