> 数据库 > MySQL >

数据库之主从表、查询、约束

知识概要:!!!
1.主要掌握排序查询,聚合函数的种类,分组和分页查询;
2.了解对于字段的约束,包括主键约束,非空,唯一,自增长,默认;
3.理清楚主表和从表的关系,掌握外键的使用格式
4.总结多表之间的关系,一对一,一对多,多对多

第一章 .查询记录【重点】
1.1排序查询

格式:
elect *from 表名 order by 字段 ASC/DESC;
特点:
能根据提供的字段进行升序和降序的排列,提供查询结果,
但不会改变数据库内部的排列顺序


1.2聚合函数
函数种类:
聚合函数 作用
max(字段) 用来求该字段的最大值
min(字段) 求字段中的最小值
sum(字段) 求字段值的和
avg(字段) 求字段值的平均值
count(*) 计算出字段的个数
语法格式:
select 聚合函数(字段名/列名)from 表名;


1.3分组查询

格式:
select *from 表名 group by 字段
使用:
通常分组查询会和count(*)函数搭配使用,
因为需要统计分组后各个小组的人数情况
where 和 having 过滤条件的区别:
WHERE HAVING
分组前进行过滤使用 分组后进行数据过滤操作
where中不能使用聚合函数 having中可以使用聚合函数
1.4分页查询

格式:
select *from 表名 limit a , b; (索引默认从0开始)
a: 开始的索引
b: 限制显示的记录个数
特点:
当知道页数n和显示的记录个数m时,可以计算出开始的索引
公式: 索引位置 = (n-1)* m;
查询语句的语法小结

select *from ...  where ...  group by....having ...
order by ...   limit ...

-- 执行的顺序:from >> where >> group by >> select >> having >> order by >> limit


第二章.约束

2.1主键约束

1.主键的概念:

     表中的唯一标识

2.特点:

     唯一且不为空,和 UNIQUE  AND  NOT  NULL 等价


3.自增长:

     和主键搭配使用,使主键的id能够自增


4.使用:

     primary  key  auto_increment


2.2非空,唯一,默认值

非空 NOT NULL 限制字段不能为空
唯一 UNIQUE 限制字段唯一不可重复
默认值 DEFAULT 如果没有给字段赋值,则使用默认值

第三章. 多表


3.1主表和从表

当表①中的数据是来源于表②时, 表①为从表, 表②为主表.


3.2 外键

外键: 从表中的某个字段是来源于主表的, 那么这个字段称之为外键
添加外键: 从表中添加一个外键, 指向主表的主键.
创建表时添加

create table 表 (
… ,
CONSTRAINT 外键名 foreign key(字段) references 主表(主键字段)

)

修改表时添加

alter table 表 add CONSTRAINT 外键名 foreign key(字段) references 表(字段);

删除外键

ALTER TABLE 表 drop foreign key 外键名称;

3.3 外键的练习

-- 创建主表
CREATE TABLE category (
cid INT PRIMARY KEY AUTO_INCREMENT,
cname VARCHAR(20)
)

-- 创建从表
CREATE TABLE product (
pid INT PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20),
price DOUBLE,
pcount INT,
cid INT,
CONSTRAINT pro_cid_cat_cid_fk FOREIGN KEY(cid) REFERENCES category(cid)
)

-- 添加数据
INSERT INTO category (cname) VALUES ('手机数码'), ('交通工具');

INSERT INTO product VALUES (NULL, 'iphoneX', 5399, 40, 1);
INSERT INTO product VALUES (NULL, '华为P30', 8499, 100, 1);
INSERT INTO product VALUES (NULL, '小牛电动车', 8988, 10, 2);
INSERT INTO product VALUES (NULL, '捷安特自行车', 4288, 30, 2);

-- 以下的操作都会报错
-- 添加商品信息, 这个商品信息的分类不存在
INSERT INTO product VALUES (NULL, 'AJ8', 26999, 1, 3);


-- 修改商品表中分类信息, 改为不存在的分类
UPDATE product SET cid = 3 WHERE cid = 2;

-- 修改分类表中的分类信息
UPDATE category SET cid = 3 WHERE cid = 2;


-- 删除主表中的分类信息
DELETE FROM category WHERE cid = 2;


3.4 外键约束(了解)

外键的级联操作

如果修改或者删除了主表中带有外键约束的字段, 会将对应的内容都修改或删除
语法:
创建表时, 直接在外键后面添加: on delete cascade on update cascade
添加外键约束时添加: alter table 表 add constraint … on delete cascade on update cascade
3.5小结

主表和从表: 表①中的数据是来源于表②, 表①是从表, 表②是主表
外键: 从表中来源于主表的字段, 指向主表中的主键(具有唯一约束的字段)
格式: constraint 外建名 foreign key(外键字段) references 主表(主键字段)
知识点-多表间关系
一对多
多对多
一对一


3.1 一对多【重点】

一对多(1 : n): 例如: 班级和学生, 部门和员工, 客户和订单, 分类和商品


3.2 多对多【重点】

多对多(n : m) 例如: 老师和学生, 学生和课程, 用户和角色


3.3一对一【了解】

一对一(1:1) 例如: 老公和老婆, 用户和用户信息


4.小结
一对多: 在多的一方创建一个外键, 指向一的一方的主键

多对多: 创建一张第三方表, 该表至少有两个字段,这两个字段分别作为外键, 指向另外两张表的主键

(责任编辑:IT)