• 2018年3月13日学习总结


    2018.03.13

    1.查看表所有内容

    SELECT * FROM product;

    2.查看其中两列

    Select pro_id,pro_name from product;

    3.查询时添加常量列,只能用在select语句中

    SELECT pro_id AS '产品号',pro_name AS '产品名称' FROM product;

    4.查询时合并列

    SELECT (price+bonus) AS '总费用' FROM product;

      合并

    SELECT pro_name,price,bonus,(price+bonus) AS '总费用' FROM product;

    /*要合并的这两个数据类型必须都是数值类型*/

    效果图

    5.查询时去除重复记录(只显示不同的)

    SELECT DISTINCT(字段名) FROM product;

    6.条件查询

    逻辑条件: and(与)     or(或)

    -- 需求: 查询id为2,且姓名为李四的学生

    SELECT * FROM student WHERE id=2 AND NAME='李四';

     -- 交集

    -- 需求: 查询id为2,或姓名为张三的学生

    SELECT * FROM student WHERE id=2 OR NAME='张三';

     -- 并集

    比较条件: >   <   >=  <=  =  <>(不等于)或!=     between and (等价于>= 且 <=)

    -- 需求: 查询servlet成绩大于70分的学生

    SELECT * FROM student WHERE servlet>70;

    -- 需求: 查询jsp成绩大于等于75,且小于等于90分的学生

    SELECT * FROM student WHERE jsp>=75 AND jsp<=90;

    -- 另一个语法

    SELECT * FROM student WHERE jsp BETWEEN 75 AND 90; /*(包前包后)*/
    
    SELECT pro_name FROM product WHERE price BETWEEN 1000 AND 2000;
    
    SELECT pro_name FROM product WHERE price>=1000 AND price<=2000;
    
    SELECT * FROM student WHERE gender<>'';

      

    判空条件

    Select * 需求: 查询地址为空的学生(包括null和空字符串)

    -- null vs  空字符串

    -- null:表示没有值

    -- 空字符串:有值的!

    -- 判断null

    SELECT * FROM student WHERE address IS NULL ;

    -- 判断空字符串

    SELECT * FROM student WHERE address='';
    SELECT * FROM student WHERE address IS NULL OR address=''; 

    -- (包括null和空字符串)

    -- 需求: 查询有地址的学生(不包括null和空字符串)

    SELECT * FROM student WHERE address IS NOT NULL AND address<>'';

    7.模糊查询

    通常使用以下替换标记:

    -- % : 表示任意个字符

    -- _ : 表示一个字符

    -- 需求: 查询姓‘张’的学生

    SELECT * FROM student WHERE NAME LIKE '李%';

    -- 需求: 查询姓‘李’,且姓名只有两个字的学生

    SELECT * FROM student WHERE NAME LIKE '李_';

    8.聚合查询

    常用的聚合函数: sum()  avg()  max()  min()  count()

    -- 需求:查询学生的servlet的总成绩 (sum() :求和函数)

    SELECT SUM(servlet) AS 'servlet的总成绩' FROM student;

    -- 需求: 查询学生的servlet的平均分

    SELECT AVG(servlet) AS 'servlet的平均分' FROM student;

    -- 需求: 查询当前servlet最高分

    SELECT MAX(servlet) AS '最高分' FROM student;

    -- 需求: 查询最低分

    SELECT MIN(servlet) AS '最低分' FROM student;

    -- 需求: 统计当前有多少学生(count(字段))

    SELECT COUNT(*) FROM student;
    SELECT COUNT(id) FROM student;

    -- 注意:count()函数统计的数量不包含null的数据

    -- 使用count统计表的记录数,要使用不包含null值的字段

    SELECT COUNT(age) FROM student;

    9.分页查询

    SELECT * FROM javastu LIMIT 0,3;

    从第一条显示三行

    (当前页-1)*显示多少条,显示多少条

    10.查询排序

    Order by

    -- asc: 顺序,正序。数值:递增,字母:自然顺序(a-z)

    -- desc: 倒序,反序。数值:递减,字母:自然反序(z-a)

    -- 默认情况下,按照插入记录顺序排序

    SELECT * FROM student;

    11.分组查询

    查询男女人数

    SELECT ssex,COUNT(*)  AS '人数' FROM javastu GROUP BY ssex;

    统计男女生各有多少人

    12.分组后筛选

    查询人数大于多少的性别

    SELECT ssex,COUNT(*)  AS '人数' FROM javastu GROUP BY ssex HAVING COUNT(*)>5;

    练习题案例:

    1. 查询出部门编号为30的所有员工
    2. 所有销售员的姓名、编号和部门编号。
    3. 找出奖金高于工资的员工。
    4. 找出奖金高于工资60%的员工。
    5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。

    6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。

    7. 无奖金或奖金低于1000的员工。
    8. 查询名字由三个字组成的员工。
    9.查询2000年入职的员工。
    10. 查询所有员工详细信息,用编号升序排序
    11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序

    12.查询姓周的两个名字的员工。

    13.查询所有姓张的员工。

    14.查询该部门有多少个岗位,每个岗位有多少人。

    15.查询哪个岗位中人数大于3。

    CREATE TABLE emp2(
        empno  INT,
        ename  VARCHAR(20),
        job   VARCHAR(20),
        mgr  INT,
        hiredate DATE,
        sal DOUBLE(10,2),
        comm DOUBLE(10,2),
        deptno INT  
    
    )
    SELECT * FROM  emp2;
    INSERT INTO emp2 VALUES(1001,'甘宁','文员',1013,'20001217',8000,NULL,20);
    INSERT INTO emp2 VALUES(1002,'黛绮丝','销售员',1006,'20010220',16000,3000,30);
    INSERT INTO emp2 VALUES(1003,'殷天正','销售员',1006,'20010222',12500,5000,30);
    INSERT INTO emp2 VALUES(1004,'刘备','经理',1009,'20010402',29750,NULL,20);
    INSERT INTO emp2 VALUES(1005,'谢逊','销售员',1006,'20010928',12500,14000,30);
    INSERT INTO emp2 VALUES(1006,'关羽','经理',1009,'20010501',28500,NULL,30);
    INSERT INTO emp2 VALUES(1007,'张飞','经理',1009,'20010901',24500,NULL,10);
    INSERT INTO emp2 VALUES(1008,'诸葛亮','分析师',1004,'20070419',30000,NULL,20);
    INSERT INTO emp2 VALUES(1009,'曾阿牛','董事长',NULL,'20011117',50000,NULL,10);
    INSERT INTO emp2 VALUES(1010,'韦一笑','销售员',1006,'20010908',15000,0,30);
    INSERT INTO emp2 VALUES(1011,'周泰','文员',1008,'20070523',11000,NULL,20);
    INSERT INTO emp2 VALUES(1012,'程普','文员',1006,'20011203',9500,NULL,30);
    INSERT INTO emp2 VALUES(1013,'庞统','分析师',1004,'20011203',30000,NULL,20);
    INSERT INTO emp2 VALUES(1014,'黄盖','文员',1007,'20020123',13000,NULL,10);
    INSERT INTO emp2 VALUES(1015,'张三','保洁员',1001,'20130501',80000,50000,50);
    SELECT ename FROM emp2 WHERE deptno=30;
    SELECT ename,empno,deptno FROM emp2 WHERE job='销售员';
    SELECT ename FROM emp2 WHERE comm>sal;
    SELECT ename FROM emp2 WHERE comm>sal*0.6;
    SELECT * FROM emp2 WHERE (deptno=10 AND job='经理') OR (deptno=20 AND job='销售员');
    

    SELECT * FROM emp2 WHERE (deptno=10 AND job='经理') OR (deptno=20 AND job='销售员') OR (job <>'经理' AND job<>'销售员'
    AND sal>=20000);

    SELECT ename FROM emp2 WHERE comm IS NULL OR comm='' OR comm<=1000;
    SELECT ename FROM emp2 WHERE ename LIKE '___';
    SELECT ename FROM emp2 WHERE hiredate LIKE '2000-%';
    SELECT * FROM emp2 ORDER BY empno ASC;
    SELECT * FROM emp2 ORDER BY sal DESC,hiredate ASC;
    SELECT ename FROM emp2 WHERE ename LIKE '周_';
    SELECT ename FROM emp2 WHERE ename LIKE '张%';
    SELECT job,COUNT(*) AS '人数' FROM emp2 GROUP BY job;
    SELECT job,COUNT(*) AS '人数' FROM emp2 GROUP BY job HAVING COUNT(*)>3;

     

  • 相关阅读:
    centos7上以RPM方式安装MySQL5.6
    区别和详解:jQuery extend()和jQuery.fn.extend()
    jQuery笔记总结
    CSS Hack的一些知识
    12种不宜使用的javascript的语法
    64位Win7系统下vs2010调试无法连接oracle解决办法
    HashCode()与equals()深入理解
    Java ArrayList自动扩容机制
    Java基础知识
    MySQL的MVCC机制
  • 原文地址:https://www.cnblogs.com/jason111/p/8558160.html
Copyright © 2020-2023  润新知