- 查看Linux负载情况的命令
top
free
uptime
mpstat
ifstat
df
2、什么是SQL注入,如何防止SQL注入?
SQL注入(SQL Injection)是一种网络安全漏洞,允许攻击者在应用程序的SQL查询中插入恶意代码。这种攻击通常发生在应用程序没有正确验证或清理用户输入数据的情况下,导致攻击者能够操纵数据库查询,获取、修改或删除敏感信息。
防止sql注入:
使用预编译的语句(Prepared Statements):如使用?占位符,并通过编程语言的库绑定参数。
使用存储过程(Stored Procedures):将SQL代码预先存储在数据库中,并通过参数调用。
验证和清理用户输入:确保用户输入不包含恶意字符或SQL关键字。
使用ORM(Object-Relational Mapping)工具:许多ORM工具会自动处理SQL构建,减少注入风险。
3、简述Mysql中都有哪些索引?
主键索引
唯一索引
常规索引
全文索引
4、简述事务四大的特性,事务的隔离级别,不同隔离级别下的数据会出现的问题
事务的四大特性: 原子性,一致性,隔离性,持久性
读未提交 会出现:脏读,不可重复读,幻读
读提交(不可重复读) 会出现:不可重复读,幻读
可重复读 会出现幻读,InnoDB已经解决该问题
串行化 没有任何数据问题,但是效率低
5、写出Btree 和 B+tree 的区别?
B树(B-Tree)和B+树(B+-Tree)是两种常用的数据结构,特别是在数据库和文件系统中用于实现索引。它们的主要区别:
1. 数据存储位置
B树: 数据可以存储在非叶子节点和叶子节点中。每个节点包含一组键值对,这些键值对按顺序排列。
B+树: 所有数据记录都存储在叶子节点中。非叶子节点仅包含键值,用于指导搜索路径。
2. 节点结构
B树: 每个节点包含多个键值对和多个子节点指针。节点内的键值对和子节点指针数量之间存在一定的关系,以保持平衡。
B+树: 每个非叶子节点包含多个键值和相同数量的子节点指针。叶子节点除了包含数据记录外,还包含指向相邻叶子节点的指针,形成一个链表。
3. 搜索性能
B树: 搜索操作可能需要访问非叶子节点,搜索路径上的每个节点都需要比较和跳转。
B+树: 搜索操作只需访问叶子节点。由于叶子节点形成一个链表,搜索过程中可以快速遍历所有键值。
4. 插入和删除操作
B树: 插入和删除操作可能导致节点分裂或合并,维护树的平衡。
B+树: 插入和删除操作仅影响叶子节点,非叶子节点仅需更新键值和指针信息。
5. 应用场景
B树: 适用于需要快速访问中间节点数据的场景,如文件系统中的目录结构。
B+树: 适用于需要频繁搜索、插入和删除操作的场景,如数据库索引。由于所有数据都在叶子节点,B+树在范围查询和排序方面更具优势。
6、写出你知道的导致索引失效的情况
最佳左前缀法则
主键插入顺序
计算、函数导致索引失效
类型转换导致索引失效
范围条件右边的列索引失效
不等于(!= 或者<>)索引失效
is null可以使用索引,is not null无法使用索引
like以通配符%开头索引失效
OR 前后存在非索引的列,索引失效
数据库和表的字符集统一使用utf8mb4
7、根据表结构完成下面sql语句:
(1)、查询所有学过JAVA这门课且成绩小于60分的学生姓名与性别,并且按学生编号降序排序
select sname,ssex from student
inner join sc on student.sid = sc.sid
inner join course sc.cid = course.cid
where cname = ‘java’ and score < 60
order by student.sid desc;
(2)、在student表中添加字段 srmarks(备注),允许为空,类型字符串,长度400
alter table student add srmarks varchar(400);
(3)、在SC成绩表里,建立学号sid与课程编号cid的联合唯一索引
alter table sc add unique(sid,cid);
(4)、现在课程名为 【数据库】 课程出卷有误,请将该门课程对应成绩表中原成绩小于等于90分的成绩上调 5分
update sc set score = score + 5
where score <= 90 and cid = (
select cid from course where cname= ’数据库’
)
(5)、删除所有没有姓名(为null)的学生信息
delete from student where sname is null;