linux mysql添加视图_Linux下MySQL的简单使用(二)
上一篇我们介绍到一些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的简单使用(二)相关推荐
- linux上mysql卸数_Linux下MySQL卸载和安装图文教程
Linux下MySQL卸载和安装图文教程 发布时间:2020-09-02 08:43:17 来源:脚本之家 阅读:59 作者:伊宇紫 第一次写博客,做了两年的开发,工作之余给自己找点有意义的事做,分享 ...
- linux mysql 装哪里_linux 下 mysql 安装目录在哪里
linux 下 mysql 安装目录在哪里.linux mysql 安装介绍: linux 服务器 RedHat 5.0.server. MySQL 版本: 下载地址链接:http://dev.mys ...
- linux mysql 端口号_linux下mysql 查看默认端口号与修改端口号方法
一.查看默认端口号 1.登录mysql [root@localhost ~]# mysql -uroot -p Enter password: 输入数据库密码: 2.使用show global var ...
- linux下mysql的备份_Linux下MySQL的备份与还原
Linux下MySQL的备份与还原 2.1 备份 [root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) [ro ...
- linux下mysql目录结构_linux下mysql安装配置与目录结构
本节内容: linux下mysql安装与配置.mysql目录结构. 1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rp ...
- linux mysql dump命令_linux下mysql命令
1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...
- linux mysql 超级用户_Linux下MySQL忘记超级用户口令的解决办法linux操作系统 -电脑资料...
以前我都是讲述在windows中忘记了mysql root密码的找回方法,下面我来介绍在Linux下MySQL忘记超级用户口令的解决办法,有碰到此类问题的同学可进入参考, 解决办法一 MySQL忘记超 ...
- linux下mysql的创建_linux下mysql创建库命令
Linux下mysql数据库要怎么通过命令来创建一个新的数据库呢?下面由学习啦小编为大家整理了linux下mysql创建库命令的相关知识,希望对大家有帮助! linux下mysql创建库命令方法步骤 ...
- linux mysql 目录结构图_linux下mysql安装、目录结构、配置
1.准备安装程序(官方网站下载) 服务端:MySQL-server-community-5.1.44-1.rhel4.i386.rpm 客户端:MySQL-client-community-5.1.4 ...
最新文章
- Docker windows 安装MySql和Tomcat
- 飞天大数据平台助力轻松筹数字化运营
- 史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了
- C++ 异常基本语法
- Mysql中limit的优化
- linux备份还原系统程序
- spark 过滤log
- java日期格式化返回date_Java日期时间格式化操作DateUtils 的整理
- 稳健Capon波束形成
- haversine根据经纬度算距离
- ps色彩范围调暗图片局部
- sql server 字符串转成日期格式
- 双十一之后,留给证券区块链转型的时间不多了……
- navicat创建用户并赋予权限
- Google Chrome 源码下载
- android 矢量图片使用方法,Android中的矢量图
- 私有部署、重构企业软件,第四范式发布大模型“式说”
- 托管调试助手“LoaderLock”在XXX中检测到故障。其他信息:正尝试在OS加载程序锁内执行托管代码。不要尝试在DllMain或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。
- 从梯度下降到 Adam!一文看懂各种神经网络优化算法
- VulnHub-DevGuru: 1