> 文档中心 > mysql设计与约束

mysql设计与约束


DQL:查询语句

  1. 排序查询

    1. 语法: order by 子句

    2. 排序方式:

      1. ASC : 升序 ,默认

      2. DESC : 降序

    3. 注意: 如果有多个排序条件 ,只有满足前面的条件,才会判断下一个条件

  2. 聚合函数: 将一列数据作为一个整体,进行纵向的计算

    1. max(列名)

    2. min(列名)

    3. avg(列名)

    4. conut(列名)

      1. 一般选择非空的列: 主键

      2. count(*)

    5. sum(列名)

      注意 : 排除null值,使用ifnull函数

      ifnull(列名,0)

  3. 分组查询:

    1. 语法:group by 分组字段

    2. 注意:

      1. 一般分组会和聚合函数一起用

      2. where和having的区别:

        1. where在分组前,不满足条件不参与分组,having在分组后,过滤数据

        2. where后面不可以使用聚合函数,having后面可以使用聚合函数

        -- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

        select sex, avg(math) ,count(id) from student where math > 70 group by sex set having count(id) > 2;

  4. 分页查询

    1. 语法: limit 开始索引,每页查询的条数;

    2. 公式: 开始的索引 = (当夜的页码 - 1 ) * 每页显示的条数

      -- 每页显示3条记录

      select * from student limit 0,3; -- 第一页

      seltct * from student limit 3,3; -- 第二页

    3. limit 是一个mysql的方言

    约束

    分类:

    1. 主键约束: primary key

    2. 非空约束:not null

    3. 唯一约束:unique

    4. 外键约束:foreign key

    非空约束:not null,某一列的值不能为null

    1. 创建表时添加约束

      CREATE TABLE stu(

      id INT,

      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);

    唯一约束:unique, 某一列的值不能重复

    1. 注意:

      唯一约束可以有null值,但是只能有一条记录为null

    2. 在创建表时,添加唯一约束

      CREATE TABLE stu(

      id INT,

      phone_number VARCHAR(20) UNIQUE -- 手机号

      );

    3. 创建表后,添加唯一约束

      ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

    4. 删除唯一约束

       ALTER TABLE stu DROP INDEX phone_number;

    主键约束:primary key

    1. 注意

      含义:非空且唯一 2. 一张表只能有一个字段为主键

    2. 在创建表时,添加主键约束

      create table stu( id int primary key,-- 给id添加主键约束 name varchar(20) );

    3. 创建表后,添加主键约束

      ALTER TABLE stu MODIFY id INT PRIMARY KEY;

    4. 删除主键

      ALTER TABLE stu DROP PRIMARY KEY;

    5. 自动增长:

      1. 数值类型

      2. 在创建表时,添加主键约束,并且完成主键自增长

        create table stu( id int primary key auto_increment,-- 给id添加主键约束 name varchar(20) );

      3. 添加自动增长

        ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

      4. 删除自动增长

        ALTER TABLE stu MODIFY id INT;

    外键约束:foreign key, 让表于表产生关系,从而保证数据的正确性

    1. 在创建表时,添加外键

      1. create table 表名( .... 外键列 constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) ); 2.

    2. 创建表后,添加外键约束

      ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

    3. 删除外键

      ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

    4. 级联操作

      1. 添加级联操作

        ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;

      2. 分类:

        1. 级联更新:ON UPDATE CASCADE

        2. 级联删除:ON DELETE CASCADE

数据库的设计

多表之间的设计

  1. 分类

    一对一 2. 一对多 3. 多对多

  2. 实现关系:

    1. 一对一:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。

    2. 一对多: 在多的一方建立外键,指向一的一方的主键。

    3. 多对多:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键

数据库设计的范式

数据库的备份和还原

  1. 命令行:

    1. 备份:mysqldump -u用户名 -p用户名 数据库名称 > 保存的路径

    2. 还原:

      1. 登录数据库

      2. 创建数据库

      3. 使用数据库

      4. source 文件路径;

  2. 图形化工具