写点什么

Java 开发全套学习!MySQL 进阶,秒变大神 (1)

发布于: 1 小时前

1、当一个查询你需要频频的作为子查询使用时,视图可以简化代码,直接调用而不是每次都去重复写这个东西。


2、系统的数据库管理员,需要给他人提供一张表的某两列数据,而不希望他可以看到其他任何数据,这时可以建一个只有这两列数据的视图,然后把视图公布给他。


创建视图 sql 语句:



CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
复制代码


视图与表的区别:



1、视图是已经编译好的sql语句,而表不是。
2、视图没有实际的物理记录,而表有。
3、表是内容,视图是窗口。
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能由创建的语句来修改。
5、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
6、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
7、视图的建立和删除只影响视图本身,不影响对应的基本表。
8、不能对视图进行update或者insert into操作。
复制代码


白嫖资料

28、数据库三大范式?

第一范式(1NF)


(在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。)


所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,第一范式就是无重复的列。强调的是列的原子性,即列不能够再分成其他几列。


第二范式(2NF)


满足第二范式(2NF)必须先满足第一范式(1NF)。另外包含两部分内容,一是表必须有主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。


第三范式(3NF)


满足第三范式(3NF)必须先满足第二范式(2NF)第三范式就是非主键列必须直接依赖于主键,不能存在传递依赖。

29、sql 优化

  1. 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%’;

最后

更多 Java 进阶学习资料、2021 大厂面试真题、视频资料可以**点击这里获取到免费下载方式!**


学习视频:



大厂面试真题:



用户头像

还未添加个人签名 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
Java开发全套学习!MySQL进阶,秒变大神(1)