
在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 联表查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)