数据库篇的笔试

数据库篇的笔试

1 sql语句的执行顺序、聚合函数使用条件

依次是: from join on group by having select distinct order by limit
涉及到了后执行的语句不能使用先执行语句中的别名 如:t1等
聚合函数使用需要有where或者having关键字

(1)having后不能使用select查询出来的别名或者字段,但可使用聚合函数
select * from score group by s_id having sum(s_id) > 70;

2 行转列函数

配合case when 字段 as 别名
group by 分组

3 统计空值问题

count(*) count(1) : 会查询出null值的字段列数据,需要处理null值,计入总数,所以速度相对慢的
count(字段名): 不会统计查询出null值的列数据,不计入总数,速度相对快
# 统计非null值的学生数量
select count(student_id) from student; 

4 连表sql

(1)on后面的连接条件不能对字段使用函数,想要使用需要在and后面的条件对字段使用函数。

select * from t1 left join t2 on t1.name = t2.t_name 
left join t3 on t2.s_id = t3.id;

(2)多表下的where条件连表查

select * from t1,t2  where t1.name = t2.t_name and 其他查询条件;
select * from t1,t2,t3  where t1.name = t2.t_name and t3.id = t2.s_id and 其他查询条件;

(1)单表连自己

select  t.*,t2.*  from  bancs_brhm  t join  bancs_brhm  t2  on  t1.s_id = t2.s_id and t1.c_id = 01  and  s1.score > t2.score;
select t.单个字段,t.* from bancs_brhm t;

5 备份与插入操作

create table bancs_brhm_20250201 as select * from bancs_brhm where 条件;
# 从备份表插入  不用as
insert into bancs_brhm select * from bancs_brhm_20250201;

6 mysql的group_concat函数

默认将分组后的某个字段的值,使用逗号拼成一个字段展示(可以对里面内容进行排序并更换其他的分隔符)
select group_concat(c_id) as c1 from student group by id;

7 limit

查询1-100条数据 从第0个开始,取出100条

select * from user limit 0,100

查询出第6-18的数据 共13个

select * from user limit 5,13

8 oracle

(1)将一个字段修改为null

oracle中的’’ 空串就是null

update bancs_brhm set name = '';

9 设计一个学生可以选择多门课的管理课程的流程

(1)由于是学生和课程是多对多关系:通常需要建立3张表,学生表、课程表、学生和课程的关联表(对应学生表的id和课程表的id的外键)为了实现这种关系,通常需要创建第三张表

(2)一对多关系
一个实体可以与另一个实体相关联,另一个实体只能与一个实体关联。如:一个部门有多个员工,1个员工只能对应1个部门。
通常在多的一方,插入一个外键,指向表示一方的表的主键

(3)一对一关系
2个实体之间存在一对一关系,如:一个人只能有一个身份证号
在任意一方插入外键,指向另一方的主键。通常选择在数据量少的一方插入外键,提高效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值