01.SQL高级查询_排序
    1.排序语句:order by 排序字段名  asc(默认的-升序) / desc(降序);
    2.例如:查询所有服装类商品,将查询结果以价格升序排序:
        select * from product where category_id = '服装' order by price asc;
    3.可以对数值类型、日期类型、英文字母的字符串字段进行排序;
    4.对多列进行排序:
        1).需求:查询所有的服装类商品,按价格升序排序,如果价格相同,按生产日期升序排序
             select * from product where category_id = '服装' order by price asc,proDate asc;
        2).排序方式:先按第一列排序,如果第一列的值相同,再按第二列排序。如果第一列的值不同,就忽略第二列的排序。
02.SQL高级查询_聚合函数
    1).count(*(建议)/字段名(不建议)):统计指定列不为NULL的记录行数
        例如:查询所有服装类商品有多少个?
            select count(*) from product where category_id = '服装';
        例如:选择具有各个deptno的员工人数 ?
            SELECT COUNT(ename),deptno FROM emp GROUP BY deptno;
    2).sum(字段):计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0---用于:数值类型
        例如:查询所有服装类商品的总价格
            select sum(price) from product where category_id = '服装';
    3).max(字段):计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算.---用于:数值类型、日期类型
        例如:查询服装类商品的最大价格
            select max(price) from product where category_id = '服装';
              查询服装类商品的最大生产日期
            select max(proDate) from product where category_id = '服装';
    4).min(字段):计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算---用于:数值类型、日期类型
        例如:查询服装类商品的最低价格
            select min(price) from product where category_id = '服装';
              查询服装类商品的最小生产日期
            select min(proDate) from product where category_id = '服装';
    5).avg(字段):计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0----用于:数值类型
        例如:查询服装类商品的平均价格
            select avg(price) from product where category_id = '服装';
    6).关于聚合函数查询的结果列:
        例如:查询服装类商品的最高价格:
            select max(price) from product where category_id = '服装';
              如果想同时显示商品名称,你可能会这样写:
            select max(price),pname from product where category_id = '服装';//pname的结果并不是与max(price)属于同一条记录。
        注意:聚合函数的结果是一个"计算的结果",它与表中的任何记录无关,所以不要同时显示其它列,无意义,不是同一条记录。
        所以:聚合函数的查询结果,应该只包含"聚合函数的结果"不能再包含其他列。
03.SQL高级查询_分组:
    1).需求:一条语句查询出每类商品的最高价格是多少?   
        select max(price),category_id from product group by category_id;     //注意这里不能有where
    2).分组是"手段",通常在分组后,要进行"聚合函数"查询。
    3)."分组查询"的结果字段:应该只包含聚合字段、分组字段。不要再包含其它字段,否则无意义。
    4).练习:查询出每个生产日期的商品的总数是多少?
        select count(*),proDate from product group by proDate;
    5).having子句:对聚合函数的结果的筛选:
        需求:查询出每类商品的总价格是多少?
            select sum(price),category_id from product group by category_id;
              结果中只保留总价大于3000元的信息:
            select sum(price),category_id from product where sum(price) > 3000 group by category_id;//错误的
        说明:where子句不能对聚合的结果进行筛选,因为where子句优先级高,执行的早,那时还没有执行聚合函数,所以不能使用 where对聚合后的结果进行筛选。应该使用:having
                select sum(price),category_id from product group by category_id having sum(Price) > 3000;
    6).SQL语句的编写顺序:
        select  聚合函数 ,字段列表  from 表名  where 条件    group by 分组字段  having 聚合后的筛选条件  order by 排序字段   
       执行顺序:
        1).from
        2).where
        3).group by
        4).执行聚合函数avg,sum...
        5).having
        6).select
        7).order by
having与where的区别:
   1:having是在分组后对数据进行过滤.
          where是在分组前对数据进行过滤
   2:having后面可以使用分组函数(统计函数)
          where后面不可以使用分组函数。
 
04.SQL高级查询_分页查询:
    1).使用的语法:limit M,N
       M : 从第几条开始获取(第一条索引为:0)
       N : 取多少条(每页显示的条数)
    2).例如:分页查询product表,每页显示4条
        第一页:
            select * from product limit 0,4
        第二页:
            select * from product limit 4,4
        第三页:
            select * from product limit 8,4
        .....
        第N页 :
            select * from product limit (N(当前页数) - 1) * 每页条数 ,每页条数
    3).注意:
        1).M和N:必须是正整数,否则抛异常。
        2).如果M为0,可以省略,例如:
            select * from product limit 3;//select * from product limit 0,3
