第二天 的 mysql

要有态度! 不会爆炸! 

数据库第二天
    一、DQL:查询语句
        1、排序查询
            order by 子句  
                order by  排序 字段1,排序方式1; 排序字2 排序方式2..........
            排序方式
                ASC
                    升序默认的
                DESC
                    降序
                注意
                    如果有多个排序条件,则当前的条件值一样时,才会判断第二条件。
        2、聚合函数
            1、count :计算个数
                1、一般选择非空的列:主键
                count(*);
            将一列数据作为一个整体,进行纵向的计算
            2、max 计算最大值
            3、min计算最小值
            4、sum 计算和
            5、avg 计算平均值
            注意:聚合函数的计算,会排出null值
                解决方案:
                    1、选择不包含非空的列进行计算
                    IFNULL函数
        3、分组查询:
            1、语法:
                group by 分组字段
                    注意:
                        1、分组之后查询的字段:分组字段,聚合函数
                        ****where 和 havaing 的区别
                            where在分组之前进行限定,如果不满足条件,则不参与分组。 having 在分组之后进行限定,如果不满足结果,则不会被查询出来。
                            where 后不可以跟聚合函数,having 可以进行聚合函数的判断。
        4、分页查询
            limit 开始的索引,每页查询的条数
                开始的索引=(当前的页码-1)*每页显示的条数
                公式:开始的索引=(当前的页码-1)*每页显示的条数
    二、约束
        概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。
            1、主键约束: primary key
                1、注意事项
                    含义:非空且 唯一
                    一张表只能有一个字段为主键
                    主键就是表中记录的唯一标识
                2、在创建表时候,添加主键约束
                      create table stu (     id int primary key,   name varchar(20)     ) ;
                3、删除主键
                    alter table stu drop primary key;
                4、创建完表 添加主键
                    alter table stu modify id int primary key;
                5、自动增长:
                    1、概念 如果是某一列是数据类型的,使用 autp_increment 可以来完成值的自动增长
                    2、 创建表时,添加主键约束,并且完成主键自动增长
                        create table stu ( id int primary key auto_increment, --给id添加主键约束 name varchar(20)   );
                    3、删除自动增长
                         alter table  stu modify id int;
                    4、添加自动增长 
                        alter table stu modify id int auto_increment;
            2、非空约束:not null
                1、   创建表时添加约束
                     name varchar(20),not null -- name为非空
                2、创建表完后,添加非空约束 
                    alter table stu modify name varchar(20) not null;
                3、删除name的非空约束
                    alter table stu modify name varchar(20);
            3、唯一约束:unique
                某一列的值不能重复
                    注意
                        1、 唯一约束可以有nul 值,但是只能有一条记录为null
                        2、创建表的时候,条件唯一约束
                            create table stu(  id int,  phone_number varchar(20) unique ---手机号   )
                        3、删除唯一约束
                            alter table stu drop index phone_number;
            4、外键约束foreign key
                外键约束: foreign key, 让表与表产生关系 从而保证数据的正确性
                1、在创建表时,可以添加外键
                    create table 表名 ( .... 外键列        constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名名称)            );
                2、删除外键,
                    alter table 表名 drop foreing key 外键名称
                3、创建表后 添加外键
                    alter table 表名 add constraint 外键名称 foreing key(外键字段名称)references 主表名称(主表列名称);
                4、级联操作 
                    添加级联操作
                        语法: alter table 表名 add constraint 外键名称     foreing key(外键字段名称)references 主表名称(主表列名称)on update cascade on delete cascade;
                        分类
                            1、级联更新: on update cascade
                            2、级联删除: on delete cascade
    三、多表之间的关系
        1、多表之间的关系
            1、一对一(了解):
                如:人和身份证 分析:一个人只有一个身份证,一个身份证只能对应一个人
            2、一对多(多对一):
                如:部门和员工 分析:一个部门有多个员工,一个员工只能对应一个部门
            3、多对多
                如 学生和课程  分析 一个学生 可以循很多门课程,一个课程 也可以被很多学生选择
        2、实现关系
            1、一对多(多对一)
                如 部门和员工 实现方式:再多的一方建立外键,指向一的一方的主键
            2、多对多: 
                 如 学生和课程  实现方式 多对多关系实现需要借助第三张表中间表
            3、一对一(关系)
                一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键
    四、数据库设计范式
        概念:设计数据库时,需要遵循的一些规范,要遵循后边的范式要求,必须先遵循前边的所有范式要求
        设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据冗余度越小
        目前关系数据库有六种范式,第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(bcnf)第四范式(4nf)、第五范式(5nf)完美范式
        1、第一范式(1nf):每一列都是不可分割的原子数据项
        2、第二范式(2nf):在1nf的基础上,非码属性必须完全依赖于候选码(在1nf基础上消除非主属性对主码的部分函数依赖)
            1、函数依赖:A->B,如果通过A属性(属性值)的值,可以确定唯一B属性的值。则称B依赖于A
            2、完全函数依赖:A->B 如果A是一个属性组 ,则B属性值的确定需要依赖于A属性组中的所有属性值
            3、部分函数依赖 :A->B 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中的某一些值即可
            4、传递函数依赖: A->B ,B->C 如果通过A属性(属性组)的值可以确定唯一B属性的值,在通过B属性(属性组)的值可以确定唯一C的值,则称C传递函数依赖A
            5、码:如果在一张表中,一个属性或属性组,被其他所有属性锁完全依赖,则称这个属性(属性组)为 该表的码
                主属性: 码属性组中的所有属性
                非主属性:除过码属性组的属性
        3、第三范式(3nf):在2nf基础上,任何非主属性不依赖于其他非主属性(在2NF基础上消除传递依赖)
    五、数据库的还原和备份
        命令行: 语法
            *备份 : mysqldump -u用户名 -p密码 >保存的路径
            还原
                1、登录数据库
                2、创建数据库
                3、使用数据库
                4、执行文件。sourse文件路径
    主键 很重要

猜你喜欢

转载自blog.csdn.net/bambooda/article/details/81140646
今日推荐