欢迎来到JIA的博客

MySQL - 其他操作

 

一、关于prompt参数

当我们登录到MySQL后,MySQL只是简单的提示mysql>,没有其他的信息,对我们来说,意义不大,那么通过prompt参数就可以来自定义显式一些重要的信息,比如:登录的用户名、主机地址、当前所在的数据库等信息。
那么如何使用prompt参数呢?有两种方式:

  1. 登录MySQL时,在命令行中使用。
  2. 定义在配置文件中。

 

1.1 命令行中配置

在登录MySQL时,跟参数:

 1 [root@cs ~]# mysql -uroot -p --prompt="\\u@\\h : \\d \\r:\\m:\\s>"
 2 Enter password: 
 3 Welcome to the MySQL monitor.  Commands end with ; or \g.
 4 Your MySQL connection id is 12
 5 Server version: 5.7.20 MySQL Community Server (GPL)
 6 
 7 Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 8 
 9 Oracle is a registered trademark of Oracle Corporation and/or its
10 affiliates. Other names may be trademarks of their respective
11 owners.
12 
13 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
14 
15 root@localhost : (none)05:41:53>use data_test;
16 Database changed
17 root@localhost : data_test 05:42:11>

注意,--prompt="\\u@\\h : \\d\\r:\\m:\\s>"参数后的值一定是双引号标识,单引号不行!
这种方式,仅适用于本次登录生效。

1.2 配置文件中配置

如果在命令行中写太麻烦,想要永久生效,就要在配置文件中定义,编辑配置文件/etc/my.cnf

1 [mysql]
2 prompt="\\u@\\h :\\d \\r:\\m:\\s>"
3 # 也可以这么写
4 # prompt=3306 [\\d]>

这样,每次登录就会自动生效了。

PS:每个参数都加两个\\,但我看加一个也能行!

 

1.3 常用的prompt参数

参数描述
\u 登录用户名
\h 登录主机
\d 此时use的数据库,没有则显式none
\r:\m:\s 当前的时分秒
\U 显式你的全名user_name@host_name,等价于\u@\h

 

二、三元表达式

用到的数据:school.sql

Zhangkai's blogs 朋友 资源 技术栈新建文章文章列表 管理
MySQL - 其他操作
目录
关于prompt参数
命令行中配置
配置文件中配置
常用的prompt参数
三元表达式
在MySQL中执行系统命令
返回MySQL目录
关于prompt参数#
当我们登录到MySQL后,MySQL只是简单的提示mysql>,没有其他的信息,对我们来说,意义不大,那么通过prompt参数就可以来自定义显式一些重要的信息,比如:登录的用户名、主机地址、当前所在的数据库等信息。
那么如何使用prompt参数呢?有两种方式:

登录MySQL时,在命令行中使用。
定义在配置文件中。
命令行中配置#
在登录MySQL时,跟参数:

[root@cs ~]# mysql -uroot -p --prompt="\\u@\\h : \\d \\r:\\m:\\s>"
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

root@localhost : (none)05:41:53>use data_test;
Database changed
root@localhost : data_test 05:42:11>
注意,--prompt="\\u@\\h : \\d\\r:\\m:\\s>"参数后的值一定是双引号标识,单引号不行!
这种方式,仅适用于本次登录生效。

配置文件中配置#
如果在命令行中写太麻烦,想要永久生效,就要在配置文件中定义,编辑配置文件/etc/my.cnf:

[mysql]
prompt="\\u@\\h :\\d \\r:\\m:\\s>"
# 也可以这么写
# prompt=3306 [\\d]>
这样,每次登录就会自动生效了。
PS:每个参数都加两个\\,但我看加一个也能行!

常用的prompt参数#
这里列出常用的参数:

参数    描述
\u    登录用户名
\h    登录主机
\d    此时use的数据库,没有则显式none
\r:\m:\s    当前的时分秒
\U    显式你的全名user_name@host_name,等价于\u@\h
更多参考官网:


三元表达式#
用到的数据:school.sql
-- mysql -uroot -p <school.sql

DROP DATABASE IF EXISTS school;
CREATE DATABASE school CHARSET utf8;
USE school;
SET AUTOCOMMIT=0;
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `class`
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `caption` varchar(32) NOT NULL,
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `class`
-- ----------------------------
BEGIN;
INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
COMMIT;

-- ----------------------------
--  Table structure for `course`
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `cid` int(11) NOT NULL AUTO_INCREMENT,
  `cname` varchar(32) NOT NULL,
  `teacher_id` int(11) NOT NULL,
  PRIMARY KEY (`cid`),
  KEY `fk_course_teacher` (`teacher_id`),
  CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `course`
-- ----------------------------
BEGIN;
INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '体育', '3'), ('4', '美术', '2');
COMMIT;

