1.对数据的操作
					增:insert into  表名  values(值1,值2...)
						insert into  表名(字段1,字段2.。。。)values(字段1的值,字段2的值。。。)
					
					删
						delete from 表名  where 条件 
						遍历删除所有数据:delete from 表名
						直接清空表示据:truncat  表名 
					
					改
						update  表名  set 修改后的数据   where  条件  
					
					查(核心):
						select * from 表名  where 条件  group by(分组) having (条件)  order by(排序)  limit(显示行数)
						去重复:distinct 
						as 取别名
						关系运算符:> < = != >= <=
						逻辑运算符:and  or not in   between  an 
						like:模糊查询
						分组:group by 
						聚合函数:max  min  count  avg  sum
						order by:排序   默认升序asc   降序 desc 
						
				2.子查询
					有些结果需要通过多次查询才可以得出,一个查询的结果只作为另一个查询的条件
						这个条件有可能是单个数据、单个字段、一张表
					
					单个数据:
					例子:查询工资最高的人的信息
						
						第一步查询最高的工资
							SELECT MAX(salary) FROM dep
						
						第二步:整合
							select * from dep  where salary=(SELECT MAX(salary) FROM dep)
							
					例子:查询比江西省人数多的省份
						第一步:查询江西省的人数
							SELECT COUNT(*) FROM dep WHERE address='江西'
						
						第二步:查询每个省的人数
							SELECT address,COUNT(*)FROM dep GROUP BY address
							
						整合:SELECT address,COUNT(*)FROM dep GROUP BY address having COUNT(*)>(SELECT COUNT(*) FROM dep WHERE address='江西')
				
					例子:查询湖南省与江西省的平均年龄之差
						第一步:查询湖南省的平均年龄
						SELECT avg(age) FROM dep WHERE address='湖南'
						
						第二步:查询江西省的平均年龄
						SELECT avg(age) FROM dep WHERE address='江西'
						
						第三步:
							SELECT (SELECT avg(age) FROM dep WHERE address='湖南')-(SELECT avg(age) FROM dep WHERE address='江西')
							
				练习:			
				1.查询年龄最大的人的信息
					第一步:查找最大年龄
						select max(age) from dep
					第二步:整合
						SELECT * FROM dep WHERE age=(select max(age) from dep)
				
				 2.查询广东人中工资最低的人的信息 
					第一步:查询广东的最低工资
					SELECT min(salary) FROM dep WHERE address='广东'
					第二步:整合
					SELECT * FROM dep WHERE salary=(SELECT min(salary) FROM dep WHERE address='广东') AND address='广东'
				 
				 3.查询工资比平均工资高的人数
					第一步:查询平均工资
						SELECT avg(salary) FROM dep
					第二步:整合
						SELECT COUNT(*)FROM dep WHERE salary>(SELECT avg(salary) FROM dep)
				 
				 4.查询平均年龄比刘雪峰年龄小的省份
					第一步:查询刘雪峰的年龄
					SELECT age FROM dep WHERE name='刘雪峰'
					第二步查询每个省的平均年龄
					select address,avg(age) from dep group by address
					第三步整合:
					select address,avg(age) from dep group by address HAVING avg(age)<(SELECT age FROM dep WHERE name='刘雪峰')
				
				 5.查询年龄最大的人的工资与年龄最小的人的工资之差
					第一步:查询最大年龄
						select max(age)from dep
					第二步:查询最小年龄
						select min(age)from dep	
					第三步:查询最大年龄的工资
						SELECT salary FROM dep WHERE age=(select max(age)from dep)
					第四步:查询最小年龄的工资
					SELECT salary FROM dep WHERE age=(select min(age)from dep)
					第五步:整合
					SELECT (SELECT salary FROM dep WHERE age=(select max(age)from dep))-(SELECT salary FROM dep WHERE age=(select min(age)from dep))
					
				一个字段:
					例子:查询比湖南人年龄大的信息
						解法一:
						单个数据解法:
						SELECT max(age)FROM dep WHERE address='湖南'
						SELECT * FROM dep where age>(SELECT max(age)FROM dep WHERE address='湖南')
					
					解法:2
						字段解法:
						第一步:插叙湖南的所有年龄
							SELECT max(age)FROM dep WHERE address='湖南'
							查询出来的结果是一个字段,有很多结果(23,30,33)
							
						第二步:整合时候
							SELECT * FROM dep WHERE age>ALL(SELECT age FROM dep WHERE address='湖南')
							查询字段的年龄必须要大于23,30,33
							age >23 and age >30 and age>33
							all:将单个字段查询出来的数据进行比较,并用and进行连接
							
					例子:查询所有经理的老乡
						第一步:查询经理来自哪里
							SELECT address FROM dep where  job ='经理'
							
						第二步:SELECT * FROM dep WHERE address =ANY(SELECT address FROM dep where  job ='经理') AND job !='经理'
							解释:查询出来的结果(广东或者江西)
							ANY/some:将单个字段查询出来的结果进行比较,并用or进行连接
								address =广东  or  address =江西
				
				练习:			
				1.查询比广东人工资低的信息
				解法1:
				SELECT * FROM dep WHERE salary<(SELECT MIN(salary)FROM dep where address='广东')
				
				解法2:
				第一步:查询广东的所有年龄
				SELECT salary FROM dep where address='广东'
				第二步整合:
				SELECT * FROM dep WHERE salary < ALL(SELECT salary FROM dep where address='广东')
				
				
				2.查询与id 1-5之间年龄相同的人数
				第一步:查询1-5之间的年龄
				SELECT age FROM dep where id BETWEEN 1 AND 5 
				
				第二步整合:
				SELECT COUNT(*) FROM dep WHERE age =ANY(SELECT age FROM dep where id BETWEEN 1 AND 5 ) and  NOT id  BETWEEN 1 and 5		
				
				
				一张表:
					
					 例子:查询平均工资最高的岗位,显示岗位,平均工资
							第一步:查找每个岗位的平均工资
								SELECT job,AVG(salary) as avgsalary FROM dep GROUP BY job
							
							第二步:查找表内最大的平均工资
								select max(avgsalary) from (SELECT job,AVG(salary) as avgsalary FROM dep GROUP BY job)as avgjob
							
							第三步整合:
								select * from (SELECT job,AVG(salary) as avgsalary FROM dep GROUP BY job)as avgjob
								where avgsalary=(select max(avgsalary) from (SELECT job,AVG(salary) as avgsalary FROM dep GROUP BY job)as avgjob)
							
							
					 例子:查询男人人数最多的省份,显示省份和人数
							
						第一步:查询每个省的男人人数
							SELECT address,sex,COUNT(*)FROM dep WHERE sex='男' GROUP BY address
							
						第二步:查找最大的人数
							SELECT MAX(a) FROM (SELECT address,COUNT(*)as a,sex FROM dep where sex='男' GROUP BY address)as b
							
						第三步整合:
						SELECT * FROM (SELECT address,COUNT(*) as a,sex FROM dep where sex='男' GROUP BY address) as b 
							WHERE a=(SELECT MAX(a) FROM (SELECT address,COUNT(*)as a,sex FROM dep where sex='男' GROUP BY address)as b)
				
				1.多表查询
					当查询的数据来自多张表时,需要用到多表连接查询
						如果不找出表的连接关系,会产生笛卡尔积效应,会产生大量无意义的数据,只会显示按条件连接进行匹配的数据
						
						用法 select * from 表1,表2... where  连接关系  
					
						例子:查询万宇所在的班级
							SELECT name,class,grade FROM student,class WHERE student.cid=class.cid  AND name='万宇'
							
						例子:查询一年级有多少人
							SELECT  grade,COUNT(*) FROM student,class WHERE student.cid=class.cid AND grade='一年级'
							
						例子:查询每个班的女生人数
							SELECT grade,class,sex,COUNT(*)FROM student,class WHERE student.cid=class.cid AND sex='女' GROUP BY grade,class
					
						inner join 内连接:只会显示按条件连接进行匹配的数(效率会更高)
						用法:select * from 表1 inner join 表2 on 连接关系
							例子:将student 与class 表进行内连接 
							SELECT * FROM class INNER JOIN student ON student.cid=class.cid
							
							例子:查询万宇的信息
								select * from  class INNER JOIN student ON student.cid=class.cid where name='万宇'
								
						left join:左表为主,按条件显示匹配的数据,显示左表的所有数据,右表无数据显示 null
						
							例子:将class 与 student 表 进行左连接
							SELECT * FROM class LEFT JOIN student ON student.cid=class.cid
							
							例子:统计每个年级都多少个人
								SELECT grade,class,COUNT(student.cid)FROM class LEFT JOIN student ON student.cid=class.cid GROUP BY grade,class 
							
							例子:统计每个班级的女生人数
								SELECT grade,class,sex,COUNT(student.cid)FROM class LEFT JOIN  student ON student.cid=class.cid WHERE sex='女' GROUP BY grade,class
							
						right join:右表为主,按条件显示匹配的数据,显示右表的所有数据,左表无数据显示null
							例子:将class 与 student 表 进行右连接
							SELECT * FROM class RIGHT  JOIN student ON student.cid=class.cid
							
							例子:查询班级为空的学生信息
								SELECT * FROM class RIGHT  JOIN student ON student.cid=class.cid  where class.cid is null
							
							例子:查询空的班级
								SELECT grade,class FROM class as c LEFT JOIN student as s ON  c.cid=s.cid WHERE s.cid IS NULL
								
							
						全连接 
							union:自动去重复
							用法:左连接 +右连接
								将 student 表与 class 表全连接
								SELECT * FROM student LEFT JOIN class  ON student.cid=class.cid   UNION  SELECT * FROM student RIGHT  JOIN class  ON student.cid=class.cid
								
							
						自连接:不是特有的连接方式,只是一种用法,本质就是把一张表分成了多张表,找到这两张表的连接关系
							注意事项。查询出来的表要取别名
					
							查询每个员工的编号,姓名,与他领导的姓名
								先定义一张员工表
								SELECT * from emp
								再次定义领导表
								SELECT * from emp
							找出连接关系:员工的领导编号等于 领导的员工编号
								SELECT yuangongbiao.empno,yuangongbiao.ename,lingdao.ename
									FROM (SELECT * from emp)AS yuangongbiao,(SELECT * from emp)as lingdao where yuangongbiao.mgr=lingdao.empno			
								SELECT yuangong.empno,yuangong.ename,lingdao.ename FROM emp as yuangong,emp as lingdao WHERE yuangong.mgr=lingdao.empno
								(不会显示king这个员工)
							左连接:
								SELECT yuangong.empno,yuangong.ename,lingdao.ename,lingdao.empno FROM emp as yuangong LEFT JOIN emp as lingdao ON yuangong.mgr=lingdao.empno