上一篇我们介绍到一些Linux的简单命令的使用,今天我们更深入了解一下MySQL!

一.多表查询

这篇通过实例来讲述多表查询,目的是穷尽所有的场景和所有的方法,并且对每个方法的使用做实例。 首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法:

A)内连接:join,inner join

B)外连接:left join,left outer join,right join,right outer join,union

C)交叉连接:cross join

首先导入hellodb.sql,以下的操作都是基于此:

1.内连接:仅查看有老师的学员和有学员的老师的信息

mysql> select s.name student_name,t.name teacher_name from students s inner join teachers t on s.teacherid=t.tid;+----------------+---------------+

| student_name | teacher_name |

+----------------+---------------+

| Sun Shangxiang | Liu Bang |

| Hou Yi | Wu Zetian |

| Da Ji | Cheng Jisihan |

+----------------+---------------+

3 rows in set (0.67 sec)

2.左内连接:显示所有学员信息,包含有老师的学员和没老师的学员

mysql> select s.name student_name,t.name teacher_name from students s left join teachers t on s.teacherid=t.tid;+----------------+---------------+

| student_name | teacher_name |

+----------------+---------------+

| Hou Yi | Wu Zetian |

| Ya Se | NULL |

| An Qila | NULL |

| Da Ji | Cheng Jisihan |

| Sun Shangxiang | Liu Bang |

| Huang Zhong | NULL |

| Liu Bei | NULL |

| Guan Yu | NULL |

| Zhang Fei | NULL |

| Di Renjie | NULL |

| Li Yuanfang | NULL |

| Lan Lingwang | NULL |

| Wang Zhaojun | NULL |

| Bai Qi | NULL |

| A Ke | NULL |

| Cai Wenji | NULL |

| Lv Bu | NULL |

| Diao Chan | NULL |

| Gong Sunli | NULL |

| Ming Shiyin | NULL |

| Dun Shan | NULL |

| Zhou Yu | NULL |

| Mi Yue | NULL |

| Kai | NULL |

| Sun Wukong | NULL |

+----------------+---------------+

25 rows in set (0.05 sec)

3.右内连接:显示所有的老师信息,包含有学员的老师,和没学员的老师

mysql> select s.name student_name,t.name teacher_name from students s right join teachers t on s.teacherid=t.tid;+----------------+---------------+

| student_name | teacher_name |

+----------------+---------------+

| Sun Shangxiang | Liu Bang |

| NULL | Ying Zheng |

| Hou Yi | Wu Zetian |

| Da Ji | Cheng Jisihan |

+----------------+---------------+

4 rows in set (0.00 sec)

4.左外连接:仅显示没老师的学员

select s.name student_name,t.name teacher_name from students s left join teachers t on s.teacherid=t.tid where t.name is null;+--------------+--------------+

| student_name | teacher_name |

+--------------+--------------+

| Ya Se | NULL |

| An Qila | NULL |

| Huang Zhong | NULL |

| Liu Bei | NULL |

| Guan Yu | NULL |

| Zhang Fei | NULL |

| Di Renjie | NULL |

| Li Yuanfang | NULL |

| Lan Lingwang | NULL |

| Wang Zhaojun | NULL |

| Bai Qi | NULL |

| A Ke | NULL |

| Cai Wenji | NULL |

| Lv Bu | NULL |

| Diao Chan | NULL |

| Gong Sunli | NULL |

| Ming Shiyin | NULL |

| Dun Shan | NULL |

| Zhou Yu | NULL |

| Mi Yue | NULL |

| Kai | NULL |

| Sun Wukong | NULL |

+--------------+--------------+

22 rows in set (0.00 sec)

5.右外连接:仅显示没学员的老师

select s.name student_name,t.name teacher_name from students s right join teachers t on s.teacherid=t.tid where s.name is null;+--------------+--------------+

| student_name | teacher_name |

+--------------+--------------+

| NULL | Ying Zheng |

+--------------+--------------+

1 row in set (0.00 sec)

6.并集:显示所有的老师和学员

mysql> select s.name student_name,t.name teacher_name from students s left join teachers t on s.teacherid=t.tid->union-> select s.name student_name,t.name teacher_name from students s right join teachers t on s.teacherid=t.tid;+----------------+---------------+

| student_name | teacher_name |

+----------------+---------------+

| Hou Yi | Wu Zetian |

| Ya Se | NULL |

| An Qila | NULL |

| Da Ji | Cheng Jisihan |

| Sun Shangxiang | Liu Bang |

| Huang Zhong | NULL |

| Liu Bei | NULL |

| Guan Yu | NULL |

| Zhang Fei | NULL |

| Di Renjie | NULL |

| Li Yuanfang | NULL |

| Lan Lingwang | NULL |

| Wang Zhaojun | NULL |

| Bai Qi | NULL |

| A Ke | NULL |

| Cai Wenji | NULL |

| Lv Bu | NULL |

| Diao Chan | NULL |

| Gong Sunli | NULL |

| Ming Shiyin | NULL |

| Dun Shan | NULL |

| Zhou Yu | NULL |

