《SQL21自学通》是一本致力于帮助读者快速掌握SQL语言的书籍,涵盖了从SQL的基础概念到高级查询技术的全面内容。以下是对该书部分章节的知识点总结与扩展。 ### 第一天:SQL简介 #### SQL简史与数据库简史 SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言,其历史可追溯至1970年代初,由IBM的E.F. Codd提出的关系模型理论为基础发展而来。SQL首次被标准化是在1986年,由ANSI(美国国家标准协会)和ISO(国际标准化组织)共同制定,此后经过多次修订,形成了今天的SQL标准。 数据库的历史更久远,从最初的层次模型、网状模型到现代的关系模型,数据库技术经历了数次革命性的发展。关系模型的提出,使得数据的存储与检索更加灵活高效,而SQL正是为了充分利用这种模型而诞生的。 #### 设计数据库的结构 设计数据库结构是构建有效数据库的关键步骤,涉及选择合适的数据类型、定义主键、外键以及确保数据的一致性和完整性。良好的数据库设计能够提高查询效率,减少数据冗余,并简化数据管理。 #### SQL总览 SQL主要用于执行以下任务: - 数据查询:通过SELECT语句获取所需信息。 - 数据操纵:使用INSERT、UPDATE、DELETE语句进行数据的增删改。 - 数据定义:利用CREATE、ALTER、DROP语句创建、修改或删除数据库对象如表、视图等。 - 数据控制:通过GRANT和REVOKE语句管理用户权限。 #### 流行的SQL开发工具 常见的SQL开发工具有: - SQL Server Management Studio:专为Microsoft SQL Server设计的集成环境。 - MySQL Workbench:适用于MySQL数据库的官方图形化工具。 - Oracle SQL Developer:针对Oracle数据库的免费开发工具。 - phpMyAdmin:一款基于Web的MySQL管理工具,适合远程管理和共享访问。 - DBVisualizer:跨平台的数据库工具,支持多种数据库系统。 ### 第二天:查询——SELECT语句的使用 #### SELECT语句的基本语法 SELECT语句用于从数据库中检索数据,其基本格式如下: ```sql SELECT column_name(s) FROM table_name WHERE condition; ``` 其中,`column_name(s)`表示要检索的列名,`table_name`是数据表的名称,`condition`则是用于过滤结果集的条件表达式。 #### 一般语法规则 - `*`作为通配符,代表所有列。 - 可以使用AS关键字为列名设置别名。 - WHERE子句用于添加筛选条件,如等于(=)、不等于(<>或!=)、大于(>)、小于(<)等比较运算符。 #### 你的第一个查询 示例: ```sql SELECT employee_name, hire_date FROM employees WHERE department_id = 50; ``` 此查询将从`employees`表中选择`employee_name`和`hire_date`两列,条件是`department_id`等于50。 ### 第三天:表达式、条件语句与运算 #### 表达式 SQL中的表达式可以包含常量、变量、列名、函数调用以及算术或逻辑运算符,用于计算或比较数据。 #### 条件语句 包括IF...ELSE、CASE...WHEN等,用于根据不同的条件执行不同的操作。例如: ```sql CASE WHEN sales > 1000 THEN 'High' ELSE 'Low' END AS SalesLevel FROM sales_data; ``` #### 运算 算术运算包括加(+)、减(-)、乘(*)、除(/)等;逻辑运算有AND、OR、NOT等。 ### 第四天:函数 #### 汇总函数 - COUNT:统计非NULL值的数量。 - 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:将字符串转换为数字。 - TO_DATE:将字符串转换为日期。 #### 其它函数 - GREATEST、LEAST:返回一组值中的最大值或最小值。 - USER:返回当前用户的用户名。 ### 第五天:SQL中的子句 #### WHERE子句 用于过滤结果集,只显示满足特定条件的行。 #### STARTING WITH子句 用于模糊匹配字符串的开头。 #### ORDER BY子句 按一列或多列的升序(ASC,默认)或降序(DESC)排序结果集。 #### GROUP BY子句 将数据按一列或多列分组,通常与聚合函数一起使用。 #### HAVING子句 用于过滤GROUP BY子句生成的汇总行,类似于WHERE子句,但应用于聚合后的结果。 #### 子句的综合应用 在复杂查询中,多个子句可以结合使用,形成更精细的数据筛选和整理逻辑。 ### 第六天:表的联合 #### 等值联合 连接具有相同字段的多个表,基于相等条件进行匹配。 #### 不等值联合 当连接条件不是相等时,使用不等值联合。 #### 外部联合与内部联合 - 内部联合(INNER JOIN):仅返回两个表中匹配的行。 - 外部联合(OUTER JOIN):返回所有可能的行组合,分为左外部联合(LEFT OUTER JOIN)、右外部联合(RIGHT OUTER JOIN)和全外部联合(FULL OUTER JOIN)。 #### 表的自我联合 当一个表与自身进行联合,通常用于处理具有层次结构的数据。 ### 第七天:子查询 #### 子查询的使用 子查询是一个嵌入在另一个查询中的查询,可以用于各种复杂的筛选和计算。 #### 在子查询中使用汇总函数 可以在子查询中使用COUNT、SUM等函数,以进行数据汇总后再进行外层查询。 #### 子查询的嵌套 子查询可以嵌套多层,实现更为复杂的逻辑。 #### 相关子查询 子查询的结果依赖于外部查询的每行数据,通常用于处理行级的复杂逻辑。 #### EXISTS、ANY、ALL的使用 这些关键字用于处理子查询中的逻辑,如检查是否存在满足条件的行、比较单个值与子查询结果集合等。 ### 第一周回顾 第一周的学习涵盖了SQL的基础知识、常用查询语句、函数使用以及表和数据的管理,为后续深入学习奠定了坚实的基础。接下来的章节将逐步引导读者掌握更高级的SQL技巧,如数据操作、数据库设计和优化等。
- 粉丝: 1
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助