MySQL(2)

1.数据库约束

约束类型说明示例
NULL约束使用NOT NULL指定列不为空name varchar(30) not null,
UNIQUE唯一约束指定列为唯一的name varchar(30) unique,
DEFAULT默认值约束指定列为空时的默认值age int default 25,
主键约束NOT NULL与UNIQUE的结合id int primary key,
外键约束关联其他表的主键或唯一键foreign key(字段名) references 主表(列)
CHECK约束保证列中的值符合指定的条件check(sex=‘男’ or sex=‘女’)

2.新增

示例:创建一张用户表,设计有name姓名、age年龄、email邮箱、sex性别字段。将学生表中name和email复制进来。

创建用户表:
DROP TABLE IF EXISTS user;
create table user (
id int primary key auto_increment,
name varchar(20) comment ‘姓名’,
age intcomment ‘年龄’,
email varchar(20) comment ‘邮箱’,
sex varchar(1) comment ‘性别’
);

将学生表中的所有数据复制到用户表:
insert into user(name, email) select name, email from student;

3.查询

  1. 聚合查询

聚合函数:

函数说明示例
COUNT返回查询到的数据的数量select COUNT(*) from sc;
SUM返回查询到的数据的总和select sum(math) from sc;
AVG返回查询到的数据的平均值select AVG(chinese + math + english) 平均总分 from sc;
MAX返回查询到的数据的最大值select MAX(math) from sc;
MIN返回查询到的数据的最小值select MIN(math) from sc;

GROUP BY 字句:
SELECT 中使用 GROUP BY 子句可以对指定列进行分组查询。需要满足:使用 GROUP BY 进行分组查询时,SELECT 指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT 中则必须包含在聚合函数中。

示例:查询每个学生的各科成绩平均分。
select name,avg(chinese),avg(math),avg(english) from sc group by name;
在这里插入图片描述

HAVING:
GROUP BY 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 WHERE 语句,而需要用 HAVING。

示例:
select name,avg(chinese),avg(math),avg(english) from sc group by name having avg(math)>90;
在这里插入图片描述

  1. 联合查询
    案例:

    班级表:在这里插入图片描述
    学生表:
    在这里插入图片描述
    课程表:
    在这里插入图片描述
    分数表:

在这里插入图片描述

内连接: 假设A和B两张表进行连接,使用内连接,凡是A表和B表能够匹配上的记录查询出来。AB两张表没有主副之分,两张表是平等的。

select 字段 from 表1 别名1 [inner] join 表2 别名2 on 连接条件 and 其他条件;
select 字段 from 表1 别名1,表2 别名2 where 连接条件 and 其他条件;

示例:查询张飞同学的成绩。

select score from student,score where student.id=score.student_id and name=‘张飞’;
select score from student inner join score on student.id=score.student_id and name=‘张飞’;

外连接:假设A和B两张表进行连接,使用外连接,AB两张表有一张表是主表,有一张表是副表,主要查询主表中的数据,捎带着查询副表,当副表中的数据没有和主表中的数据匹配上,副表自动模拟出NULL与之匹配。外连接分为左外连接和右外连接。如果联合查询,左侧的表完全显示就说是左外连接(左边的表是主表);右侧的表完全显示就说是右外连接(右边的表是主表)。

– 左外连接,表1完全显示
select 字段名 from 表名1 left join 表名2 on 连接条件;
– 右外连接,表2完全显示
select 字段 from 表名1 right join 表名2 on 连接条件;

  • 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。

在这里插入图片描述

  • 右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。

在这里插入图片描述

自连接: 指在同一张表连接自身进行查询。

子查询: 是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

示例:
在这里插入图片描述

合并查询: 在实际应用中,为了合并多个select的执行结果,可以使用集合操作符 union,union all。使用UNION和UNION ALL时,前后查询的结果集中,字段需要一致。

  • union:该操作符用于取得两个结果集的并集。当使用该操作符时,会自动去掉结果集中的重复行。
    在这里插入图片描述

  • union all:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值