Linux mysql 联表查询

Linux mysql 联表查询,第1张

概述在rhce考试题中,第21、22题为数据库查询题 题目:  在system1上创建一个Maria DB数据库,名为Contacts,要求: 数据库应该包含来自数据库users.mdb的内容,数据库只能被localhost访问 除了root用户,此数据库只能被用户Marry查询,此用户密码为redhat root用户的数据库密码为redhat,同时不允许空密码登录 密码是fadora的人的名字是什么

在rhce考试题中,第21、22题为数据库查询题

题目:

 在system1上创建一个Maria DB数据库,名为Contacts,要求:

数据库应该包含来自数据库users.mdb的内容,数据库只能被localhost访问 除了root用户,此数据库只能被用户Marry查询,此用户密码为redhat root用户的数据库密码为redhat,同时不允许空密码登录 密码是fadora的人的名字是什么? 有多少人姓名是John,同时居住在Santa Clara?

为了完成这个实验,我已将user.mdb放到本文最下方,复制保存为user.mdb,在数据库中source 该文件即可执行

该文章主要看第四和第五个问题

 

1、密码是fadora的人的名字

SELECT    u_name.firstname FROM    u_name,u_passwd WHERE    u_name.userID @H_403_50@= u_passwd.uID     @H_403_50@AND u_passwd.PASSWORD @H_403_50@= fadora;

  

2、有多少名为John并且居住在Santa Clara的

SELECT    COUNT(@H_403_50@*) FROM    u_name,u_loc WHERE    u_name.userID @H_403_50@= u_loc.uID     @H_403_50@AND u_name.firstname @H_403_50@= John     @H_403_50@AND u_loc.location @H_403_50@= Santa Clara

 

COUNT(*) 统计排除值为null的行的个数
COUNT(1) 统计第一个字段不会null的行的个数

讲解:

    SELECT          执行顺序为最后 ,显示以下条件符合之后需要的值        u_name.firstname        FROM            执行顺序为第一,在from下的表中查询        u_name,u_passwd     WHERE           执行顺序为第二 ,查询from下的表符合条件的        u_name.userID @H_403_50@= u_passwd.uID         @H_403_50@AND u_passwd.PASSWORD @H_403_50@= fadora;

 

参考2得出的结论

SELECT    你想要的东西 FROM    这些东西有关的所有的表 WHERE    这些表中的相同条件     @H_403_50@AND 某张表中单独的条件     @H_403_50@AND 某张表中单独的条件

 

连表查询:
找到将多张表关联起来的字段,然后查询条件中写使关联的字段相等,最后写条件

练习例子:

有a,b,c三张表
a(uID,name)
b(uID.password)
c(name.local)

 

三张表关联为a和b通过uID关联,a和c通过name关联,b和c无关联

查询name为jerry,password为sun并且local是four road的人名字

SELECT     res.a_nameFROM    ( SELECT name.a_name FROM name,passwd WHERE name.a_uID @H_403_50@= passwd.u_uID @H_403_50@AND passwd.u_passwd @H_403_50@= sun ) res,local    where    res.a_name @H_403_50@= local.a_name     @H_403_50@AND local.a_local @H_403_50@= four road

  

res为新表别名

或者可以写为

SELECT     res.a_nameFROM    ( SELECT name.a_name FROM name,passwd WHERE name.a_uID @H_403_50@= passwd.u_uID @H_403_50@AND passwd.u_passwd @H_403_50@= sun ) res @H_403_50@left @H_403_50@join local ON     res.a_name @H_403_50@= local.a_name     @H_403_50@AND local.a_local @H_403_50@= four road

 

 

 

user.mdb文件内容

