1.是真的猛!SQL 语法速成手册
2.spring框架中都用到了哪些设计模式?
3.SQL语言:DDL、DML、DQL、DCL详解
是真的猛!SQL 语法速成手册
整理非常全面,c 源码 海盗分赃原谅我书读得少,只能用一句卧槽来赞美了!
本文针对关系型数据库的一般语法。限于篇幅,本文侧重说明用法,不会展开讲解特性、原理。
SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
SQL 语法结构包括:
SQL 语法要点,例如:SELECT 与 select、Select 是相同的。
SQL 分类数据定义语言(DDL):
数据定义语言(Data Definition Language,DDL)是 SQL 语言集中负责数据结构定义与数据库对象定义的语言。
DDL 的主要功能是定义数据库对象。
DDL 的核心指令是CREATE、ALTER、DROP。
数据操纵语言(DML):
数据操纵语言(Data Manipulation Language, DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句。
DML 的主要功能是访问数据,因此其语法都是以读写数据库为主。
DML 的核心指令是INSERT、UPDATE、DELETE、SELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。
事务控制语言(TCL):
事务控制语言 (Transaction Control Language, TCL) 用于管理数据库中的事务。这些用于管理由 DML 语句所做的hmset源码更改。它还允许将语句分组为逻辑事务。
TCL 的核心指令是COMMIT、ROLLBACK。
数据控制语言(DCL):
数据控制语言 (Data Control Language, DCL) 是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。
DCL 的核心指令是GRANT、REVOKE。
(以下为 DML 语句用法)
增删改查,又称为 CRUD,数据库基本操作中的基本操作。
插入数据:
插入完整的行、插入行的一部分、插入查询出来的数据
更新数据 删除数据:
删除表中的指定数据、清空表中的数据
查询数据:
查询单列、查询多列、查询所有列、查询不同的值、限制查询结果
子查询:
子查询是嵌套在较大查询中的 SQL 查询。子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择。
子查询的子查询、WHERE 运算符描述、运算符描述:=等于、<>不等于、注释:在 SQL 的一些版本中,该操作符可被写成 !=、>大于、<=小于等于、BETWEEN 在某个范围内、LIKE搜索某种模式、IN指定针对某个列的多个可能值。
SELECT 语句中的 WHERE 子句、UPDATE 语句中的 WHERE 子句、DELETE 语句中的 WHERE 子句。
IN 和 BETWEEN:
IN 示例、BETWEEN 示例
AND、jspipe源码OR、NOT:
AND 示例、OR 示例、NOT 示例
LIKE:
% 示例、_ 示例
连接和组合连接(JOIN):
内连接(INNER JOIN)、自连接、自然连接(NATURAL JOIN)、左连接(LEFT JOIN)、右连接(RIGHT JOIN)、组合(UNION)。
组合查询
JOIN vs UNION
函数:
不同数据库的函数往往各不相同,因此不可移植。本节主要以 Mysql 的函数为例。文本处理、函数说明、函数说明、LEFT()、RIGHT()、左边或者右边的字符、LOWER()、UPPER()、转换为小写或者大写、LTRIM()、RTIM()、去除左边或者右边的空格、LENGTH()、长度、SOUNDEX()、转换为语音值、其中,SOUNDEX() 可以将一个字符串转换为描述其语音表示的字母数字模式。
日期和时间处理、函 数说 明、函 数说 明、AddDate()、增加一个日期(天、周等)、AddTime()、增加一个时间(时、phpsql源码分等)、CurDate()、返回当前日期、CurTime()、返回当前时间、Date()、返回日期时间的日期部分、DateDiff()、计算两个日期之差、Date_Add()、高度灵活的日期运算函数、Date_Format()、返回一个格式化的日期或时间串、Day()、返回一个日期的天数部分、DayOfWeek()、对于一个日期,返回对应的星期几、Hour()、返回一个时间的小时部分、Minute()、返回一个时间的分钟部分、Month()、返回一个日期的月份部分、Now()、返回当前日期和时间、Second()、返回一个时间的秒部分、Time()、返回一个日期时间的时间部分、Year()、返回一个日期的年份部分。
数值处理、函 数说 明、函 数说 明、SIN()、正弦、COS()、余弦、cfx源码TAN()、正切、ABS()、绝对值、SQRT()、平方根、MOD()、余数、EXP()、指数、PI()、圆周率、RAND()、随机数。
汇总、函 数说 明、AVG()、返回某列的平均值、COUNT()、返回某列的行数、MAX()、返回某列的最大值、MIN()、返回某列的最小值、SUM()、返回某列值之和、AVG() 会忽略 NULL 行、使用 DISTINCT 可以让汇总函数值汇总不同的值。
排序和分组、ORDER BY、指定多个列的排序方向、GROUP BY、分组、分组后排序、HAVING、使用 WHERE 和 HAVING 过滤数据。
数据定义、DDL 的主要功能是定义数据库对象(如:数据库、数据表、视图、索引等)。
数据库(DATABASE)、创建数据库、删除数据库、选择数据库、数据表(TABLE)、创建数据表、普通创建、根据已有的表创建新表、删除数据表、修改数据表、添加列、删除列、修改列、添加主键、删除主键、视图(VIEW)、创建视图、删除视图、索引(INDEX)、创建索引、创建唯一索引、删除索引、约束、SQL 约束用于规定表中的数据规则、创建表时使用约束条件。
事务处理、(以下为 DCL 语句用法)
权限控制、创建账户、修改账户名、删除账户、查看权限、授予权限、删除权限、更改密码。
存储过程、创建存储过程、使用存储过程。
游标、十二、触发器:
触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。可以使用触发器来进行审计跟踪,把修改记录到另外一张表中。MySQL 不允许在触发器中使用 CALL 语句,也就是不能调用存储过程。BEGIN 和 END、当触发器的触发条件满足时,将会执行BEGIN 和 END 之间的触发器执行动作、注意:在 MySQL 中,分号; 是语句结束的标识符,遇到分号表示该段语句已经结束,MySQL 可以开始执行了、因此,解释器遇到触发器执行动作中的分号后就开始执行,然后会报错,因为没有找到和 BEGIN 匹配的 END、这时就会用到 DELIMITER 命令(DELIMITER 是定界符,分隔符的意思)、它是一条命令,不需要语句结束标识、语法为:DELIMITER new_delemiter、new_delemiter 可以设为 1 个或多个长度的符号、默认的是分号 ;、我们可以把它修改为其他符号、如 $ - DELIMITER $、在这之后的语句、以分号结束、解释器不会有什么反应、只有遇到了 $、才认为是语句结束、注意、使用完之后、我们还应该记得把它给修改回来。
NEW 和 OLD、创建触发器、提示:为了理解触发器的要点、有必要先了解一下创建触发器的指令、CREATE TRIGGER 指令用于创建触发器、语法、说明、示例、查看触发器、删除触发器、复制、推荐阅读、分享一套SpringBoot开发博客系统源码、以及完整开发文档、速度保存、Github上最值得学习的个Java开源项目、涵盖各种技术栈、年最新的常问企业面试题大全以及答案。
spring框架中都用到了哪些设计模式?
面试官提问了 Spring 框架中设计模式的应用。候选者列举了一些常见的设计模式在 Spring 中的运用,如工厂模式(通过 ApplicationContext 或 BeanFactory 获取对象),单例模式(源码里使用 DCL 实现),代理模式(底层原理)以及模板方法模式(在事务管理器中应用),观察者模式(事件驱动模型的实现)。面试官进一步询问了候选者熟悉的设计模式,候选者提及了常见的如工厂模式、代理模式、模板方法模式、责任链模式、单例模式、包装设计模式、策略模式等,并解释了在项目中使用较多的是模板方法模式、责任链模式、策略模式、单例模式。在提及单例模式的实现方式时,候选者详细介绍了饿汉式、简单懒汉式、DCL 双重检查锁、静态内部类和枚举等实现方式,并解释了使用 DCL 的原因是为了避免指令重排问题,需要 volatile 关键字的支持。在项目的实际应用中,候选者提及了责任链模式用于处理请求、模板方法模式用于处理公共逻辑以及代理模式的较少使用。此外,候选者还推荐了一个 Java 开源项目,介绍其业务清晰、注释详细、文档齐全、代码质量高,几乎每个方法和类都有中文注释,且通过阿里开发插件检查,使用了多种可靠稳定的中间件。该项目应用了多种设计模式,并在 GitHub 和 Gitee 上收获了大量 star。最后,候选者提供了项目的 Gitee 链接、GitHub 链接以及项目文档和视频链接,并简述了项目的功能和意义,以及使用教程和工程模块、系统流程的介绍。
SQL语言:DDL、DML、DQL、DCL详解
SQL程序语言的四大类操作为:数据定义语言(DDL)、数据查询语言(DQL)、数据操纵语言(DML)、数据控制语言(DCL)。
数据定义语言(DDL)负责定义数据库结构,包括创建表、聚簇、索引、视图、函数、存储过程和触发器等。其语法主要由CREATE、ALTER、DROP和TRUNCATE构成。
数据操纵语言(DML)负责对数据库进行插入、删除、修改元组的操作,其语法包括insert、update、delete等。
数据查询语言(DQL)用于查询数据库中的数据,最为常用的语句为select。
数据控制语言(DCL)负责授权、回收访问数据库的权限,控制数据库事务发生的时间及效果,例如授权、取消授权、回滚、提交等操作。
接下来对SQL的用户操作进行说明:包括创建用户、给用户授权、撤销授权、查看用户权限、删除用户、修改用户密码等。
总结,SQL程序语言的四大类操作涵盖了数据库的基本操作,分别是数据定义、查询、操纵和控制。
欢迎关注公众号,免费获取海量学习资源。
历史推荐内容包括视频、源码、文档等。