zoukankan      html  css  js  c++  java
  • day55

    内容回顾:
    1.数据类型
    -整型
    tinyint
    int
    bigint
    -浮动型
    float
    double
    decimal
    -字符
    定长:char char()
    变长:varchar
    text
    -datetime
    YYYY-MM-DD HH:mm:ss
    -enum
    多选一
    -set集合
    多选一或多选多
    2.约束
    作用:保证数据的完整性和一致性
    -not null 和 default
    不能为空值 设置默认值
    -unique 不同的 唯一的
    -primary key 主键 化学反应===not null + unique
    -auto_increment 自增长 主要应用在主键字段上
    -foreign key 外键
    作用:让两张表产生关系

    今日内容:
    1.外键

    (1)创建被关联(主表)
    create table dep(
    id int primary key auto_increment,
    name varchar(20) not null,
    descripe char(40) not null
    );
    create table emp(
    id int primary key auto_increment,
    name varchar(20) not null,
    age int not null,
    dep_id int,
    constraint fk_dep foreign key(dep_id) references dep(id)
    on delete cascade
    on update cascade
    );

    2.外键的变种
    -一对多或多对一
    书和出版社

       一对多(或多对一):一个出版社可以出版多本书。看图说话。

       关联方式:foreign key

    create table press(
    id int primary key auto_increment,
    name varchar(20)
    );

    create table book(
    id int primary key auto_increment,
    name varchar(20),
    press_id int not null,
    constraint fk_book_press foreign key(press_id) references press(id)
    on delete cascade
    on update cascade
    );
    -多对多
    作者和书籍的关系

    多对多:一个作者可以写多本书,比本书也可以有很多作者

    关联方式:foreign key+一张新的表

    # 创建被关联表author表,之前的book表在讲多对一的关系已创建
    create table author(
    id int primary key auto_increment,
    name varchar(20)
    );
    #这张表就存放了author表和book表的关系,即查询二者的关系查这表就可以了
    create table author2book(
    id int not null unique auto_increment,
    author_id int not null,
    book_id int not null,
    constraint fk_author foreign key(author_id) references author(id)
    on delete cascade
    on update cascade,
    constraint fk_book foreign key(book_id) references book(id)
    on delete cascade
    on update cascade,
    primary key(author_id,book_id)
    );

    一对一

    用户和博客

    一对一:一个用户只能注册一个博客

    关联方式:foreign key+unique
    #两张表: 用户表 (user)和 博客表(blog)
    # 创建用户表
    create table user(
    id int primary key auto_increment,
    name varchar(20)
    );
    # 创建博客表
    create table blog(
    id int primary key auto_increment,
    url varchar(100),
    user_id int unique,
    constraint fk_user foreign key(user_id) references user(id)
    on delete cascade
    on update cascade
    );

    3.单表查询
    select 字段1,字段2... FROM 表名
    WHERE 条件
    GROUP BY field
    HAVING 筛选
    ORDER BY field
    LIMIT 限制条数
    重点中的重点:关键字的执行优先级
    from
    where
    where子句中可以使用
    1.比较运算符:>、<、>=、<=、<>、!=
    2.between 80 and 100 :值在80到100之间
    3.in(80,90,100)值是10或20或30
    4.like 'xiaomagepattern': pattern可以是%或者_。%小时任意多字符,_表示一个字符
    5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not
    group by
    #1、首先明确一点:分组发生在where之后,即分组是基于where之后得到的记录而进行的

    #2、分组指的是:将所有记录按照某个相同字段进行归类,比如针对员工信息表的职位分组,或者按照性别进行分组等

    #3、为何要分组呢?
    取每个部门的最高工资
    取每个部门的员工数
    取男人数和女人数

    小窍门:‘每’这个字后面的字段,就是我们分组的依据

    #4、大前提:
    可以按照任意字段分组,但是分组完毕后,比如group by post,只能查看post字段,如果想查看组内信息,需要借助于聚合函数
    聚合函数
    max()求最大值
    min()求最小值
    avg()求平均值
    sum() 求和
    count() 求总个数
    having
    HAVING与WHERE不一样的地方在于

    #!!!执行优先级从高到低:where > group by > having
    #1. Where 发生在分组group by之前,因而Where中可以有任意字段,但是绝对不能使用聚合函数。

    #2. Having发生在分组group by之后,因而Having中可以使用分组的字段,无法直接取到其他字段,可以使用聚合函数
    select
    distinct
    order by
    按单列排序
    SELECT * FROM employee ORDER BY age;
    SELECT * FROM employee ORDER BY age ASC;
    SELECT * FROM employee ORDER BY age DESC;
    按多列排序:先按照age升序排序,如果年纪相同,则按照id降序
    SELECT * from employee
    ORDER BY age ASC,
    id DESC;
    limit
    示例:
    SELECT * FROM employee ORDER BY salary DESC
    LIMIT 3; #默认初始位置为0

    SELECT * FROM employee ORDER BY salary DESC
    LIMIT 0,5; #从第0开始,即先查询出第一条,然后包含这一条在内往后查5条

    SELECT * FROM employee ORDER BY salary DESC
    LIMIT 5,5; #从第5开始,即先查询出第6条,然后包含这一条在内往后查5条

    1.找到表:from

    2.拿着where指定的约束条件,去文件/表中取出一条条记录

    3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组

    4.将分组的结果进行having过滤

    5.执行select

    6.去重

    7.将结果按条件排序:order by

    8.限制结果的显示条数
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 矩阵加法
    Java实现 蓝桥杯VIP 算法训练 一元三次方程
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 平方计算
    Java实现 蓝桥杯VIP 算法训练 乘法表
    Java实现 蓝桥杯VIP 算法训练 乘法表
    监管只是压倒网盘业务的一根稻草,但不是主要原因(答案只有一个:成本!)
  • 原文地址:https://www.cnblogs.com/jerry-hou/p/12332695.html
Copyright © 2011-2022 走看看