前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数据库_02】MySQL-约束

【数据库_02】MySQL-约束

作者头像
用户8250147
发布2021-02-04 10:47:42
7130
发布2021-02-04 10:47:42
举报
文章被收录于专栏:黑马黑马

一、MySQL查询

1. 聚合函数
代码语言:javascript
复制
① 统计
    * 语法
        count(需要统计的字段)
    * 注意
        所有聚合函数都会自动跳过 null,解决方案 count(ifnull(字段,0));或count(*)
    * 示例
        select count(*) from student;
② 最大值
    * 语法
        max(字段)
    * 示例
        select max(math) from student;
③ 最小值
    * 语法
        min(字段)
    * 示例
        select min(math) from student;
④ 求和
    * 语法
        sum(字段)
    * 示例
        select sum(math) from student;
⑤ 平均值
    * 语法
        avg(字段)
    * 示例
        select avg(math) from student;
2. 排序查询
代码语言:javascript
复制
① 语法
    * order by 字段1 asc/desc, 字段2 asc/desc        -- [asc 升序/ desc 降序]
② 注意
    * 不写排序方式默认为 asc
    * 当字段1的值相等时才会按照字段2排序
③ 示例
      -- 查询表中所有数据按照数学升级升序排列
    * select * from student order by math asc;        
3. 分组查询
代码语言:javascript
复制
① 语法    
    * group by 字段
② 注意
    * select 后的查询字段必须为分组字段或聚合函数,否则没有意义
    * where 满足条件才执行分组,条件不可为聚合函数
    * having 分组后满足条件才查询出来,条件可以为聚合函数

    # having 后所接的字段必须经过过滤(即:该字段必须使用),一般与 group by 连用
        * select * from emp having id = 2;             -- √
        * select name from emp having name = 'tom';    -- √
        * select name from emp having id = 2;          -- ×
③示例
      -- 查询在语文大于60分的人中英语大于60分和小于60分的人数
    * select count(*) from student where chinese > 60 group by english > 60;        
4. 分页查询
代码语言:javascript
复制
① 语法
    * limit m,n
② 注意
    * m 为开始的索引,n 为查询出的条数
    * m = (当前页数 - 1) * n
    * limit 是 MySQL 的"方言"
③ 示例
    * select * from student limit 0,5;
5. 综合版查询语句
代码语言:javascript
复制
  -- 查询在语文成绩大于60的人中英语成绩大于60分和小于60分的人数不小于2时分别的人数且按照升序排列,从0开始查询寻5条。
* select count(*) from student where chinese > 60 group by english > 60 having count(*) > 2 order by asc limit 0,5;

二、约束

1. 非空(not null)
代码语言:javascript
复制
① 语法
    * 创建时添加
        create teble student (
            id int not null,
            name varchar(20)
        );
    * 创建后添加
        alter table student modify id int not null;
    * 删除非空约束
        alter table student modify id int;
② 注意
    * 若字段在添加非空约束前含有 null 则必须处理 null 后才能添加
2. 唯一(unique)
代码语言:javascript
复制
① 语法
    * 创建时添加
        create teble student (
            id int unique,
            name varchar(20)
        );
    * 创建后添加
        alter table student modify id int unique;
    * 删除唯一约束
        alter table student drop index id;
② 注意
    * 若字段在添加唯一约束前含有相同数据则必须先处理数据后才能添加
3. 主键(primary key)
代码语言:javascript
复制
① 语法
    * 创建时添加
        create teble student (
            id int primary key,
            name varchar(20)
        );
    * 创建后添加
        alter table student modify id int primary key;
    * 删除唯一约束
        alter table student drop primary key; 
② 注意
    * 主键约束在一张表中只能给一个字段添加,否则会报多重主键错误
    * 主键非空且唯一
    * 主键是一张表中记录的唯一标识
4. 自动增长(auto_increment)
代码语言:javascript
复制
① 语法
    * 创建时添加
        create teble student (
            id int primary key auto_increment,
            name varchar(20)
        );
    * 创建后添加
        alter table student modify id int auto_increment;
    * 删除自动增长
        alter table student modify id int; 
② 注意
    * 自动增长只能给 primary key 或者 unique 添加,一张表中只能添加一个
4. 外键(foreign key)
代码语言:javascript
复制
① 语法
    * 创建时添加
        create teble student (
            id int,
            name varchar(20),
            cid int,
            [constraint 外键名称] foreign key 外键字段 references 关联表(关联字段)
        );
    * 创建后添加
        alter table student add [constraint 外键名称] foreign key 外键字段 references 关联表(关联字段);
    * 删除唯一约束
        alter table student drop foreign key 外键名称;
② 注意
    * 若一个表中的字段被另一个表关联则该字段不能直接删除
5. 级联操作
代码语言:javascript
复制
① 级联更新(on uptate cascade)
    * alter table 表名 add [constraint 外键名称] foreign key 外键字段 references 关联表(关联字段) on uptate cascade;
② 级联删除(on delete cascade)
    * alter table 表名 add [constraint 外键名称] foreign key 外键字段 references 关联表(关联字段) on delete cascade;
③ 注意    
    * 很危险,一般不用

三、数据库的备份与恢复

1. 备份
代码语言:javascript
复制
① 语法    
    * mysqldump -u用户名 -p密码 数据库名称 > 保存的路径
2. 恢复
代码语言:javascript
复制
① 进入需要恢复到的数据库
② source 恢复文件路径
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、MySQL查询
    • 1. 聚合函数
      • 2. 排序查询
        • 3. 分组查询
          • 4. 分页查询
            • 5. 综合版查询语句
            • 二、约束
              • 1. 非空(not null)
                • 2. 唯一(unique)
                  • 3. 主键(primary key)
                    • 4. 自动增长(auto_increment)
                      • 4. 外键(foreign key)
                        • 5. 级联操作
                        • 三、数据库的备份与恢复
                          • 1. 备份
                            • 2. 恢复
                            相关产品与服务
                            云数据库 MySQL
                            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档