1、常见的关系型数据库及非关系型数据库、优缺点
关系型数据库:mysql /oracle/sql server/sqlite
优点:1、都使用表结构,已于维护;2、SQL语言通用,使用方便;3、支持一个表以及多个表之间非常复杂的查询。
缺点:1、读写性能比较差,尤其是海量数据的高效率读写;2、高并发读写需求,硬盘I/O是一个很大的瓶颈。
非关系型数据库:redis / hbase /mongoDB /CouchDB
优点:1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等;2、读写速度快;3、高扩展性;4、成本低
缺点:1、不提供sql支持,学习和使用成本较高;2、无事务处理;3、数据结构相对复杂,复杂查询方面稍欠
2、索引的好处和缺点
好处:1、通过创建索引,可以在查询的过程中,提高系统的性能;2、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;3、在使用分组和排序子句进行数据检索时,可以减少查询中分组和排序的时间
缺点:1、创建索引和维护索引要耗费时间,而且时间随着数据量的增加而增大;2、索引需要占用物理空间,如果要建立聚簇索引,所需要的空间会更大;3、在对表中的数据进行增加删除和修改时需要耗费较多的时间,因为索引也要动态地维护
索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行写/更新操作时,还需要操作索引文件
3、哪些情况适合创建索引,哪些情况不适合创建索引
应该创建索引:1、经常需要搜索的列;2、作为主键的列;3、经常用在连接的列,这些列主要是一些外键,可以加快连接的速度;4、经常需要根据范围进行搜索的列;5、经常需要排序的列;6、经常使用在where子句上面的列;
不应该创建索引:1、查询中很少用到的列;2、对于那些具有很少数据值的列.比如性别;3、对于那些定义为text,image的列;4、当对修改性能的要求远远大于搜索性能时.因为当增加索引时,会提高搜索性能,但是会降低修改性能
4、索引常见操作
create [unique] [clustered] [nonclustered] index index_name on {tabel/view} (column[dese/asc][....n])
单独建索引:
CREATE INDEX idx_no_name ON customer(customer_no,customer_name);
#删除索引:
DROP INDEX idx_no_name on customer ;
查看索引
show index from customer
5、left join、right join、inner join区别
left join 左连接,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据
select * from A left join B on A.id = B.id
right join 右连接,查出来的结果显示右边的所有数据,然后左边边显示的是和右边有交集部分的数据
select * from A right join B on A.id = B.id
inner join 内连接,表示以两个表的交集为主,查出来是两个表有交集的部分
select * from A inner join B on A.id = B.id
6、limit n,m
limit N,M N,从哪个位置开始 ,M 需要查找的数据量
SELECT * FROM tablename LIMIT 5,10; //检索记录行6-15
7、建表支持表情输入的charset
CHARSET=utf8mb4 才支持表情等的输入
8、两张表数据复制
复制表机构和数据
CREATE TABLE 新表 AS SELECT * FROM 旧表
复制表机构
CREATE TABLE 新表 AS SELECT * FROM 旧表 where 1=2
复制旧表数据到新表(表结构一致)
INSERT INTO 新表 SELECT * FROM 旧表
复制旧表数据到新表(表结构不一致)
INSERT INTO 新表(字段1,字段2,…….) SELECT 字段1,字段2,…… FROM 旧表
9、事务的四个特性
ACID是衡量事务的四个特性
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
10、查看建表语句、表结构
show create table 表名;查看建表语句
DESC 表名 ; 查看表结构
11、修改表名
ALTER TABLE 旧表名 RENAME TO 新表名 ;
12、事务的隔离级别 为什么可以隔离,锁的机制
事务问题:脏读;不可重复读;幻读;
事务等级:1、读未提交;2、读提交;3、可重读;4、可串行化
https://blog.csdn.net/zhouym_/article/details/90381606
13、数据库的锁分类、锁机制
从数据库系统角度分为三种:排他锁、共享锁、更新锁。
从程序员角度分为两种:一种是悲观锁,一种乐观锁。
https://blog.csdn.net/weixin_39651041/article/details/79985715
14、Mysql创建表,字段;
https://blog.csdn.net/u010002184/article/details/79354136
15、数据库修改字段/新增字段/删除字段
修改字段:ALTER TABLE 表名 MODIFY [COLUMN] 字段名 新数据类型 新类型长度 新默认值 新注释;
ALTER TABLE 表名 CHANGE [column] 旧字段名 新字段名 新数据类型;
删除字段:ALTER TABLE 表名 DROP [COLUMN] 字段名 ;
新增字段:ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 是否可为空 COMMENT '注释' AFTER 指定某字段 ;
https://blog.csdn.net/u010002184/article/details/79354136
ps这里声明三点:1、以上内容为整理+原创,大部分答案为搜索整理但是部分出处忘记了,如有需要可以联系我加上;2、整理该博文目的在于记录本次跳槽期间遇到的数据库相关问题,供大家分享;3、该篇博文后续会持续更新知识点总结;