Linux mysql 联表查询
在rhce考试题中,第21、22题为数据库查询题 题目: 在system1上创建一个Maria DB数据库,名为Contacts,要求:
为了完成这个实验,我已将user.mdb放到本文最下方,复制保存为user.mdb,在数据库中source 该文件即可执行 该文章主要看第四和第五个问题 ? 1、密码是fadora的人的名字 SELECT u_name.firstname FROM u_name,u_passwd WHERE u_name.userid = u_passwd.uid AND u_passwd.PASSWORD = ‘fadora‘;
2、有多少名为John并且居住在Santa Clara的 SELECT COUNT(*) FROM u_name,u_loc WHERE u_name.userid = u_loc.uid AND u_name.firstname = ‘John‘ AND u_loc.location = ‘Santa Clara‘ ? COUNT(*) 统计排除值为null的行的个数 讲解: SELECT 执行顺序为最后 ,显示以下条件符合之后需要的值 u_name.firstname FROM 执行顺序为第一,在from下的表中查询 u_name,u_passwd WHERE 执行顺序为第二 ,查询from下的表符合条件的 u_name.userid = u_passwd.uid AND u_passwd.PASSWORD = ‘fadora‘; ? 参考2得出的结论 SELECT 你想要的东西 FROM 这些东西有关的所有的表 WHERE 这些表中的相同条件 AND 某张表中单独的条件 AND 某张表中单独的条件 ? 连表查询: 练习例子: 有a,b,c三张表
?
三张表关联为a和b通过uid关联,a和c通过name关联,b和c无关联 查询name为jerry,password为sun并且local是four road的人名字 SELECT res.a_name FROM ( SELECT name.a_name FROM name,passwd WHERE name.a_uid = passwd.u_uid AND passwd.u_passwd = ‘sun‘ ) res,local where res.a_name = local.a_name AND local.a_local = ‘four road‘
res为新表别名 或者可以写为 SELECT res.a_name FROM ( SELECT name.a_name FROM name,passwd WHERE name.a_uid = passwd.u_uid AND passwd.u_passwd = ‘sun‘ ) res left join local ON res.a_name = local.a_name AND local.a_local = ‘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 EXISTS `u_name`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `u_name` ( `userid` int(11) NOT NULL AUTO_INCREMENT,`firstname` varchar(50) NOT NULL,`lastname` varchar(50) NOT NULL,PRIMARY KEY (`userid`) ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=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 EXISTS `u_passwd`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `u_passwd` ( `uid` int(11) NOT NULL AUTO_INCREMENT,`password` varchar(50) NOT NULL,PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=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 EXISTS `u_loc`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `u_loc` ( `uid` int(11) NOT NULL AUTO_INCREMENT,`location` varchar(50) NOT NULL,PRIMARY KEY (`uid`) ) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |