### 21天学通SQL:详尽学习指南 #### 第一部分:SQL简介与历史 - **SQL简史**:SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,首次由IBM的Donald D. Chamberlin和Raymond F. Boyce在1970年代初期提出。SQL的设计灵感来源于E.F. Codd的关系模型理论。 - **数据库简史**:数据库的发展经历了层次模型、网络模型以及关系模型几个阶段。关系模型自1970年代以来成为主流,并广泛应用于各种商业系统中。 - **设计数据库的结构**:设计良好的数据库结构能够提高数据的一致性和完整性。这包括选择合适的数据类型、定义主键和外键、以及规划表之间的关系等。 - **SQL总览**:SQL语言主要包括数据查询(如SELECT)、数据操纵(如INSERT、UPDATE、DELETE)、数据定义(如CREATE、ALTER、DROP)以及数据控制(如GRANT、REVOKE)等方面的功能。 - **流行的SQL开发工具**:常见的SQL开发工具包括Microsoft SQL Server Management Studio、MySQL Workbench、Oracle SQL Developer等,这些工具提供了图形界面以及脚本编辑等功能,便于用户进行数据库管理。 #### 第二部分:查询与表达式 - **SELECT语句的使用**:SELECT语句是SQL中最基本也是最常用的命令之一,用于从数据库中检索数据。可以通过指定特定的列或使用聚合函数来获取所需的信息。 - **表达式**:表达式是指在SQL中可以计算出一个值的一组符号。例如,可以使用算术表达式来进行数值计算,或者使用逻辑表达式来进行条件判断。 - **条件语句与运算**:在SQL中,可以使用条件语句(如IF…THEN)和逻辑运算符(如AND、OR、NOT)来执行基于不同条件的操作。 - **函数**:SQL提供了丰富的内置函数,可以帮助开发者对数据进行处理。例如: - **汇总函数**:COUNT(计数)、SUM(求和)、AVG(平均值)、MAX(最大值)、MIN(最小值)、VARIANCE(方差)、STDDEV(标准差)。 - **日期/时间函数**:ADD_MONTHS(增加月份)、LAST_DAY(上个月最后一天)、MONTHS_BETWEEN(计算两个日期之间的月份数)、NEW_TIME(转换时区)、NEXT_DAY(下一个工作日)、SYSDATE(系统当前日期和时间)。 - **数学函数**:ABS(绝对值)、CEIL(向上取整)、FLOOR(向下取整)、COS(余弦)、COSH(双曲余弦)、SIN(正弦)、SINH(双曲正弦)、TAN(正切)、TANH(双曲正切)、EXP(自然指数)、LN(自然对数)、LOG(对数)、MOD(取模)、POWER(幂)、SIGN(符号)、SQRT(平方根)。 - **字符函数**:CHR(ASCII码到字符)、CONCAT(字符串连接)、INITCAP(首字母大写)、LOWER(转换为小写)、UPPER(转换为大写)、LPAD(左填充)、RPAD(右填充)、LTRIM(左截断空白)、RTRIM(右截断空白)、REPLACE(替换字符或字符串)、SUBSTR(提取子串)、TRANSLATE(字符替换)、INSTR(查找子串位置)、LENGTH(计算长度)。 - **转换函数**:TO_CHAR(转换为字符)、TO_NUMBER(转换为数字)。 - **其他函数**:GREATEST(最大值)、LEAST(最小值)、USER(获取当前用户名)。 #### 第三部分:SQL中的子句 - **WHERE子句**:WHERE子句用于筛选满足特定条件的行。 - **STARTING WITH子句**:STARTING WITH子句用于指定字符串匹配的起始字符。 - **ORDER BY子句**:ORDER BY子句用于按照指定的列对结果集进行排序。 - **GROUP BY子句**:GROUP BY子句用于将结果集中的行按照一个或多个列的值分组。 - **HAVING子句**:HAVING子句与GROUP BY子句一起使用,用于筛选分组后的结果。 - **子句的综合应用**:通过结合使用不同的子句,可以实现复杂的查询需求,如筛选、排序、分组等。 #### 第四部分:表的联合 - **在一个SELECT语句中使用多个表**:为了获取来自不同表的数据,可以使用JOIN语句来合并多个表。 - **等值联合**:等值联合(也称为等值连接)是在两个表之间建立连接的一种方式,其中连接条件通常是相等的关系。 - **不等值联合**:不等值联合指的是在连接条件中使用不等关系的情况。 - **外部联合与内部联合**:外部联合包括LEFT JOIN、RIGHT JOIN和FULL JOIN,它们可以返回某个表中的所有记录,即使没有匹配的记录也会显示。内部联合(INNER JOIN)只返回两个表中匹配的记录。 - **表的自我联合**:当需要在同一张表中比较不同的行时,可以使用自我联合技术。 #### 第五部分:子查询 - **建立一个子查询**:子查询是一个嵌入到另一个查询中的查询,通常用于筛选主查询中的数据。 - **在子查询中使用汇总函数**:可以在子查询中使用汇总函数来执行计算,然后将结果用于主查询的筛选条件。 - **子查询的嵌套**:子查询不仅可以嵌套在主查询中,还可以嵌套在其他子查询中,从而实现更复杂的逻辑处理。 - **相关子查询**:相关子查询是指那些依赖于外部查询中的某些值的子查询。 - **EXISTS、ANY、ALL的使用**:EXISTS用于检查是否存在满足条件的记录;ANY和ALL则用于比较集合中的值。 #### 第六部分:操作数据 - **数据操作语句**:包括INSERT(插入)、UPDATE(更新)、DELETE(删除)等操作,用于改变数据库中的数据。 - **插入语句**:可以使用INSERT VALUES语句直接插入一行数据,也可以使用INSERT SELECT语句从一个表中复制数据到另一个表。 - **更新语句**:UPDATE语句用于修改现有的数据记录。 - **删除语句**:DELETE语句用于从表中删除一条或多条记录。 - **从外部数据源中导入和导出数据**:可以使用特定工具或命令将数据从其他数据库或文件格式导入到SQL数据库中,同样也可以导出数据到文件或其他数据库系统。 #### 第七部分:创建和操作表 - **CREATEDATABASE语句**:用于创建一个新的数据库。 - **设计数据库**:包括定义表的结构、设置主键和外键等。 - **CREATETABLE语句**:用于创建表,并定义其结构。 - **ALTERTABLE语句**:用于修改已有的表结构。 - **DROPTABLE语句**:用于删除一张表。 - **DROPDATABASE语句**:用于删除整个数据库。 #### 第八部分:创建视图和索引 - **使用视图**:视图可以看作是存储的查询结果,它提供了一种简化的方式来看待数据库中的数据。 - **列的重命名**:在创建视图时,可以使用AS子句来重命名列的名称。 - **SQL对视图的处理过程**:创建视图后,每次访问视图时,SQL引擎都会执行对应的查询语句并返回结果集。 以上内容涵盖了《21天学通SQL》这本书的主要知识点,通过系统地学习这些内容,读者可以掌握SQL的基础知识和高级技巧,从而有效地管理和操作关系型数据库。
剩余567页未读,继续阅读
- 粉丝: 2
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JavaScript函数
- java-leetcode题解之Range Sum Query 2D - Mutable.java
- java-leetcode题解之Random Pick Index.java
- java-leetcode题解之Race Car.java
- java-leetcode题解之Profitable Schemes.java
- java-leetcode题解之Product of Array Exclude Itself.java
- java-leetcode题解之Prime Arrangements.java
- MCU51-51单片机
- java-leetcode题解之Power of Two.java
- java-leetcode题解之Power of Three.java