MySQL中客户端语句使用总结

这篇博客总结了MySQL的一些关键操作,包括查看MySQL版本,数据导入与导出(解决secure-file-priv问题),except替代方案,模糊查询,表连接,group by分组及视图的使用,是数据库管理者的实用指南。

1、查看MySQL版本

  • Linux下可以直接使用命令
    [root@master ~]#mysql -V
    或者
    [root@master ~]#yum list | grep mysql
  • 在MySQL客户端可以输入
    mysql> status;
  • 在linux中进入客户端时也会出现MySQL的版本
    [root@master ~]#mysql -uroot -pxxxxxx

2、MySQL中数据导入与导出

导入(经分割后文件中的列要与表中定义一致):

load data local infile '/root/学生信息.csv' into table student fields TERMINATED BY ',' LINES  TERMINATED BY '\r\n' ignore 1 lines;

导出:

 select num,name from namenum2 into outfile '/root/numname.csv' fields terminated by ','  lines terminated by '/n';

导出数据时,可能出现以下问题:

ERROR 1290 (HY000): The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

出现上述错误的原因是导出数据的目录与MySQL默认的输出目录不一致,可采用如下命令查看MySQL的默认输出目录:

show variables like '%secure%';

解决上述问题有两种办法:

  1. 将数据导出的目录更改为MySQL默认的输出目录;
  2. 更改默认输出目录,例如:编辑/etc/my.cnf文件,在文件末尾添加如下语句可使得导出数据到任何目录都合法。
secure_file_priv="/"

以下内容参考:secure_file_priv参数的含义

secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_FILE()传到哪个指定目录的。

ure_file_priv的值为null ,表示限制mysqld 不允许导入|导出

当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下

当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

3、MySQL中的except替代方案

SQL server中的except可以实现两个表相减的功能,在MySQL中没有直接的语句实现该功能,但可使用替换语句实现。如下例所示

-- 测试表,与测试数据
CREATE TABLE union_tab_1 (
  id   INT,
  val  VARCHAR(10)
);
CREATE TABLE union_tab_2 (
  id   INT,
  val  VARCHAR(10)
);
INSERT INTO union_tab_1 VALUES(1, 'A');
INSERT INTO union_tab_1 VALUES(2, 'B');
INSERT INTO union_tab_1 VALUES(3, 'C');
INSERT INTO union_tab_2 VALUES(1, 'A');
INSERT INTO union_tab_2 VALUES(1, 'A');
INSERT INTO union_tab_2 VALUES(2, 'B');
INSERT INTO union_tab_2 VALUES(4, 'D');

SQL Server可用以下语句实现union_tab_1-union_tab_2

SELECT * FROM union_tab_1
EXCEPT
SELECT * FROM union_tab_2;
id          val
----------- ----------
          3 C

在MySQL中则需要使用以下替换语句:

SELECT
  DISTINCT union_tab_1.*
FROM
  union_tab_1 LEFT JOIN union_tab_2
    ON (union_tab_1.id = union_tab_2.id
        AND union_tab_1.val = union_tab_2.val)
WHERE
  union_tab_2.id  IS  NULL;
+------+------+
| id   | val  |
+------+------+
|    3 | C    |
+------+------+

以上语句的功能是先将两表进行左连接,然后选择左连接后union_tab_2.id为空的项。

4、 MySQL的模糊查询

详见MySql模糊查询like通配符使用详细介绍

5、 MySQL中的表连接

详见mysql数据库中实现内连接、左连接、右连接

6、 使用MySQL中的group by对表中元素进行分组

详见MYSQL GROUP BY 对多个字段进行分组

也可实现表中元素去重。

7、使用MySQL的视图

视图(View)是一种虚拟存在的表.当不太确定是否要将查询结果作为基础表使用时,可以创建视图。
详见MySQL——视图的创建和使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值