05.MySQL的备份与恢复:
    1).备份:将数据库软件中的"逻辑数据库","表","数据"等信息导出到一个外部文件中。可以用于数据库的备份和迁移。
          在SQLYog中:选中要备份的数据库-->右键-->备份/导出-->以SQL转储文件的形式备份数据库-->打开界面-->上面选择:数据和结构。中上:指定导出文件的路径和文件名-->执行导出
 
    2).恢复:将外部之前备份的数据库文件重新恢复到数据库中。
          在SQLyog左侧右键--->导入--->打开界面-->选择备份文件的位置--->执行导入
06.SQL约束_概念:
    1).什么是"约束" : 它是在逻辑数据库中创建的一个"对象",跟表一样,"表"也是逻辑数据库中的一个对象。
    2).约束的作用:它可以让数据库软件为我们监控,并强制某些字段的值必须按照某种规则填写,否则,数据库软件将会拦截这些数据。
07.SQL约束_主键约束:----约束和表同级,由数据库分开管理
    1).主键:指在一个表中,用于唯一识别一行记录的一个"对象",它通常是一个字段来表示的,这个字段的值不能重复。
    2).设置主键约束:
        方式一:
            create table teacher(
                id    int    primary key,//设置了主键约束
                tname    varchar(1000),
                tage    int
            )
       方法二: 手动--点中表,右键--更改表
    3).其它说明:
        1).一个表中只能有一个主键;
        2).一个主键可以由一个列组成(常用),也可以由多个列组成(复合主键--不常用)
                name(复合主键)    age(复合主键)    sex
            -------------------------------------------------------
                zhangsan              20                    男
                lisi                         20                    男
                zhangsan              20                    女    //错误
        3).当字段设置为"主键"后,会同时设置:唯一约束、非空约束
    4).删除主键:
        ALTER TABLE 表名 DROP PRIMARY KEY;
    5).关于主键的建议:
        1).主键可以使用int类型(先期使用),也可以使用varchar类型(后期使用)。
        2).主键字段不要使用与业务有关的字段,与业务有关的字段例如:手机号、身份证号.
           一旦发生修改,尤其是在多表时,会非常的麻烦,不好管理。
           所以,建议增加的int类型的无关的字段。
08.SQL约束_自动增长:---MySQL特有的(只能int类型的,而且只能是主键的那一列)
    1).如果由我们程序对"主键"字段的值进行维护,十分的不方便。所以,可以委托给"数据库软件"为这个表的id字段管理这个值。
    2).可以对主键列,设置"自动增长":
    3).设置方式:
        方式一:
            create table teacher(
                id    int    primary key auto_increment,
                tname    varchar(1000),
                tage    int
            )
        添加数据时,可以不指定id列的值,但要用NULL
        insert into teacher values(null,'章子怡',20);
        也可以传值:
        insert into teacher values(2,'章子怡',20);     //得是表中没有的值
    4).基数的设定:
        ALTER TABLE 表名 AUTO_INCREMENT = 100;//自动增长从100开始
    5).清空表:
        1).delete from 表名:不会影响increment的基数     (依然按原先基数增加)
        2).truncate 表名:会将基数从头再来。(基数会 从1重新开始)
09.SQL约束_非空约束:
    1).它可以约束某个字段,不接受NULL值。
    2).设置方式:
        方式一:
            create table teacher(
                id    int    primary key auto_increment,
                tname    varchar(100) not null,
                tage    int
            )
        添加数据时:
        insert into teacher(null,null,20);//错误,第二个字段不允许为NULL
        insert into teacher(null,'',20);//可以。
    3).删除非空约束:
        ALTER TABLE 表名 MODIFY 字段名 数据类型(长度) [只要后面的约束中不出现not null约束,就表示将之前的not null约束删掉]
10.SQL约束_唯一约束:
    1).它可以约束某字段的值,必须唯一。但允许有多个NULL
    2).设置方式:
        方式一:
            create table teacher(
                id    int    primary key auto_increment,
                tname    varchar(100) not null,
                tage    int,
                phoneNum    char(11)  unique
            )
        方式三:
            ALTER TABLE 表名 ADD  UNIQUE (字段名) ;
    3).注意:它和主键的区别:
        1).主键:非空并且,唯一
        2).唯一:只唯一,但允许有多个NULL值。
    4).删除唯一约束:
        ALTER TABLE 表名 DROP INDEX 字段名.     //比较特殊,用drop关键字,并且不能通过手动删除"唯一约束"
