MySQL day1

MySQL启动

net start mysql

 

登陆本机MySQL

mysql -u root -p

 

退出mysql    exit

创建数据库

create database sun;

 

删除数据库

drop database sun;

 

 展示所有数据库

show databases;

 

使用数据库

use sun;

 将两个表组合

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:

FirstName, LastName, City, State
select FirstName,LastName,City, State //选定需要列
from Person left join Address    //采用left join是因为Address不是每个人都有的
on Person.PersonId = Address.PersonId;

交换工资

给定一个salary表,需要把左图中sex m的变成f,f变成m   使用update语法

update salary
set 
     sex = case sex 
           when 'm' then 'f'
           else 'm'
end;

 找出有趣的电影

找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating排列。    

select * from cinema
where mod(id,2) =1 and description != boring
order by rating desc;

 

mysql limit 分页

列1:select * from student limit 9,4

列2:select * fron student limit4 offset 9

列1和列2都表示返回表student中的第10,11,12,13行

DISTINCT 去重

 mysql查询某个字段不重复的元素 ,有distinct这个关键字过滤掉重复记录只保留一条,distinct只能返回它的目标字段,无法返回其它字段

如   table

id   name

1  a

2  b

3  c

4  c

5  b

 select distinct name from table

得到结果为

name

a

b

c

 我如果想要得到a,b,c对应的id

select distinct name,id from table 不行因为会根据name +id 都一样来过滤

GROUP BY 用法分析

某个员工信息表结构和数据如下: group by可以通过根据给定数据列的每个成员对查询结果进行分组统计得到一个分组汇总表

staff 表
  id  name  dept  salary  edlevel  hiredate 
      1 张三 开发部 2000 3 2009-10-11
      2 李四 开发部 2500 3 2009-10-01
      3 王五 设计部 2600 5 2010-10-02
      4 王六 设计部 2300 4 2010-10-03
      5 马七 设计部 2100 4 2010-10-06
      6 赵八 销售部 3000 5 2010-10-05
      7 钱九 销售部 3100 7 2010-10-07
      8 孙十 销售部 3500 7 2010-10-06  

 1、查询每个部门的最高薪水

SELECT DEPT,MAX(SALARY) AS MAXIMUM

FROM STAFF

GROUP BY DEPT

查询结果如下

      DEPT  MAXIMUM 
      开发部 2500
      设计部 2600
      销售部 3500

说明:select必须有group by中选择处理的列dept

 2、查询每个部门总的薪水数

SELECT DEPT,SUM(SALARY) AS TOTAL

FROM STAFF

GROUP BY DEPT

查询结果如下:

DEPT  total 
开发部 4500
设计部 7000
销售部 9600 

3、寻找雇员平均工资大于3000的部门的最高和最低的薪水

SELECT DEPT, MAX(SALARY) AS MAXMUM ,MIN(SALARY) AS MINIMUM

FROM STAFF

GROUP BY DEPT

HAVING AVG(SALARY)>3000

ORDER BY DEPT 

 查询结果如下:
  DEPT  MAXIMUM  MINIMUM 

      销售部 3500 3000

 4、查询公司2010年入职的各个部门每个级别里的最高薪水

SELECT  DEPT,EDLEVEL,MAX(SALARY) AS MAXIMUN

FROM STAFF

WHERE HIREDATE > "2010-01-01"

GROUP BY DEPT,EDLEVEL

ORDER BY DEPT,EDLEVEL

 查询结果如下:
  DEPT  EDLEVEL  MAXIMUM 
      设计部 4 2300
      设计部 5 2600
      销售部 5 3000
      销售部 7 3500

 在group by中指明的每个列名也需在select中提到

 

 

 

 

 

 















 

posted @ 2019-03-14 20:24  碎纸屑  阅读(194)  评论(0编辑  收藏  举报