数据库_wyyhuli

数据库
1、数据库查询1000条语句,统计一个表中记录数
答:select count(*) from
2、数据库索引,底层实现
答:索引是对数据库表中一列或多列排序的一种结构
作用:提高查询速度、可以确保数据的唯一性、加速表之间的连接、减少分组或排序的时间
索引可以在任何属性(主键,只能针对字段)
类型:唯一索引(主键索引,聚簇索引、关键索引,有可能系统生成一个唯一的属性方便生成索引)和非主键索引(普通索引,字段有可能出现重复)、密集索引(经过一次查找,可以查到我想要的所有的数据)和稀疏索引(根据索引进行回表操作) 。

数据结构:B+树优点:平衡多路查找树,非叶子节点关键字存储数据索引,叶子节点才可以存数据。叶子节点是相连的(相当于链表,方便查找),查找性能是稳定的;内部结点中key都按照从小到大排列、左右子树同B树、每个叶子结点都存有相邻叶子结点的指针、父节点存有右孩子的第一个元素的索引。
使用B树(类似二叉树,每一个结点存在很多数据)时数据有可能存在非叶子结点。
1、每个结点最多有m-1个关键字、根节点至少有一个关键字、非根节点至少有m/2个关键字2、每个结点的关键字都按照从小到大的顺序排列、每个关键字的左子树所有关键字都小于它(右子树相反)、3、所有的叶子结点都位于同一层4、每个结点都有索引和数据
怎么建立索引:关键字 index 根据实际需要建立索引;unique index唯一索引 addunique 添加索引;primary key建立主键同时创建主键索引;

优缺点:加快记录的查询相关操作,加快表与表之间的连接,加快排序分组;创建索引和维护需要时间空间成本,记录越多成本越高,会降低表的增删改的效率,需要进行动态维护。
MySQL数据库 语句查询
例如:学生表有两个字段(姓名、分数)查出前十名的学生名单;再加一个 科目字段,查出总分数前十名的学生名单
查询单科成绩前十:mysql语句为:
select * from student order by subject desc limit 10;
查询总分成绩前十:mysql语句为:
select sum(subject) subject,name from student group by name order by subject desc limit 10;
sum(subject) subject 把单科成绩加总用subject 来命名,order by subject 这句的意思是按照总分成绩排序,这里的subject 是前面重命名总分的意思。
1、事务的特性
答:原子性(要么完全成功,失败不影响数据库)、一致性(之前之后必须处于一致性状态)、隔离性(多个并发事物之间要相互隔离)、持久性(一旦一个事物提交了,结果对数据的改变是永久的)
2、外键一般都是另一个表的主键
3、排序order by(默认升序) group by(分组) having (分组后进行筛选,也可以使用聚合函数)
操作执行顺序:from、where、group by、having、select、order by
4、数据库锁
答:(只有给数据加锁的事物可以读和修改被加锁的数据)写锁(共享锁)、(在给数据加锁的事物释放锁之前,其他事物只能读不能修改)读锁(排它锁)
5、悲观锁:当我们要对一个数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发。降低效率,有可能引起死锁。
乐观锁:乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。
6、删除drop delete truncate
Delete:数据库操纵语言删除表中数据(可删表),可以回滚找回数据
Truncate:数据库定义语言,删除表中所有数据,不能回滚rollback找回
Drop:数据库定义语言,表示删除表,也可以删除数据库,不能回滚找数据
1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表。
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。
2、truncate (清空表中的数据):删除内容、释放空间但不删除定义(保留表的数据结构)。与drop不同的是,只是清空表数据而已。
注意:truncate 不能删除行数据,要删就要把表清空。
3、delete (删除表中的数据):delete 语句用于删除表中的行。delete语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作truncate与不带where的delete :只删除数据,而不删除表的结构(定义)
4、truncate table 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用delete。如果要删除表定义及其数据,请使用 drop table 语句。
5、对于由foreign key约束引用的表,不能使用truncate table ,而应使用不带where子句的delete语句。由于truncate table 记录在日志中,所以它不能激活触发器。
6、执行速度,一般来说: drop> truncate > delete。
7、delete语句是数据库操作语言(dml),这个操作会放到 rollback segement 中,事务提交之后才生效;如果有相应的 trigger,执行的时候将被触发。
7、数据库的左右连接,内连接
内连接:inner join 两个表所有行相交结果
外连接:1左连接:left outer join A表所有行匹配B表的结果
2右连接:right outer join B表所有行匹配A表的结果
3全连接:Full outer join 两个表所有行并上的结果
8、视图的作用
答:简化复杂的查询、限制数据访问(只能访问到select语句所涉及的列) 虚拟表
9、并发一致性的四个阶段:多用户、触发锁、发生拥塞死锁、锁持续。
10、脏读:读到其他事物修改未保存的数据 不可重复读:两次读到的数据不一样丢失修改。
11、MySQL逻辑结构:客户端、核心服务、存储引擎
12、给定一个表,有ID(不连续),Name,怎么获取第20条到第40条数据记录。
答:select * form Table-Name limit 19,20 从20条记录开始累加到20条id记录
13、A表ID,Name B表Name、Grade怎么通过ID查询每个学生的成绩
答:将两个表连接,将name作为外键;或者将两个表进行左连接(没有外键连接好)
14、查找表中出现三次的字段
答:select * From Table-Name where Name in(select Name form Table-Name group by Name having count(Name)>3 )
15、三张表连接条件查询
答:A,B,C连接可以用in,或两个 join 表名on(连接字段),然后条件查询还是where
15、单表条件查询 where
16、常见面试题(关键字)
答:like‘关键字’ 查询以关键字开头的记录(第几位前面加_,包含%)
Sum()求和、count()计算、 group by 分组、having分组后条件查询、order by查询(默认升序)、union all记录合并、
17、数据库引擎
答:数据库引擎是用于存储、处理和保护数据的核心服务。
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能。
19、数据库特点:数据结构化、数据的共享性高,冗余度低,易扩充、数据独立性高、数据由数据管理系统管理和控制。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值