zoukankan      html  css  js  c++  java
  • 10.17

    内容回顾:
    		1.外键的变种
    			表和表之间的关系
    			一对多或多对一
    			多对多
    			一对一
    			
    			左表  右表
    			
    			多    一
    			
    			一     多
    			
    			多对多,使用第三张表 建立关系
    			
    		
    		2.补充
    			核心: 数据驱动视图
    			
    				json-server
    			设计模式: 	MVC   ===> MTV
    				Model - View -Controller
    				
    		3.单表查询
    			关键字的优先级
    				select * from user where id > 2 group by post having count(1) > 10 order by age desc limit 0,2;
    					
    				from
    				where 
    				group by 
    				having
    				select
    				order by
    				limit
    				
    			where 
    				>,< >=,<=, !=
    				between  xxx and ooo
    				in(20,30,40)
    				and or not
    				
    			sql_mode = ONLY_FULL_GROUP_BY
    			
    			分组之后只能获取分组的字段,如果想获取组内的信息,是通过聚合函数
    			聚合函数:
    					count(1) 计算总个数
    					avg()
    					sum()
    					max()
    					min()
    					
    	
    今日内容:
    		1、单表查询
    			having
    				二次筛选
    				having后面的字段只能是分组(group by)之后字段
    				
    			1.查询各岗位内包含的员工个数小于2的岗位名、岗位内包含员工名字、个数
    				select post,group_concat(name),count(1) from employee group by post having count(1) < 2;
    			2. 查询各岗位平均薪资大于10000的岗位名、平均工资
    				select * from employee where salary  not in (select avg(salary) as A from employee group by post having A > 10000);
    				select post,avg(salary) as A from employee group by post having A > 10000
    				
    			3. 查询各岗位平均薪资大于10000且小于20000的岗位名、平均工资
    				select post,avg(salary) from employee group by post having avg(salary) between 10000 and 20000;
    			order by
    				asc 升序
    				desc 降序
    				
    			limit 0,5 第一个参数起始位置,第二个参数显示的个数
    			
    		2、多表查询
    			select employee.name as a,department.name as b from employee,department where employee.dep_id = department.id and employee.name = 'egon';
    		
    			select * from (select employee.name as a,department.name as b from employee,department where employee.dep_id = department.id) as A where A.a ='egon';
    				
    					
    			select * from employee,department where employee.dep_id = department.id
    			外链接操作	
    				
    			 内连接: 符合条件查询 只连接匹配的行
    				select * from employee inner join department on employee.dep_id = department.id;
    			
    				
    			 左连接: 优先显示左表记录
    				select * from employee left join department on employee.dep_id = department.id;
    			 
    			 右连接: 优先显示右边记录
    				select * from employee right join department on employee.dep_id = department.id;
    				
    				
    			 全外连接:
    				 select * from employee left join department on employee.dep_id = department.id
    					  union
    				 select * from employee right join department on employee.dep_id = department.id
    		3.符合条件查询
    			以内连接的方式查询employee和department表,并且employee表中的age字段值必须大于25,
    			即找出年龄大于25岁的员工以及员工所在的部门
    			select department.name,employee.name from employee inner join department on employee.dep_id = department.id where age > 25
    			
    		4.子查询
    			子查询是将一个查询语句嵌套在另一个查询语句中。
    			
    			一个查询语句查询的结果作为另一个查询语句的条件
    			
    			1、查询平均年龄在25岁以上的部门名
    			
    			select name from department where id in (select dep_id from employee group by dep_id having avg(age) > 25);
    			2、查看不足1人的部门名
    			
    			select name from department where id not in (select dep_id from employee group by dep_id);
    				
    			3、查询大于所有人平均年龄的员工名与年龄
    			select name,age from employee where age > (select avg(age) from employee);
    			
    			4、查询大于部门内平均年龄的员工名、年龄
    		思路:
    		  (1)先对员工表(employee)中的人员分组(group by),查询出dep_id以及平均年龄。
    		   (2)将查出的结果作为临时表,再对根据临时表的dep_id和employee的dep_id作为筛选条件将employee表和临时表进行内连接。
    		   (3)最后再将employee员工的年龄是大于平均年龄的员工名字和年龄筛选。
    		   
    		   select * from employee inner join (select dep_id,avg(age) as b from employee group by dep_id) as A on employee.dep_id = A.dep_id where employee.age > A.b;
    		   
    		   
    		   
    		   5.查询每个部门最新入职的那位员工
    		   
    		   select name from employee 
    				inner join 
    		   (select post,max(hire_date) as newTime from employee group by post) as A 
    				on employee.post = A.post 
    			where employee.hire_date = A.newTime;
    			
    		5.pymysql模块的使用
    			(1)pip install pymysql
    			
    			
    			import  pymysql
    
    			username = input('请输入用户名:')
    			pwd = input('请输入密码:')
    
    			# 建立连接
    			conn = pymysql.connect(
    				host='localhost',
    				user='root',
    				password="",
    				database='db13',
    				port=3306,
    				charset='utf8'
    			)
    			# 创建游标
    			cur = conn.cursor()
    			sql = 'select * from userinfo where name="%s" and pwd="%s"'%(username,pwd)
    			print(sql)
    
    			res = cur.execute(sql)
    			print(res)
    
    			# 游标关闭 连接关闭
    			cur.close()
    			conn.close()
    
    
    			if res:
    				print('登录成功')
    			else :
    				print('登录失败')
    
    
    
    
    		 
    
    
    		   
    

      

  • 相关阅读:
    spark streaming 概述
    spark sql 的性能调优
    LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal (用中序和后序树遍历来建立二叉树)
    LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal (用先序和中序树遍历来建立二叉树)
    LeetCode 90. Subsets II (子集合之二)
    LeetCode 88. Merge Sorted Array(合并有序数组)
    LeetCode 81. Search in Rotated Sorted Array II(在旋转有序序列中搜索之二)
    LeetCode 80. Remove Duplicates from Sorted Array II (从有序序列里移除重复项之二)
    LeetCode 79. Word Search(单词搜索)
    LeetCode 78. Subsets(子集合)
  • 原文地址:https://www.cnblogs.com/zzy7372/p/9805343.html
Copyright © 2011-2022 走看看