MySQL(2)

tech2023-05-16  103

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.查询

聚合查询

聚合函数:

函数说明示例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;

联合查询 案例:

班级表: 学生表: 课程表: 分数表:

内连接: 假设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:该操作符用于取得两个结果集的并集。当使用该操作符时,不会去掉结果集中的重复行。

最新回复(0)