zoukankan      html  css  js  c++  java
  • 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中提到















  • 相关阅读:
    awk用法
    cut用法
    优化Linux下的内核TCP参数以提高系统性能
    android开发_LayerlistDrawable(层叠图片)在进度条中的应用
    android开发_文本按钮 与 输入框
    android开发_ViewGroup(组视图)-- 五大布局
    android开发_view和view属性
    android开发_Eclipse新建项目+新建模拟器
    String,StringBuilder,tringBuffer
    zeros()和ones()和eye()
  • 原文地址:https://www.cnblogs.com/suizhixxie/p/10503265.html
Copyright © 2011-2022 走看看