sql20天速成
### SQL20天速成知识点概述 #### 第一天:SQL简介 - **SQL简史**:SQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它最初由IBM的Donald D. Chamberlin和Raymond F. Boyce在1970年代初开发,并于1986年被国际标准化组织(ISO)采纳为标准。 - **数据库简史**:数据库技术的发展经历了层次模型、网络模型以及关系模型几个阶段。关系型数据库因其易于理解和使用的特性而成为主流。 - **设计数据库的结构**:设计数据库时需要考虑实体及其之间的关系,通过ER图等工具进行建模。 - **SQL总览**:SQL主要包含数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)等部分。 - **流行的SQL开发工具**:包括但不限于MySQL Workbench、SQL Server Management Studio、Oracle SQL Developer等。 - **SQL在编程中的应用**:SQL常用于前端与后端开发中,实现数据的存储、检索等功能。 #### 第二天:查询——SELECT语句的使用 - **一般语法**:SELECT语句的基本格式为`SELECT column_name(s) FROM table_name WHERE condition;`。 - **第一个查询示例**:如选择某个表中的所有记录,可以使用`SELECT * FROM table_name;`。 - **WHERE子句**:用于筛选满足特定条件的记录,如`WHERE column_name = 'value';`。 - **ORDER BY子句**:用于排序结果集,例如`ORDER BY column_name ASC|DESC;`。 - **GROUP BY子句**:用于将数据分组显示,通常与聚合函数一起使用,如`GROUP BY column_name;`。 - **HAVING子句**:与GROUP BY子句结合使用,对分组后的结果进行过滤。 #### 第三天:表达式、条件语句与运算 - **基本运算符**:如+、-、*、/等。 - **逻辑运算符**:如AND、OR、NOT等。 - **比较运算符**:如=、!=、<、>等。 - **条件语句**:如CASE语句,用于根据不同的条件返回不同的值。 #### 第四天:函数 - **汇总函数**: - `COUNT(column_name)`:计算某列非空值的数量。 - `SUM(column_name)`:计算某列值的总和。 - `AVG(column_name)`:计算某列值的平均值。 - `MAX(column_name)`:找出某列的最大值。 - `MIN(column_name)`:找出某列的最小值。 - `VARIANCE(column_name)`:计算方差。 - `STDDEV(column_name)`:计算标准差。 - **日期/时间函数**: - `ADD_MONTHS(date, number)`:向日期添加指定月份数。 - `LAST_DAY(date)`:返回指定月份的最后一日。 - `MONTHS_BETWEEN(date1, date2)`:计算两个日期间的月份数。 - `NEW_TIME(date, time_zone)`:转换日期的时间区。 - `NEXT_DAY(date, day)`:返回下一个指定星期几的日期。 - `SYSDATE`:获取系统当前日期和时间。 - **数学函数**: - `ABS(value)`:求绝对值。 - `CEIL(value)`、`FLOOR(value)`:向上或向下取整。 - `COS(value)`、`SIN(value)`、`TAN(value)`:三角函数。 - `EXP(value)`、`LN(value)`、`LOG(base, value)`:指数和对数函数。 - `MOD(dividend, divisor)`:求余数。 - `POWER(base, exponent)`:求幂。 - `SIGN(value)`:返回值的符号。 - `SQRT(value)`:求平方根。 - **字符函数**: - `CHR(value)`:返回ASCII码对应的字符。 - `CONCAT(value1, value2, ...)`:连接字符串。 - `INITCAP(value)`:首字母大写。 - `LOWER(value)`、`UPPER(value)`:转换大小写。 - `LPAD(value, length, pad)`、`RPAD(value, length, pad)`:左右填充字符串。 - `LTRIM(value[, trim_string])`、`RTRIM(value[, trim_string])`:去除两端的空白或指定字符。 - `REPLACE(source, find_string, replace_string)`:替换字符串。 - `SUBSTR(value, position[, length])`:截取字符串。 - `TRANSLATE(source, search_string, replace_string)`:字符替换。 - `INSTR(value, substring[, position[, occurrence]])`:查找子串位置。 - `LENGTH(value)`:返回字符串长度。 - **转换函数**: - `TO_CHAR(value, format)`:将其他类型转换为字符。 - `TO_NUMBER(value)`:将字符转换为数字。 - **其它函数**: - `GREATEST(value1, value2, ...)`、`LEAST(value1, value2, ...)`:返回最大值或最小值。 - `USER`:返回当前用户名。 #### 第五天:SQL中的子句 - **WHERE子句**:用于筛选符合条件的行。 - **STARTING WITH子句**:在某些DBMS中用于模式匹配。 - **ORDER BY子句**:用于对结果进行排序。 - **GROUP BY子句**:用于分组数据。 - **HAVING子句**:用于过滤分组结果。 #### 第六天:表的联合 - **在一个SELECT语句中使用多个表**:通过INNER JOIN、LEFT JOIN、RIGHT JOIN等方式联接不同表的数据。 - **等值联合**:基于相等条件联接表。 - **不等值联合**:基于不等条件联接表。 - **外部联合与内部联合**:外部联合保留未匹配的行,内部联合仅返回匹配的行。 - **表的自我联合**:当一张表与自身进行联接时。 #### 第七天:子查询 - **建立一个子查询**:在SELECT、INSERT、UPDATE、DELETE语句中嵌套查询。 - **在子查询中使用汇总函数**:如COUNT、SUM等。 - **子查询的嵌套**:可以在子查询中再嵌套子查询。 - **相关子查询**:子查询的结果依赖于外层查询的每一行。 - **EXISTS、ANY、ALL的使用**:用于简化查询逻辑。 #### 第八天:操作数据 - **数据操作语句**:主要包括INSERT、UPDATE、DELETE等。 - **插入语句**: - `INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`:插入新行。 - `INSERT INTO table_name SELECT ...;`:从另一个查询中插入数据。 - **UPDATE语句**:修改现有行中的数据。 - **DELETE语句**:删除现有行。 - **从外部数据源中导入和导出数据**:支持多种格式的数据交换。 #### 第九天:创建和操作表 - **CREATEDATABASE语句**:用于创建新的数据库。 - **建立数据库时的选项**:如设置字符集、排序规则等。 - **设计数据库**:包括确定表的结构、字段类型等。 - **建立数据字典**:记录数据库中对象的信息。 - **建立关键字段**:确保数据的完整性和一致性。 - **CREATETABLE语句**:定义表的结构。 - **表名**:应遵循数据库的命名规则。 - **空值属性**:允许字段为空。 - **唯一属性**:确保字段的唯一性。 - **表的存储与尺寸的调整**:管理表的物理存储空间。 - **用一个已经存在的表来建表**:通过SELECT INTO语句复制表结构。 - **ALTERTABLE语句**:修改现有的表结构。 - **DROPTABLE语句**:删除表。 - **DROPDATABASE语句**:删除整个数据库。 #### 第10天:创建视图和索引 - **使用视图**:视图是虚拟表,可以简化复杂的查询。 - **列的重命名**:在视图中可以重新定义列名。 - **SQL对视图的处理过程**:视图可以作为查询的基础,提高查询效率。 以上内容涵盖了从SQL基础到高级功能的学习路径,帮助读者快速掌握SQL语言的核心技能。