• 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('登录失败')
    
    
    
    
    		 
    
    
    		   
    

      

  • 相关阅读:
    javaweb学习总结(四十五)——监听器(Listener)学习二
    javaweb学习总结(四十四)——监听器(Listener)学习
    javaweb学习总结(四十三)——Filter高级开发
    javaweb学习总结(四十二)——Filter(过滤器)学习
    javaweb学习总结(四十一)——Apache的DBUtils框架学习
    javaweb学习总结(四十)——编写自己的JDBC框架
    javaweb学习总结(三十九)——数据库连接池
    javaweb学习总结(三十八)——事务
    javaweb学习总结(三十七)——获得MySQL数据库自动生成的主键
    javaweb学习总结(三十六)——使用JDBC进行批处理
  • 原文地址:https://www.cnblogs.com/zzy7372/p/9805343.html
Copyright © 2020-2023  润新知