### SQL自学简明教程知识点梳理 #### 一、SQL简介及历史 - **SQL简史:** - SQL(Structured Query Language,结构化查询语言)最初由IBM在20世纪70年代初开发,用于其SYSTEM R项目。 - 1986年,ANSI(美国国家标准协会)和ISO(国际标准化组织)共同制定了SQL的第一个标准版本。 - 随着技术的发展,SQL经历了多次更新和完善,包括SQL-92、SQL-99、SQL:2003等多个版本。 - **数据库简史:** - 数据库技术起源于20世纪60年代末,最初的数据库管理系统(DBMS)主要采用层次模型或网络模型。 - 1970年,E.F. Codd提出了关系模型的概念,为现代数据库技术奠定了基础。 - 关系型数据库管理系统(RDBMS)逐渐成为主流,支持SQL作为其标准查询语言。 - **设计数据库的结构:** - 在设计数据库之前,需要进行需求分析,明确数据库的目的和使用场景。 - 设计阶段涉及实体关系图(ER图)、规范化等步骤,确保数据的一致性和完整性。 - 规范化过程包括消除冗余数据、确保原子性等原则。 - **SQL总览:** - SQL是一种用于管理关系型数据库的标准语言,可以用于执行查询、更新、删除等操作。 - SQL支持多种数据类型,如字符串、数字、日期/时间等。 - SQL还可以与其他编程语言结合使用,实现更复杂的数据处理逻辑。 - **流行的SQL开发工具:** - Oracle SQL Developer:免费的图形化工具,支持多种数据库。 - MySQL Workbench:MySQL官方提供的集成开发环境。 - Microsoft SQL Server Management Studio:适用于SQL Server的强大工具。 - pgAdmin:PostgreSQL的图形化管理工具。 - DBeaver:跨平台的数据库管理工具。 - **SQL在编程中的应用:** - SQL可以通过编程语言如Java、Python、C#等进行调用,实现动态查询、批量数据处理等功能。 - 通过API接口,可以将SQL集成到Web应用程序、移动应用程序等。 #### 二、查询——SELECT语句的使用 - **一般语法规则:** - SELECT用于选择指定的列。 - FROM指定数据来源的表。 - WHERE子句用于过滤结果集。 - ORDER BY用于排序输出结果。 - **你的第一个查询:** - 示例查询:`SELECT column_name FROM table_name;` - 该查询返回指定表中的所有记录,并仅显示指定的列。 - **常用函数:** - **聚合函数**: - `COUNT(column_name)`: 计算某列非NULL值的数量。 - `SUM(column_name)`: 计算某列的总和。 - `AVG(column_name)`: 计算某列的平均值。 - `MAX(column_name)`: 返回某列的最大值。 - `MIN(column_name)`: 返回某列的最小值。 - `VARIANCE(column_name)`: 计算方差。 - `STDDEV(column_name)`: 计算标准偏差。 - **日期/时间函数**: - `ADD_MONTHS(date, num_months)`: 向日期添加月份数。 - `LAST_DAY(date)`: 返回月份的最后一日。 - `MONTHS_BETWEEN(date1, date2)`: 计算两个日期之间的月份数。 - `NEW_TIME(date, current_time_zone, new_time_zone)`: 转换时区。 - `NEXT_DAY(date, day_of_week)`: 返回指定日期后的下一个工作日。 - `SYSDATE`: 返回当前系统日期。 - **数学函数**: - `ABS(number)`: 返回绝对值。 - `CEIL(number)`, `FLOOR(number)`: 向上取整/向下取整。 - `COS(number)`, `SIN(number)`, `TAN(number)`: 三角函数。 - `EXP(number)`: 指数函数。 - `LN(number)`, `LOG(number)`: 对数函数。 - `MOD(dividend, divisor)`: 求模。 - `POWER(base, exponent)`: 幂运算。 - `SIGN(number)`: 符号函数。 - `SQRT(number)`: 平方根。 - **字符函数**: - `CHR(integer)`: 返回对应的ASCII字符。 - `CONCAT(string1, string2, ...)`: 连接字符串。 - `INITCAP(string)`: 将字符串首字母大写。 - `LOWER(string)`, `UPPER(string)`: 转换为小写/大写。 - `LPAD(string, length, pad_string)`, `RPAD(string, length, pad_string)`: 左/右填充。 - `LTRIM(string, trim_string)`, `RTRIM(string, trim_string)`: 左/右修剪。 - `REPLACE(source_string, search_string, replace_string)`: 替换字符串。 - `SUBSTR(string, start, length)`: 获取子字符串。 - `TRANSLATE(source_string, search_string, replace_string)`: 字符替换。 - `INSTR(string, substring[, start])`: 查找子字符串位置。 - `LENGTH(string)`: 返回字符串长度。 - **转换函数**: - `TO_CHAR(value, format)`: 将数值或日期转换为字符串。 - `TO_NUMBER(string[, format_mask])`: 将字符串转换为数值。 - **其他函数**: - `GREATEST(value1, value2, ...)` 和 `LEAST(value1, value2, ...)`: 分别返回最大值和最小值。 - `USER`: 返回当前用户的名称。 - **子句的综合应用:** - **WHERE子句**:用于筛选符合条件的行。 - **STARTING WITH子句**:用于字符串前缀匹配。 - **ORDER BY子句**:按指定顺序排序结果集。 - **GROUP BY子句**:将结果集分组。 - **HAVING子句**:对分组结果进行过滤。 #### 三、表的联合 - **在一个SELECT语句中使用多个表**:通过INNER JOIN、LEFT JOIN等方式将多个表组合在一起。 - **等值联合**:连接条件是相等的。 - **不等值联合**:连接条件不是简单的等于关系。 - **外部联合与内部联合**:外部联合(LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN)保留至少一侧表的所有记录;内部联合(INNER JOIN)只保留两侧表的公共记录。 - **表的自我联合**:一个表与自身连接。 #### 四、子查询 - **建立一个子查询**:子查询可以嵌套在其他查询中,用于过滤或提供数据源。 - **在子查询中使用汇总函数**:子查询可以包含聚合函数,如COUNT、SUM等。 - **子查询的嵌套**:子查询可以包含多层嵌套。 - **相关子查询**:子查询的结果依赖于外层查询的每一行。 - **EXISTS、ANY、ALL的使用**:这些关键字用于比较子查询的结果与外层查询的行。 #### 五、操作数据 - **数据操作语句**:INSERT、UPDATE、DELETE等用于增加、修改、删除数据。 - **插入语句**:`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);` - **UPDATE语句**:`UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;` - **DELETE语句**:`DELETE FROM table_name WHERE condition;` #### 六、创建和操作表 - **CREATEDATABASE语句**:创建新的数据库。 - **CREATETABLE语句**:创建新表。 - **ALTERTABLE语句**:修改现有表的结构。 - **DROPTABLE语句**:删除表。 - **DROPDATABASE语句**:删除数据库。 以上内容涵盖了《SQL自学简明教程》的主要知识点,通过学习这些内容,读者可以掌握SQL的基础知识和高级功能,为进一步的学习和发展打下坚实的基础。
剩余567页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助