-- MysqL dump 10.14  distrib 5.5.35-MariaDB,for linux (x86_64)---- Host: localhost    Database: Contacts-- -------------------------------------------------------- Server version    5.5.35-MariaDB/*!40101 SET @[email protected]@CHaraCTER_SET_CLIENT */;/*!40101 SET @[email protected]@CHaraCTER_SET_RESulTS */;/*!40101 SET @[email protected]@ColLATION_CONNECTION */;/*!40101 SET nameS utf8 */;/*!40103 SET @[email protected]@TIME_ZONE */;/*!40103 SET TIME_ZONE=‘+00:00‘ */;/*!40014 SET @[email protected]@UNIQUE_CHECKS,UNIQUE_CHECKS=0 */;/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS,FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @[email protected]@sql_mode,sql_mode=‘NO_auto_VALUE_ON_ZERO‘ */;/*!40111 SET @[email protected]@sql_NOTES,sql_NOTES=0 */;---- table structure for table `u_name`--DROP table IF @H_403_50@EXISTS `u_name`;/*!40101 SET @saved_cs_clIEnt     = @@character_set_clIEnt */;/*!40101 SET character_set_clIEnt = utf8 */;CREATE table `u_name` (  `userID` int(11) @H_403_50@NOT NulL auto_INCREMENT,`firstname` varchar(50) @H_403_50@NOT NulL,`lastname` varchar(50) @H_403_50@NOT NulL,PRIMARY KEY (`userID`)) ENGINE@H_403_50@=InnoDB auto_INCREMENT@H_403_50@=26 DEFAulT CHARSET@H_403_50@=latin1;/*!40101 SET character_set_clIEnt = @saved_cs_clIEnt */;---- DumPing data for table `u_name`--LOCK tableS `u_name` WRITE;/*!40000 ALTER table `u_name` disABLE KEYS */;INSERT INTO `u_name` VALUES (1,san,zhang),(2,si,li),(3,wu,wang),(4,Barack,Obama),(5,George,Walker Bush),(6,Bill,Clinton),(7,Hillary,(8,John,(9,(10,(11,(12,(13,(14,Michael,Jackson),(15,(16,(17,(18,(19,Georgexx,(20,(21,(22,(23,(24,(25,wang);/*!40000 ALTER table `u_name` ENABLE KEYS */;UNLOCK tableS;---- table structure for table `u_passwd`--DROP table IF @H_403_50@EXISTS `u_passwd`;/*!40101 SET @saved_cs_clIEnt     = @@character_set_clIEnt */;/*!40101 SET character_set_clIEnt = utf8 */;CREATE table `u_passwd` (  `uID` int(11) @H_403_50@NOT NulL auto_INCREMENT,`password` varchar(50) @H_403_50@NOT NulL,PRIMARY KEY (`uID`)) ENGINE@H_403_50@=InnoDB auto_INCREMENT@H_403_50@=26 DEFAulT CHARSET@H_403_50@=latin1;/*!40101 SET character_set_clIEnt = @saved_cs_clIEnt */;---- DumPing data for table `u_passwd`--LOCK tableS `u_passwd` WRITE;/*!40000 ALTER table `u_passwd` disABLE KEYS */;INSERT INTO `u_passwd` VALUES (1,redhat),fedora),centos),centes),redhrt),rIDhat),redfat),fadora),cantos),redhap),contos),fcdora),cendora),tangene),tangrine),tangerone),tangeine),taangerine),tangerine),tanggerine),anggerine),aggerine),taggerine),tanerine),tannerine);/*!40000 ALTER table `u_passwd` ENABLE KEYS */;UNLOCK tableS;---- table structure for table `u_loc`--DROP table IF @H_403_50@EXISTS `u_loc`;/*!40101 SET @saved_cs_clIEnt     = @@character_set_clIEnt */;/*!40101 SET character_set_clIEnt = utf8 */;CREATE table `u_loc` (  `uID` int(11) @H_403_50@NOT NulL auto_INCREMENT,`location` varchar(50) @H_403_50@NOT NulL,PRIMARY KEY (`uID`)) ENGINE@H_403_50@=InnoDB auto_INCREMENT@H_403_50@=26 DEFAulT CHARSET@H_403_50@=latin1;/*!40101 SET character_set_clIEnt = @saved_cs_clIEnt */;---- DumPing data for table `u_loc`--LOCK tableS `u_loc` WRITE;/*!40000 ALTER table `u_loc` disABLE KEYS */;INSERT INTO `u_loc` VALUES (1,Shenzhen),Guangzhou),Santa Clara),San Francisco),Santa Calara),Santa Clare),FlorIDa),Santa Claraa),State of Texas),colorado?CO),Hawaii?HI),Santa Clra),Minnesota),Vermont),Minnesota);/*!40000 ALTER table `u_loc` ENABLE KEYS */;UNLOCK tableS;/*!40103 SET [email protected]_TIME_ZONE */;/*!40101 SET [email protected]_sql_mode */;/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;/*!40014 SET [email protected]_UNIQUE_CHECKS */;/*!40101 SET [email protected]_CHaraCTER_SET_CLIENT */;/*!40101 SET [email protected]_CHaraCTER_SET_RESulTS */;/*!40101 SET [email protected]_ColLATION_CONNECTION */;/*!40111 SET [email protected]_sql_NOTES */;-- Dump completed on 2016-07-24 18:17:53
总结

以上是内存溢出为你收集整理的Linux mysql 联表查询全部内容,希望文章能够帮你解决Linux mysql 联表查询所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1029489.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存