| Mi Yue | NULL |

| Kai | NULL |

| Sun Wukong | NULL |

| NULL | Ying Zheng |

+----------------+---------------+

26 rows in set (0.00 sec)

二.视图

视图是一种虚拟存在的表,视图可以理解为是一个容器,表通过条件查询之后,将查询后的结果放入这个容器内,然后给容器命名后即为视图。

视图相对于表的优势:

1.简单:使用视图的用户不必关系后面的表,只需要使用过滤好的内容就行了;

2.安全:因为对表的全新不能限制到表的行或者是列,所以可以通过视图来限制用户对表的访问权限;

3.数据独立:确定了视图的结构之后,如果给原来的表增加了列,并不会影响视图,增加行,视图的相对于的行也会增加,如果源表的列名称发生了改变,可以通过修改视图来解决。

例:如下图在单表上创建视图,选择表的name,age列作为视图v1_student的列。

mysql> desc students;

+-----------+---------------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

+-----------+---------------------+------+-----+---------+----------------+

| StuID | int(10) unsigned | NO | PRI | NULL | auto_increment |

| Name | varchar(50) | NO | | NULL | |

| Age | tinyint(3) unsigned | NO | | NULL | |

| Gender | enum('F','M') | NO | | NULL | |

| ClassID | tinyint(3) unsigned | YES | | NULL | |

| TeacherID | int(10) unsigned | YES | | NULL | |

+-----------+---------------------+------+-----+---------+----------------+

6 rows in set (0.00 sec)

mysql> create view v1_students as select name,age from students;

Query OK, 0 rows affected (0.00 sec)

查看已创建的视图

mysql>show create view v1_students\G;*************************** 1. row ***************************View: v1_students