-- ----------------------------
--  Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `student_id` int(11) NOT NULL,
  `course_id` int(11) NOT NULL,
  `num` int(11) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_score_student` (`student_id`),
  KEY `fk_score_course` (`course_id`),
  CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
  CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `score`
-- ----------------------------
BEGIN;
INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
COMMIT;

-- ----------------------------
--  Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `gender` char(1) NOT NULL,
  `class_id` int(11) NOT NULL,
  `sname` varchar(32) NOT NULL,
  PRIMARY KEY (`sid`),
  KEY `fk_class` (`class_id`),
  CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `student`
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES ('1', '', '1', '理解'), ('2', '', '1', '钢蛋'), ('3', '', '1', '张三'), ('4', '', '1', '张一'), ('5', '', '1', '张二'), ('6', '', '1', '张四'), ('7', '', '2', '铁锤'), ('8', '', '2', '李三'), ('9', '', '2', '李一'), ('10', '', '2', '李二'), ('11', '', '2', '李四'), ('12', '', '3', '如花'), ('13', '', '3', '刘三'), ('14', '', '3', '刘一'), ('15', '', '3', '刘二'), ('16', '', '3', '刘四');
COMMIT;

-- ----------------------------
--  Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `tid` int(11) NOT NULL AUTO_INCREMENT,
  `tname` varchar(32) NOT NULL,
  PRIMARY KEY (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `teacher`
-- ----------------------------
BEGIN;
INSERT INTO `teacher` VALUES ('1', '张磊老师'), ('2', '李平老师'), ('3', '刘海燕老师'), ('4', '朱云海老师'), ('5', '李杰老师');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;
在Python种,三元表达式在某些时候非常方便,经过了解,MySQL也能支持三元运算!!所以特来记录下!!!!
丑话说在前头,MySQL中这种三元运算性能低下!这些是其实在后端处理更好!!
先来看示例:

-- 统计每个同学的总分数
SELECT 
  student.sid,
  student.sname, 
  SUM(num)
FROM student LEFT JOIN score ON student.sid=score.student_id 
GROUP BY student.sid;
+-----+--------+----------+
| sid | sname  | SUM(num) |
+-----+--------+----------+
|   1 | 理解   |       85 |
|   2 | 钢蛋   |      175 |
|   3 | 张三   |      329 |
|   4 | 张一   |      257 |
|   5 | 张二   |      257 |
|   6 | 张四   |      276 |
|   7 | 铁锤   |      264 |
|   8 | 李三   |      264 |
|   9 | 李一   |      268 |
|  10 | 李二   |      297 |
|  11 | 李四   |      297 |
|  12 | 如花   |      297 |
|  13 | 刘三   |       87 |
|  14 | 刘一   |     NULL |
|  15 | 刘二   |     NULL |
|  16 | 刘四   |     NULL |
+-----+--------+----------+
16 rows in set (0.00 sec)
我想将那些结果为NULL的替换为0,或者其他自定义字符,这里就用到了三元表达式了,MySQL中支持两种三元运算:

-- 简单,性能低下
IF (条件表达式,条件为true的结果, 条件为false的结果)

-- 稍微复杂的,但性能高点(有限!)的
case when 条件 then (条件为true时执行) else(条件为false时执行) end     -- end不可少

-- 用法:
SELECT 
  student.sid,
  student.sname, 
  -- IF (SUM(num),SUM(num), 0)            -- if的示例
  (CASE WHEN SUM(num) THEN SUM(num) ELSE 0 END) AS '总分'    -- 为了避免意外,我将三元表达式用括号整体括起来了,和后面 AS 分开
FROM student LEFT JOIN score ON student.sid=score.student_id 
GROUP BY student.sid;
+-----+--------+--------+
| sid | sname  | 总分   |
+-----+--------+--------+
|   1 | 理解   |     85 |
|   2 | 钢蛋   |    175 |
|   3 | 张三   |    329 |
|   4 | 张一   |    257 |
|   5 | 张二   |    257 |
|   6 | 张四   |    276 |
|   7 | 铁锤   |    264 |
|   8 | 李三   |    264 |
|   9 | 李一   |    268 |
|  10 | 李二   |    297 |
|  11 | 李四   |    297 |
|  12 | 如花   |    297 |
|  13 | 刘三   |     87 |
|  14 | 刘一   |      0 |
|  15 | 刘二   |      0 |
|  16 | 刘四   |      0 |
+-----+--------+--------+
16 rows in set (0.00 sec)
在MySQL中执行系统命令#
centos7.3 + mysql5.7.20

MySQL客户端中可以通过system命令来执行系统的shell命令:

mysql> system cat /data/mysql/auto.cnf
[auto]
server-uuid=f352c664-a926-11ea-a90d-000c29872edd
mysql> system ls /data/mysql/
auto.cnf  cs.pid  data_test  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1    ibtmp1    mysql  performance_schema
that's all, see alse:
see also:mysql prompt的用法详解 | MySQL5.7官网手册

作者: 听雨危楼

出处:https://www.cnblogs.com/Neeo/articles/13524954.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

仰望星空,脚踏实地

 分类: MySQL
 0  0
posted @ 2020-08-18 18:04  听雨危楼  阅读(57)  评论(0)  编辑  收藏
发表评论
编辑
预览
 
支持 Markdown
 
 自动补全
 退出 订阅评论 我的博客

[Ctrl+Enter快捷键提交]


园子动态:
· 致园友们的一封检讨书:都是我们的错
· 数据库实例 CPU 100% 引发全站故障
· 发起一个开源项目:博客引擎 fluss

最新新闻: 
· DeepMind和利物浦足球俱乐部合作 用AI让战术更灵活更有效 
· 刷好评服务器出现数据泄露 20多万亚马逊账号恐将清洗 
· 苹果发起调查:想要了解Apple Watch用户是如何监测健康数据的 
· 索尼第三代降噪豆WF-1000XM4曝6月发布:首次支持无线充电 
· 讯飞双屏翻译机图赏:前后双屏 还支持翻转 
» 更多新闻...
Copyright © 2021 听雨危楼 
Powered by .NET 5.0 on Kubernetes & Theme Silence v3.0.0
View Code

在Python种,三元表达式在某些时候非常方便,经过了解,MySQL也能支持三元运算!!所以特来记录下!!!!
丑话说在前头,MySQL中这种三元运算性能低下!这些是其实在后端处理更好!!
先来看示例:

-- 统计每个同学的总分数
SELECT 
  student.sid,
  student.sname, 
  SUM(num)
FROM student LEFT JOIN score ON student.sid=score.student_id 
GROUP BY student.sid;
+-----+--------+----------+
| sid | sname  | SUM(num) |
+-----+--------+----------+
|   1 | 理解   |       85 |
|   2 | 钢蛋   |      175 |
|   3 | 张三   |      329 |
|   4 | 张一   |      257 |
|   5 | 张二   |      257 |
|   6 | 张四   |      276 |
|   7 | 铁锤   |      264 |
|   8 | 李三   |      264 |
|   9 | 李一   |      268 |
|  10 | 李二   |      297 |
|  11 | 李四   |      297 |
|  12 | 如花   |      297 |
|  13 | 刘三   |       87 |
|  14 | 刘一   |     NULL |
|  15 | 刘二   |     NULL |
|  16 | 刘四   |     NULL |
+-----+--------+----------+
16 rows in set (0.00 sec)

 

我想将那些结果为NULL的替换为0,或者其他自定义字符,这里就用到了三元表达式了,MySQL中支持两种三元运算:

-- 简单,性能低下
IF (条件表达式,条件为true的结果, 条件为false的结果)

-- 稍微复杂的,但性能高点(有限!)的
case when 条件 then (条件为true时执行) else(条件为false时执行) end     -- end不可少

-- 用法:
SELECT 
  student.sid,
  student.sname, 
  -- IF (SUM(num),SUM(num), 0)            -- if的示例
  (CASE WHEN SUM(num) THEN SUM(num) ELSE 0 END) AS '总分'    -- 为了避免意外,我将三元表达式用括号整体括起来了,和后面 AS 分开
FROM student LEFT JOIN score ON student.sid=score.student_id 
GROUP BY student.sid;
+-----+--------+--------+
| sid | sname  | 总分   |
+-----+--------+--------+
|   1 | 理解   |     85 |
|   2 | 钢蛋   |    175 |
|   3 | 张三   |    329 |
|   4 | 张一   |    257 |
|   5 | 张二   |    257 |
|   6 | 张四   |    276 |
|   7 | 铁锤   |    264 |
|   8 | 李三   |    264 |
|   9 | 李一   |    268 |
|  10 | 李二   |    297 |
|  11 | 李四   |    297 |
|  12 | 如花   |    297 |
|  13 | 刘三   |     87 |
|  14 | 刘一   |      0 |
|  15 | 刘二   |      0 |
|  16 | 刘四   |      0 |
+-----+--------+--------+
16 rows in set (0.00 sec)

 

三、在MySQL中执行系统命令

centos7.3 + mysql5.7.20

MySQL客户端中可以通过system命令来执行系统的shell命令:

1 mysql> system cat /data/mysql/auto.cnf
2 [auto]
3 server-uuid=f352c664-a926-11ea-a90d-000c29872edd
4 mysql> system ls /data/mysql/
5 auto.cnf  cs.pid  data_test  ib_buffer_pool  ibdata1  ib_logfile0  ib_logfile1    ibtmp1    mysql  performance_schema

 

posted @ 2021-05-10 19:41  讷言敏行~  阅读(70)  评论(0编辑  收藏  举报