mysql 常用命令,语句规范,及日志保存

1.mysql常用命令

SELECT VERSION(); 显示当前版本

SELECT NOW();显示当前日期时间

SELECT USER(); 显示当前用户

2.mysql语句规范

1.关键字与函数名全部大写

2.数据库名称,表名称,字段名称等全部小写

3.SQL语句必须以分隔符结尾

4.SQL语句支持折行操作,只要不把单词、标记或引号字符串分割为两部分,可以在下一行继续写

5.数据库名称,表名称,字段名称等尽量不要用mysql的保留字,如果需要使用的时候需要使用反引号(”)将名称括起来

4.命令行日志保存

保存:

\T E:\workspace\mysql\mysql1.txt

在mysql中输入就可以吧mysql命令保存到此文件中

结束保存:

\t

会有提示Outfile disable表示不在保存

<think>嗯,用户让我梳理SQL的重点知识,我需要先确定用户的背景和需求。可能他们刚开始学SQL,或者需要复习关键点,准备面试什么的。首先,我应该覆盖SQL的基础部分,然后逐步深入,确保结构清晰。 首先,SQL的基础知识部分,包括数据定义、操作、查询这些基本命令。DDL、DML、DQL这些分类要讲清楚,每个部分常用的语句,比如CREATE、INSERT、SELECT等。然后是查询语句的结构,SELECT-FROM-WHERE这些子句的顺序和用法,可能需要举几个例子,比如简单的查询和WHERE条件的使用。 接下来是进阶部分,比如聚合函数和GROUP BY,用户可能经常用到的COUNT、SUM这些,还有HAVING和WHERE的区别。这里需要强调GROUP BY的作用,以及如何用HAVING过滤分组后的数据。另外,JOIN操作也是重点,不同的JOIN类型,内连接、左连接、右连接的区别,最好用例子说明,可能用户容易混淆这些。 子查询和临时表也是一个难点,需要解释子查询的使用场景,比如在WHERE或FROM子句中使用,以及WITH语句创建临时表。这部分可能比较复杂,要确保例子简单明了。 然后是数据完整性和约束,主键、外键、唯一约束、非空约束这些概念,还有索引的作用和创建方法。用户可能需要了解如何优化查询性能,所以索引的原理和使用注意事项也要提到。 事务处理部分,ACID特性,事务的控制语句,隔离级别的问题,比如脏读、不可重复读、幻读。这些概念比较抽象,需要用简单的语言解释,可能结合实际的例子说明不同隔离级别的影响。 接下来是性能优化,这部分对用户来说可能比较实用。EXPLAIN分析执行计划,避免SELECT *,索引的合理使用,分页优化等。需要给出具体的建议,比如如何优化大表的查询。 高级特性部分,窗口函数可能现在用得越来越多,需要介绍常见的ROW_NUMBER、RANK等函数,以及CTE递归查询的应用场景。存储过程和触发器的优缺点也要提到,可能用户在实际项目中会遇到。 最后,常见的注意事项,比如SQL注入的防范,用参数化查询,避免在代码中拼接字符串。命名规范的重要性,以及测试的重要性,特别是在事务和复杂查询的时候。 现在需要检查是否有遗漏的重点,比如数据类型、NULL值的处理、CASE语句,还有UNION和UNION ALL的区别。另外,是否需要提到视图、权限管理这些内容?可能用户的需求是基础到进阶,所以暂时先覆盖主要部分,避免信息过载。 结构方面,分成基础、进阶、数据完整性、事务、性能优化、高级特性、注意事项这几个部分比较合理。每个部分用标题和列表形式,确保清晰。例子需要用Latex格式,行内公式用$,独立公式用$$。例如,SELECT语句的结构可以用代码块表示,但注意用户要求中的LaTeX格式可能是指数学表达式,不过这里可能需要用代码块展示SQL语句,所以需要确认。但根据系统指令,数学表达式才用LaTeX,SQL代码应该用代码块,但用户可能没有特别说明,所以可能需要用代码块或者普通文本展示例子。 不过根据用户提供的例子,比如$x^2$,可能他们希望用LaTeX格式的代码块,但SQL语句通常不用LaTeX,而是用反引号或代码块。但系统指令中关于数学表达式的要求,可能SQL代码不需要用LaTeX,只需普通代码块。需要确认,但可能用户希望用中文回答,结构清晰,所以例子用代码块可能更合适,但这里需要遵循系统指令中的格式要求,即行内数学表达式用$...$,独立公式用$$...$$。所以SQL代码例子应该用其他方式,比如用四个空格缩进或者用反引号。 不过用户给的例子中,有显示例如:$( \int_{-\pi}^{\pi} \cos(nx)\sin(mx)dx = 0 $,这可能是指数学公式。所以SQL代码部分应该使用普通代码块,但系统指令没有特别说明,可能需要用其他方式处理。根据用户可见层的指示,结构清晰,逐步解决问题,所以可能需要用代码块或者列表来展示例子。 总结下来,按步骤组织内容,每个重点部分列出要点,并给出简洁的例子。确保覆盖主要知识点,帮助用户系统地掌握SQL的关键内容。现在开始组织内容,确保符合格式要求,使用中文,结构清晰,分点说明,重点突出。</think>以下是 SQL 重点知识的系统性梳理,分模块逐步讲解: --- ### 一、**基础语法** 1. **数据定义语言 (DDL)** - 创建/删除数据库: ```sql CREATE DATABASE db_name; DROP DATABASE db_name; ``` - 创建/修改/删除表: ```sql CREATE TABLE table_name (列名 数据类型, ...); ALTER TABLE table_name ADD COLUMN 列名 数据类型; DROP TABLE table_name; ``` 2. **数据操作语言 (DML)** - 增删改数据: ```sql INSERT INTO table_name (列1, 列2) VALUES (值1, 值2); DELETE FROM table_name WHERE 条件; UPDATE table_name SET 列名 = 值 WHERE 条件; ``` 3. **数据查询语言 (DQL)** - 基础查询: ```sql SELECT 列1, 列2 FROM table_name WHERE 条件; SELECT DISTINCT 列名 FROM table_name; -- 去重 ``` --- ### 二、**查询进阶** 1. **聚合函数与分组** - 常用函数:`COUNT()`, `SUM()`, `AVG()`, `MAX()`, `MIN()` - 分组统计: ```sql SELECT 列1, AVG(列2) FROM table_name GROUP BY 列1 HAVING AVG(列2) > 100; -- HAVING 过滤分组后结果 ``` 2. **多表连接 (JOIN)** - 内连接:`INNER JOIN`(仅返回匹配行) - 外连接:`LEFT JOIN`, `RIGHT JOIN`, `FULL OUTER JOIN` - 交叉连接:`CROSS JOIN`(笛卡尔积) - 示例: ```sql SELECT A.列1, B.列2 FROM 表A A LEFT JOIN 表B B ON A.id = B.a_id; ``` 3. **子查询与临时表** - WHERE 子句中的子查询: ```sql SELECT 列1 FROM table_name WHERE 列2 IN (SELECT 列2 FROM tableB WHERE 条件); ``` - 使用 `WITH` 创建临时表(CTE): ```sql WITH 临时表 AS ( SELECT 列1, 列2 FROM table_name WHERE 条件 ) SELECT * FROM 临时表; ``` --- ### 三、**数据完整性与约束** 1. **约束类型** - `PRIMARY KEY`:主键(唯一且非空) - `FOREIGN KEY`:外键(关联其他表的主键) - `UNIQUE`:唯一约束 - `NOT NULL`:非空约束 - `CHECK`:自定义条件约束(如 `CHECK (age > 0)`) 2. **索引优化** - 创建索引加速查询: ```sql CREATE INDEX idx_name ON table_name (列名); ``` - 注意:索引会占用存储空间,频繁更新的列慎用。 --- ### 四、**事务与并发控制** 1. **事务特性 (ACID)** - **原子性**:事务要么全部完成,要么全部回滚。 - **一致性**:事务前后数据满足完整性约束。 - **隔离性**:并发事务互不干扰。 - **持久性**:事务提交后数据永久保存。 2. **事务控制语句** ```sql BEGIN TRANSACTION; -- 执行操作 COMMIT; -- 提交 ROLLBACK; -- 回滚 ``` 3. **隔离级别** - `READ UNCOMMITTED`:可能脏读。 - `READ COMMITTED`:避免脏读。 - `REPEATABLE READ`:避免不可重复读。 - `SERIALIZABLE`:完全串行化,避免幻读。 --- ### 五、**性能优化** 1. **执行计划分析** - 使用 `EXPLAIN` 查看查询计划: ```sql EXPLAIN SELECT * FROM table_name WHERE 条件; ``` 2. **避免全表扫描** - 为 WHERE 条件中的列添加索引。 - 避免在 WHERE 子句中对列进行函数操作(如 `WHERE YEAR(date) = 2023`)。 3. **分页优化** - 使用 `LIMIT` 和 `OFFSET` 时,避免深分页: ```sql SELECT * FROM table_name WHERE id > 1000 -- 基于有序主键 ORDER BY id LIMIT 10; ``` --- ### 六、**高级特性** 1. **窗口函数** - 计算排名、累计值等: ```sql SELECT 列1, ROW_NUMBER() OVER (PARTITION BY 分组列 ORDER BY 排序列) FROM table_name; ``` 2. **递归查询 (CTE递归)** - 处理树形结构数据: ```sql WITH RECURSIVE cte AS ( SELECT id, parent_id FROM table_name WHERE id = 1 UNION ALL SELECT t.id, t.parent_id FROM table_name t JOIN cte ON t.parent_id = cte.id ) SELECT * FROM cte; ``` 3. **存储过程与触发器** - 存储过程:封装复杂逻辑,减少网络传输。 - 触发器:在数据变更时自动执行操作(如审计日志)。 --- ### 七、**常见注意事项** 1. **SQL注入防范** - 使用参数化查询(如 `PreparedStatement`),避免拼接字符串。 2. **命名规范** - 表名、列名使用小写和下划线分隔(如 `user_info`)。 3. **测试与调试** - 复杂查询分步验证,事务中先测试再提交。 --- 通过以上模块化梳理,可以逐步掌握 SQL 的核心语法、优化技巧和实际应用场景。建议结合具体数据库(如 MySQL、PostgreSQL)的文档进行实践练习。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值