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——视图的创建和使用

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值