11.SQL约束_默认约束:
    1).它可以设定某个字段的"默认值",在添加数据时,可以添加一个值,也可以使用这个默认值;
    2).设置方式:
        方式一:
            create table teacher(
                id    int    primary key auto_increment,
                tname    varchar(100) not null,
                tage    int,
                schemaName     varchar(1000)  default '新东方公司'
            )
        添加数据时:
        insert into teacher values(null,'章子怡',20,default);     //使用了默认值
    3).删除默认约束:
        ALTER TABLE 表名 MODIFY 字段名 数据类型(长度) [约束列表中不出现default约束即可]
 
 
 
 
 
 
 

2.mysql高级查询的更多相关文章

  1. 第四章 MySQL高级查询(二)

    第四章 MySQL高级查询(二) 一.EXISTS子查询 在执行create 或drop语句之前,可以使用exists语句判断该数据库对像是否存在,返回值是true或false.除此之外,exists ...

  2. 第三章 MySQL高级查询(一)

    第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...

  3. MySQL 高级查询操作

    目录 MySQL 高级查询操作 一.预告 二.简单查询 三.显示筛选 四.存储过程 五.查询语句 1.作为变量 2.函数调用 3.写入数据表 备注 附表一 附表二 相关文献 博客提示 MySQL 高级 ...

  4. python进阶09 MySQL高级查询

    python进阶09 MySQL高级查询 一.筛选条件 # 比较运算符 # 等于:= 不等于:!= 或<> 大于:> 小于:< 大于等于>= 小于等于:<= #空: ...

  5. MySQL高级查询与编程作业目录 (作业笔记)

    MySQL高级查询与编程笔记 • [目录] 第1章 数据库设计原理与实战 >>> 第2章 数据定义和操作 >>> 2.1.4 使用 DDL 语句分别创建仓库表.供应 ...

  6. MySQL高级查询与编程笔记 • 【目录】

    章节 内容 实践练习 MySQL高级查询与编程作业目录(作业笔记) 第1章 MySQL高级查询与编程笔记 • [第1章 数据库设计原理与实战] 第2章 MySQL高级查询与编程笔记 • [第2章 数据 ...

  7. Day3 MySql高级查询

    DQL高级查询 多表查询(关联查询.连接查询) 1.笛卡尔积 emp表15条记录,dept表4条记录. 连接查询的笛卡尔积为60条记录. 2.内连接 不区分主从表,与连接顺序无关.两张表均满足条件则出 ...

  8. MySQL高级查询 & 事务机制

    1.基础查询where 高级条件查询Where子句 SELECT empno,ename,sal,hiredate FROM t_tmp WHERE deptno=10 AND (sal+IFNULL ...

  9. MySQL高级查询语句

    高级查询: 一:多表连接 1.select Info.Code,Info.Name,Nation.Name from Info,Nation where Info.Nation = Nation.Co ...

随机推荐

  1. python MD5操作

    def my_md5(str): import hashlib new_str = str.encode() #把字符串转成bytes类型 # new_str = b'%s'%str #把字符串转成b ...

  2. 使用jquery-tmpl使JavaScript与HTML分离

    背景:由于对JavaScript字符串拼接JavaScript变量产生了反感,也想用用JavaScript模板库,看了几个,由于时间原因选择了jQuery.tmpl.js,因为Visual Studi ...

  3. 【BZOJ3620】似乎在梦中见过的样子 KMP

    [BZOJ3620]似乎在梦中见过的样子 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个 ...

  4. 【BZOJ3995】[SDOI2015]道路修建 线段树区间合并

    [BZOJ3995][SDOI2015]道路修建 Description  某国有2N个城市,这2N个城市构成了一个2行N列的方格网.现在该国政府有一个旅游发展计划,这个计划需要选定L.R两列(L&l ...

  5. 【BZOJ2005】[Noi2010]能量采集 欧拉函数

    [BZOJ2005][Noi2010]能量采集 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把 ...

  6. A Secret(KMP)

    A Secret Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 256000/256000 K (Java/Others)Total ...

  7. jQuery之获取select选中的值

    本来以为jQuery("#select1").val();是取得选中的值, 那么jQuery("#select1").text();就是取得的文本. 这是不正确 ...

  8. 子单元通过 prop 接口与父单元进行了良好的解耦

    https://cn.vuejs.org/v2/guide/#起步 现在,我们可以使用 v-bind 指令将待办项传到循环输出的每个组件中: <div id="app-7"& ...

  9. Python3.6全栈开发实例[025]

    25.文件a1.txt内容(升级题)name:apple price:10 amount:3 year:2012name:tesla price:100000 amount:1 year:2013通过 ...

  10. SAP内存、ABAP内存、共享内存的 区别

    区别: (1)SAP内存使用 SET/GET parameters 方法: SET  PARAMETER  ID  ‘MAT’ field P_MATNR. GET  PARAMETER  ID  ‘ ...