28、数据库三大范式?
第一范式(1NF)
(在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。)
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,第一范式就是无重复的列。强调的是列的原子性,即列不能够再分成其他几列。
第二范式(2NF)
满足第二范式(2NF)必须先满足第一范式(1NF)。另外包含两部分内容,一是表必须有主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
第三范式(3NF)
满足第三范式(3NF)必须先满足第二范式(2NF)第三范式就是非主键列必须直接依赖于主键,不能存在传递依赖。
29、sql优化
- explain sql 分析sql语句,这个语句可以打印出的各种item的意义:
select_type :表示查询中每个select子句的类型
type :表示MySQL在表中找到所需行的方式,又称“访问类型”
possible_keys :指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用。
key :显示MySQL在查询中实际使用的索引,若没有使用索引,显示为NULL。
key_len :表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
ref :表示上述表的连接匹配条件,即哪些列或常量被用于查找索引列上的值
Extra :包含不适合在其他列中显示但十分重要的额外信息
2. 查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?
查询中用到的关键词主要包含6个,并且他们的顺序依次为 select–from–where–group by–having–order by–limit。
其中select和from是必须的,其他关键词是可选的。
(使用having字句对分组后的结果进行筛选,所以having只能用在group by之后;
limit 起始记录位置:取记录的条数对记录进行选取,主要用来实现分页功能)
30、非关系型数据库和关系型数据库区别,优势比较?
非关系型数据库的优势:
性能:NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
可扩展性:同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。
关系型数据库的优势:
复杂查询:可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
事务支持:使得对于安全性能很高的数据访问要求得以实现。
其他:
1.对于这两类数据库,对方的优势就是自己的弱势,反之亦然。
2.NOSQL数据库慢慢开始具备SQL数据库的一些复杂查询功能,比如MongoDB。
3.对于事务的支持也可以用一些系统级的原子操作来实现例如乐观锁之类的方法来曲线救国,比如Redis set nx。
31、什么是 内连接、外连接、交叉连接、笛卡尔积等?
内连接: 只连接匹配的行
左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
例如1:
SELECT a.,b. FROM luntan LEFT JOIN usertable as b ON a.username=b.username
例如2:
SELECT a.,b. FROM city as a FULL OUTER JOIN user as b ON a.username=b.username
全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
交叉连接: 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
例如:
SELECT type,pub_name FROM titles CROSS JOIN publishers ORDER BY type
1.以A,B两张表为例
A left join B
选出A的所有记录,B表中没有的以null 代替
right join 同理
2.inner join
A,B的所有记录都选出,没有的记录以null代替
3.cross join (笛卡尔积)
A中的每一条记录和B中的每一条记录生成一条记录
例如A中有4条,B中有4条,cross join 就有16条记录
32、SQL语言分类
数据查询语言DQL :基本结构是由SELECT子句、FROM子句、WHERE子句组成的查询块。
数据操纵语言DML :1)插入INSERT 2) 更新:UPDATE 3) 删除:DELETE
数据定义语言DDL :用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等如:CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
DDL操作是隐性提交的!不能rollback
数据控制语言DCL :用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。ROLLBACK/COMMIT
(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT;
(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交。其格式为:SQL>SET AUTOCOMMIT ON;
33、like %和-的区别
% 通配符:表示任何字符出现任意次数 (可以是0次)。
_ 通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符。
使用通配符进行模糊查询需要用 like操作符,例:
SELECT * FROM products WHERE products.prod_name like ‘%es%’;
SELECT * FROM products WHERE products.prod_name like ‘_es’;
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
250430)]
[外链图片转存中…(img-TobYHWPI-1710836250430)]
[外链图片转存中…(img-rn2W4E0s-1710836250430)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
[外链图片转存中…(img-UbUavLyV-1710836250431)]