目录
结束符 ; \g \G
中断输入 ctrl + c
查看命令列表 help
? (\?)
connect (\r)
status (\s)
delimiter (\d)
exit (\q) quit (\q)
tee (\T)
编辑 notee (\t)
prompt (\R)
source (\.)
system (\!)
编辑
use (\u)
help contents
结束符 ; \g \G
当我们使用mysql客户端程序连接到数据库服务器之后,可以发送SQL语句到服务器执行,并以;(分号)、\g或\G作为结束符。
那么以;结尾和以\g、\G结尾有啥区别呢?
;和\g结尾都是一样的,都是以表格的形式展示结果。
但是\G就不同了,\G是以行形式展示结果,列名:具体的信息构成一行。
那么啥时候用\G呢?如果某一个表格它的属性特别多,那么用;打印出来的结果就特别难看。比如说我们mysql数据库下的user表。由于这个表的列属性特别多,屏幕显示不下,就会换行,然后就很难看。此时我们就可以使用\G
select * from user;
select * from user\G
这样看起来就非常好看。
中断输入 ctrl + c
当我们在输入SQL语句的时候,如果输错了可以用ctrl + c 中断当前的输入。
查看命令列表 help
mysql有一组自己的命令,可以输入help 或者\h查看命令列表
这个列表里就展示了mysql所有的指令,前面表示完整的指令,后面表示的是短指令的格式,是等价的关系。
下面我们就来介绍一下常用的指令
? (\?)
这个作用和help是一样的。也是查看命令列表
connect (\r)
如果你有需求要重新连接服务器,直接使用这个命令即可,不用退出再连了,我们可以看到每次连接的id是不同的。
重新连接服务器
status (\s)
我们可以使用status这个命令查看服务器的状态,里面包含了很多信息,我们可以看到connection id和上面我们重新连接后的是一样的。
delimiter (\d)
重新指定SQL语句的结束标识符 ,SQL语句可以以 ; \g \G作为结束标识符,我们也可以自己使用\d这个命令指定SQL语句的标识符。以后我们在哪里看到SQL语句是以其他字符作为结尾不要惊讶,它肯定是用\d重新指定了SQL语句的标识符。这个地方指定的时候不要指定一些使用到的,比如什么 单引号双引号。
exit (\q) quit (\q)
exit和quit都是用来退出客户端的。
tee (\T)
把所有执行结果保存到一个指定的文件当中
我们cat一下这个文件,就可以看到保存的SQL语句执行结果。
notee (\t)
执行结果不在写入文件,这个指令没有参数。
prompt (\R)
\R用来修改提示符 ,默认的提示符是mysql>。
source (\.)
加载并执行指定的.sql脚本
当我们需要把一个数据库从一台服务器A复制到另一台服务器B上,那么我们可以先把服务器A导出数据到.sql文件,然后在到服务器B上执行这个.sql文件。
下面我们准备了一些SQL语句,大家可以把下面的SQL语句赋值到本地的一个.sql文件里,然后导入到xshell里执行。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;DROP DATABASE IF EXISTS `test_db`;
CREATE DATABASE `test_db` CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;USE `test_db`;-- ----------------------------
-- Table structure for classes
-- ----------------------------
DROP TABLE IF EXISTS `classes`;
CREATE TABLE `classes` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`desc` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of classes
-- ----------------------------
INSERT INTO `classes` VALUES (1, '计算机系2019级1班', '学习了计算机原理、C和Java语言、数据结构和算法');
INSERT INTO `classes` VALUES (2, '中文系2019级3班', '学习了中国传统文学');
INSERT INTO `classes` VALUES (3, '自动化2019级5班', '学习了机械自动化');-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES (1, 'Java');
INSERT INTO `course` VALUES (2, '中国传统文化');
INSERT INTO `course` VALUES (3, '计算机原理');
INSERT INTO `course` VALUES (4, '语文');
INSERT INTO `course` VALUES (5, '高阶数学');
INSERT INTO `course` VALUES (6, '英文');-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (`score` decimal(3, 1) NULL DEFAULT NULL,`student_id` int(11) NULL DEFAULT NULL,`course_id` int(11) NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES (70.5, 1, 1);
INSERT INTO `score` VALUES (98.5, 1, 3);
INSERT INTO `score` VALUES (33.0, 1, 5);
INSERT INTO `score` VALUES (98.0, 1, 6);
INSERT INTO `score` VALUES (60.0, 2, 1);
INSERT INTO `score` VALUES (59.5, 2, 5);
INSERT INTO `score` VALUES (33.0, 3, 1);
INSERT INTO `score` VALUES (68.0, 3, 3);
INSERT INTO `score` VALUES (99.0, 3, 5);
INSERT INTO `score` VALUES (67.0, 4, 1);
INSERT INTO `score` VALUES (23.0, 4, 3);
INSERT INTO `score` VALUES (56.0, 4, 5);
INSERT INTO `score` VALUES (72.0, 4, 6);
INSERT INTO `score` VALUES (81.0, 5, 1);
INSERT INTO `score` VALUES (37.0, 5, 5);-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (`id` int(11) PRIMARY KEY AUTO_INCREMENT,`sn` int(11) NOT NULL COMMENT '学号',`name` varchar(20) NOT NULL COMMENT '姓名',`mail` varchar(20) COMMENT 'QQ邮箱'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES (1, 50001, '张三', 'zs@bit.com');
INSERT INTO `student` VALUES (2, 50002, '李四', 'ls@bit.com');
INSERT INTO `student` VALUES (3, 50003, '王五', 'ww@bit.com');
INSERT INTO `student` VALUES (4, 50004, '赵六', 'zl@bit.com');
INSERT INTO `student` VALUES (5, 50005, '钱七', 'qq@bit.com');SET FOREIGN_KEY_CHECKS = 1;
直接 source sql文件的绝对路径,就可以。
先把本地的.sql文件传到服务器上。
我们查看一下当前数据库中有没有test_db这个库 。
接下来执行这个.sql文件。我们可以看到是执行成功了
此时我们查看一下是否多出一个test_db的数据库 。我们可以看到是成功插入的
接下来我们把该数据库删除掉。
我们可以直接在xshell中直接执行sql语句,而不需要登录sql。
执行完毕后我们可以看下是否成功创建了test_db数据库。我可以看到果然成功创建。
system (\!)
执行系统命令,我们可以用该命令执行xshell下的一些命令。
我们常用的是 system clear,当我们命令输入的很多时,可以用该命令清屏。
也可以执行pwd、ls各种命令。
这个命令是很危险的,如果黑客拿到了你的mysql密码,登录你的客户端,就可以使用system查看你xshell上的一些文件,比如说/etc/passwd文件,这个文件下记录的是用户和用户组对应的权限。从而拿到用户权限攻陷系统。
如果它攻陷不了还可以给你创建一个文件里面显示一些什么系统故障请联系QQXXXXXX,然后如果经验不足就容易上当。
use (\u)
这命令我们经常用,使用个数据库就不多说了
help contents
显示服务端的帮助文档,类似于一个官方文档。
比如我们查看一下数据类型
再查一下具体的INT类型