Create View: CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1_students` AS select`students`.`Name` AS `name`,`students`.`Age` AS `age` from `students`

character_set_client: latin1

collation_connection: latin1_swedish_ci1 row in set (0.00 sec)

删除已创建的视图

mysql>drop view v1_students;

Query OK,0 rows affected (0.00sec)

mysql> select *from information_schema.views\G;

Empty set (0.06 sec)

三.函数

函数分为系统函数和自定义函数

系统函数:https://dev.mysql.com/doc/refman/5.7/en/func-op-summary ref.html,在这个官方的MySQL网站中,可以查看所有的系统函数。

自定义函数:(user-defined function UDF),保存在mysql.proc表中

1.创建一个自定义函数:

mysql> CREATE FUNCTION simpleFun() RETURNS VARCHAR(20) RETURN "Hello World!";

Query OK,0 rows affected (0.05sec)

mysql> selectsimplefun();+--------------+

| simplefun() |

+--------------+

| Hello World! |

+--------------+

1 row in set (0.05 sec)

2.查看所有的函数列表

mysql> show functionstatus;+---------+-----------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

| Db | Name | Type | Definer | Modified | Created | Security_type | Comment | character_set_client | collation_connection | Database Collation |

+---------+-----------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

| hellodb | simpleFun | FUNCTION | root@localhost | 2018-09-26 23:33:33 | 2018-09-26 23:33:33 | DEFINER | | latin1 | latin1_swedish_ci | utf8_general_ci |

+---------+-----------+----------+----------------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

1 row in set (0.00 sec)

3.查看自定义函数的定义

mysql> show create functionsimplefun\G;*************************** 1. row ***************************Function: simplefun

sql_mode:

Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `simplefun`() RETURNS varchar(20) CHARSET utf8

RETURN"Hello World!"character_set_client: latin1

collation_connection: latin1_swedish_ci

Database Collation: utf8_general_ci1 row in set (0.00 sec)

4.删除自定义函数

mysql> drop functionsimplefun;

Query OK,0 rows affected (0.00sec)

mysql> show functionstatus\G;

Empty set (0.00 sec)

四.用户管理和授权

1.创建用户

语法:create user 用户名@主机 identified by 密码;

mysql> create user momoda@localhost identified by 'centos';

Query OK,0 rows affected (0.00sec)

mysql> selectuser,host,password from user;+--------+--------------------+-------------------------------------------+

| user | host | password |

+--------+--------------------+-------------------------------------------+

| root | localhost | *128977E278358FF80A246B5046F51043A2B1FCED |

| root | centos6.magedu.com | |

| root | 127.0.0.1 | |

| | localhost | |

| | centos6.magedu.com | |

| momoda | localhost | *128977E278358FF80A246B5046F51043A2B1FCED |

+--------+--------------------+-------------------------------------------+

6 rows in set (0.01 sec)

2.删除用户

mysql>drop user momoda@localhost;

Query OK,0 rows affected (0.00sec)

mysql> selectuser,host,password from user;+------+--------------------+-------------------------------------------+

| user | host | password |

+------+--------------------+-------------------------------------------+

| root | localhost | *128977E278358FF80A246B5046F51043A2B1FCED |

| root | centos6.magedu.com | |

| root | 127.0.0.1 | |

| | localhost | |

| | centos6.magedu.com | |

+------+--------------------+-------------------------------------------+

5 rows in set (0.00 sec)

3.授权

grant不仅可以用来授权,还可以用来创建用户;

授权的语法:grant 权限列表 on 库名.表名 to 用户@主机 identified by '密码';

刷新权限:flush privileges;

mysql> grant all on *.* to haha@'192.168.%.%' identified by '123';

Query OK,0 rows affected (0.00sec)

mysql>flush privileges;

Query OK,0 rows affected (0.00sec)

mysql> selectuser,host,password from user;+------+--------------------+-------------------------------------------+

| user | host | password |

+------+--------------------+-------------------------------------------+

| root | localhost | *128977E278358FF80A246B5046F51043A2B1FCED |

| root | centos6.magedu.com | |

| root | 127.0.0.1 | |

| | localhost | |

| | centos6.magedu.com | |

| haha | 192.168.%.% | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |

+------+--------------------+-------------------------------------------+

6 rows in set (0.00 sec)

4.查看授权

mysql> show grants for haha@'192.168.%.%';+------------------------------------------------------------------------------------------------------------------------+

| Grants for haha@192.168.%.% |

+------------------------------------------------------------------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'haha'@'192.168.%.%' IDENTIFIED BY PASSWORD '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257' |

+------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)

5.回收授权

回收权限有两种方法:删除用户和revoke

回收语法:  revoke 权限 on 库名.表名 from 用户@主机;

mysql> revoke all on *.* from haha@'192.168.%.%';

Query OK,0 rows affected (0.00 sec)

linux mysql添加视图_Linux下MySQL的简单使用(二)相关推荐

  1. linux上mysql卸数_Linux下MySQL卸载和安装图文教程

    Linux下MySQL卸载和安装图文教程 发布时间:2020-09-02 08:43:17 来源:脚本之家 阅读:59 作者:伊宇紫 第一次写博客,做了两年的开发,工作之余给自己找点有意义的事做,分享 ...

  2. linux mysql 装哪里_linux 下 mysql 安装目录在哪里

    linux 下 mysql 安装目录在哪里.linux mysql 安装介绍: linux 服务器 RedHat 5.0.server. MySQL 版本: 下载地址链接:http://dev.mys ...

  3. linux mysql 端口号_linux下mysql 查看默认端口号与修改端口号方法

    一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -p Enter password: 输入数据库密码: 2.使用show global var ...

  4. linux下mysql的备份_Linux下MySQL的备份与还原

    Linux下MySQL的备份与还原 2.1 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [ro ...

  5. linux下mysql目录结构_linux下mysql安装配置与目录结构

    本节内容: linux下mysql安装与配置.mysql目录结构. 1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rp ...

  6. linux mysql dump命令_linux下mysql命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  7. linux mysql 超级用户_Linux下MySQL忘记超级用户口令的解决办法linux操作系统 -电脑资料...

    以前我都是讲述在windows中忘记了mysql root密码的找回方法,下面我来介绍在Linux下MySQL忘记超级用户口令的解决办法,有碰到此类问题的同学可进入参考, 解决办法一 MySQL忘记超 ...

  8. linux下mysql的创建_linux下mysql创建库命令

    Linux下mysql数据库要怎么通过命令来创建一个新的数据库呢?下面由学习啦小编为大家整理了linux下mysql创建库命令的相关知识,希望对大家有帮助! linux下mysql创建库命令方法步骤 ...

  9. linux mysql 目录结构图_linux下mysql安装、目录结构、配置

    1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rpm 客户端:MySQL-client-community-5.1.4 ...

最新文章

  1. Docker windows 安装MySql和Tomcat
  2. 飞天大数据平台助力轻松筹数字化运营
  3. 史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了
  4. C++ 异常基本语法
  5. Mysql中limit的优化
  6. linux备份还原系统程序
  7. spark 过滤log
  8. java日期格式化返回date_Java日期时间格式化操作DateUtils 的整理
  9. 稳健Capon波束形成
  10. haversine根据经纬度算距离
  11. ps色彩范围调暗图片局部
  12. sql server 字符串转成日期格式
  13. 双十一之后,留给证券区块链转型的时间不多了……
  14. navicat创建用户并赋予权限
  15. Google Chrome 源码下载
  16. android 矢量图片使用方法,Android中的矢量图
  17. 私有部署、重构企业软件,第四范式发布大模型“式说”
  18. 托管调试助手“LoaderLock”在XXX中检测到故障。其他信息:正尝试在OS加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
  19. 从梯度下降到 Adam!一文看懂各种神经网络优化算法
  20. VulnHub-DevGuru: 1

热门文章

  1. HTML中的水平布局
  2. ACW 4194. Pow
  3. PanDownload复活了!60MB/s!附下载地址
  4. Java练习题-09
  5. 华为云CDN加速,真正的六边形战士
  6. 毕业生求职必会算法 约瑟夫环问题
  7. Qt5 bug error c2001: 常量中有换行符
  8. 算法设计与分析5.11求解满足方程解问题
  9. 组件Element的入门学习
  10. UC伯克利教授马毅投稿ICML,4个评审一致接收却遭AC一票否决