首页 > 数据库 >SQL速成笔记

SQL速成笔记

时间:2024-11-02 11:46:32浏览次数:7  
标签:name 笔记 速成 用于 SQL table 查询 column1 SELECT

目录

SQL简介:

SQL 的主要功能:

1、基本查询语句

2、表操作语句

3、数据操作语句

4、函数与聚合操作

5、子查询与联接

6、高级操作

7、性能优化与安全性

一、基本查询语句

二、表操作语句

三、数据操作语句

四、函数与聚合操作

五、子查询与联接

六、高级操作

七、性能优化与安全性

八、总结


SQL简介:

SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系数据库的标准化编程语言。SQL 被广泛用于数据库系统中(如 MySQL、PostgreSQL、Oracle、SQL Server),它允许用户执行数据查询、插入、更新和删除等操作,以及定义、修改和控制数据库中的数据结构和访问权限,是数据库管理和数据分析的核心工具。

SQL 的主要功能:

1、基本查询语句

  • SELECT - 用于从数据库中选择数据,返回结果集。

  • WHERE - 用于过滤记录,指定查询条件。

  • ORDER BY - 用于对结果集进行排序,可以按升序或降序排列。

  • DISTINCT - 用于返回唯一不同的值,去除重复记录。

  • LIMIT - 用于指定返回的记录数量,常用于分页。

2、表操作语句

  • CREATE TABLE - 用于创建新表,定义表的列和数据类型。

  • ALTER TABLE - 用于修改现有表的结构,例如添加、删除或修改列。

  • DROP TABLE - 用于删除表及其所有数据。

3、数据操作语句

  • INSERT INTO - 用于向表中插入新记录。

  • UPDATE - 用于修改表中的现有记录。

  • DELETE - 用于删除表中的记录。

4、函数与聚合操作

  • COUNT - 用于返回匹配条件的行数。

  • SUM - 用于返回列的总和。

  • AVG - 用于返回列的平均值。

  • MIN - 用于返回列的最小值。

  • MAX - 用于返回列的最大值。

5、子查询与联接

  • INNER JOIN - 用于返回两个表中都存在的匹配记录。

  • LEFT JOIN - 用于返回左表中的所有记录和右表中的匹配记录。

  • RIGHT JOIN - 用于返回右表中的所有记录和左表中的匹配记录。

  • FULL JOIN - 用于返回两个表中所有记录,不管是否匹配。

  • SUBQUERY - 用于在查询语句中嵌套另一个查询。

6、高级操作

  • UNION - 用于合并两个或多个 SELECT 语句的结果集。

  • CASE - 用于实现条件逻辑,返回不同的值。

  • INDEX - 用于创建索引以加速查询。

7、性能优化与安全性

  • EXPLAIN - 用于查看查询的执行计划,帮助优化查询。

  • TRANSACTION - 用于处理事务,确保数据的一致性和完整性。

  • GRANT - 用于授予用户特定的数据库权限。

  • REVOKE - 用于撤销用户的数据库权限。


一、基本查询语句

SELECT:用于从数据库中选择数据。

SELECT column1, column2 FROM table_name;

column1, column2 表示列名,table_name 表示表名。

WHERE:用于过滤记录。

SELECT column1, column2 FROM table_name WHERE condition;

ORDER BY:用于排序结果集。

SELECT column1, column2 FROM table_name
ORDER BY column1 [ASC|DESC];
  • ASC(Ascending):表示升序排序,即从小到大排列(默认排序方式)。

  • DESC(Descending):表示降序排序,即从大到小排列。

DISTINCT:用于返回唯一不同的值。

SELECT DISTINCT column1 FROM table_name;

LIMIT:用于指定返回的记录数量。

SELECT column1 FROM table_name LIMIT number;

二、表操作语句

CREATE TABLE:用于创建新表。

CREATE TABLE table_name (   
column1 datatype PRIMARY KEY,    
column2 datatype,    
column3 datatype
);

  • column1, column2, column3:表的列名。

  • datatype:这列的数据类型,比如INT表示整数,VARCHAR(255)表示最大长度为255的字符串等。

  • PRIMARY KEY:这是一个约束,用来指定哪列是主键。主键是表中用来唯一标识每行数据的列。在上面的例子中,column1 被指定为主键。

ALTER TABLE:用于修改现有表结构。

-- 向 table_name 表添加名为 column_name 的新列,数据类型为 datatype
ALTER TABLE table_name ADD column_name datatype;

-- 从 table_name 表删除名为 column_name 的列
ALTER TABLE table_name DROP COLUMN column_name;

-- 修改 table_name 表中 column_name 列的数据类型为 datatype
ALTER TABLE table_name MODIFY COLUMN column_name datatype;

DROP TABLE:用于删除表。

DROP TABLE table_name;

三、数据操作语句

INSERT INTO:用于向表中插入数据。

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

这个语句将向 table_name 表中插入一行数据,其中 column1 列的值设为 value1,column2 列的值设为 value2。

如果列名列表中包含表中的所有列,则不需要指定列名,可以直接使用INSERT INTO table_name VALUES (...); 的语法。

UPDATE:用于更新表中的数据。

UPDATE table_name 
SET column1 = value1, column2 = value2 
WHERE condition; 

在 table_name 表中,找到满足 condition 条件的行,并将这些行的 column1 列更新为 value1,column2 列更新为 value2。

DELETE:用于删除表中的数据。

DELETE FROM table_name WHERE condition;

四、函数与聚合操作

COUNT:用于返回匹配条件的行数。

SELECT COUNT(column_name) FROM table_name;

SUM:用于返回列的总和。

SELECT SUM(column_name) FROM table_name;

AVG:用于返回列的平均值。

SELECT AVG(column_name) FROM table_name;

MIN:用于返回列的最小值。

SELECT MIN(column_name) FROM table_name;

MAX:用于返回列的最大值。

SELECT MAX(column_name) FROM table_name;

五、子查询与联接

INNER JOIN:用于返回两个表中都存在的记录。

SELECT column1, column2 FROM table1 
INNER JOIN table2 
ON table1.column_name = table2.column_name;    

从 table1 和 table2 中选择满足连接条件的行,返回 column1 和 column2 这两列的数据。

内连接只有当两个表中都有匹配的行时,结果才会包含这些行。

LEFT JOIN:用于返回左表中的所有记录和右表中的匹配记录。

SELECT column1, column2 FROM table1 
LEFT JOIN table2 
ON table1.column_name = table2.column_name;

从 table1 选择所有行,并包括 table2 中与 table1 指定列值匹配的行,如果 table2 中没有匹配的行,那么结果集中 table2 的列将显示为 NULL。

RIGHT JOIN:用于返回右表中的所有记录和左表中的匹配记录。

SELECT column1, column2 FROM table1 
RIGHT JOIN table2 
ON table1.column_name = table2.column_name;

从 table2 选择所有行,并包括 table1 中与 table2 指定列值匹配的行,如果 table1 中没有匹配的行,那么结果集中 table1 的列将显示为 NULL。

右连接查询通常用于当 table2 是主要的数据源,而 table1 是补充数据源时。

FULL JOIN:用于返回两个表中所有记录,不管是否匹配。

SELECT column1, column2 FROM table1 
FULL JOIN table2 
ON table1.column_name = table2.column_name;

从 table1 和 table2 中选择所有行,包括两个表中所有匹配和不匹配的行,如果某个表中没有匹配的行,那么结果集中该表的列将显示为 NULL。

全外连接查询通常用于需要从两个表中获取所有数据,而不考虑它们之间是否存在匹配关系的情况。

SUBQUERY:用于在查询语句中嵌套另一个查询。

SELECT column1 FROM table_name 
WHERE column2 = (SELECT column2 FROM table_name2 WHERE condition);

从 table_name 表中选择那些其 column2 列的值等于子查询返回的值的行的 column1 列。

六、高级操作

UNION:用于合并两个或多个 SELECT 语句的结果集。

SELECT column1 FROM table_name1 
UNION SELECT column1 FROM table_name2;

将 table_name1 和 table_name2 两个表中 column1 列的值合并为一个结果集,并且结果集中不会有重复的行。

CASE:用于实现条件逻辑。

SELECT column1,       
       CASE           
           WHEN condition1 THEN result1
           WHEN condition2 THEN result2
           ELSE result
       END
FROM table_name;

在查询 table_name 表时,根据列 column1 或其他列的值与 condition1 或 condition2 的匹配情况,返回相应的 result1 或 result2,如果都不匹配,则返回 result。

CASE 表达式允许你在 SQL 查询中根据多个条件进行数据转换或选择不同的值。

INDEX:用于创建索引以加速查询。

CREATE INDEX index_name ON table_name (column1, column2);

在 table_name 表上创建一个名为 index_name 的索引。

七、性能优化与安全性

EXPLAIN:用于查看查询的执行计划。

EXPLAIN SELECT column1 FROM table_name WHERE condition;

TRANSACTION:用于处理事务。

START TRANSACTION;
UPDATE table_name SET column1 = value1 
WHERE condition;COMMIT;

GRANT:用于授予用户权限。

GRANT SELECT ON database_name.table_name TO 'user'@'host';

REVOKE:用于撤销用户权限。

REVOKE SELECT ON database_name.table_name FROM 'user'@'host';

八、总结重难点以及学习方法

SQL(Structured Query Language)的重难点主要聚焦于复杂查询的构建、数据优化以及数据库设计方面。首先,复杂查询,特别是涉及多表联接(JOIN)、子查询(Subquery)和嵌套查询(Nested Query)时,往往需要对数据库结构有深入理解,并灵活运用SQL语法。其次,数据优化,包括索引(Index)的创建与使用、查询性能调优(如避免全表扫描、选择合适的联接类型)等,是提升数据库运行效率的关键。此外,数据库设计也是一大难点,需要合理设计表结构、定义主键、外键以及约束条件,以确保数据的完整性和一致性。

学习方法上,建议从基础语法入手,通过在线教程、书籍或视频课程系统学习。同时,结合具体项目或案例进行实践,将理论知识应用于解决实际问题。针对重难点,可以查阅官方文档、专业论坛或请教经验丰富的开发者。此外,积极参与社区讨论,分享学习心得,推荐使用力扣刷题,这些都是提升SQL技能的有效途径。

如果文章对您有帮助

还请您点赞支持,谢谢

标签:name,笔记,速成,用于,SQL,table,查询,column1,SELECT
From: https://blog.csdn.net/qq_66848092/article/details/143448374

相关文章

  • PythonWeb项目开发(Django)在PyCharm定义模型并与mysql数据库绑定
    测试所用的django项目结构如下:---------------------------------------------------------------------------------------------------------------------------------定义模型(以创建好的blog应用为例):重点操作对象1:之前创建应用(这里是blog文件夹)下面的models.py文件......
  • 跟着红队笔记学习 tmux:渗透测试中的多终端利器
    内容预览≧∀≦ゞ跟着红队笔记学习tmux:渗透测试中的多终端利器进入tmux前的准备tmux概念简介tmux基础操作会话管理命令会话管理快捷键会话内和会话外命令的区别tmux窗口和面板管理新建和管理窗口分割窗口为面板切换面板面板放大与恢复调整面板大小关闭面板分屏......
  • CTF之web题集详情随手笔记
    《Web安全》http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484238&idx=1&sn=ca66551c31e37b8d726f151265fc9211&chksm=c0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene=21#wechat_redirect1    WEB1......
  • JDBC连接mysql进行curd操作
    使用JDBC连接mysql数据库一.JDBC是什么JDBC(JavaDatabaseConnectivity)Java连接数据库的规范(标准),可以使用Java语言连接数据库完成CRUD操作。二.导入maven依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>......
  • 如何在 MySQL 中创建一个完整的数据库备份?
    在MySQL数据库中创建一个完整的数据库备份通常不是通过编程语言直接实现的,而是借助MySQL提供的命令行工具mysqldump来完成。作为Java开发者,我们可以编写脚本来调用这些工具,从而实现自动化备份。下面我们将详细介绍如何使用Java来调度mysqldump工具进行数据库备份。创建数据......
  • OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙
    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143432922长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…OpenCV开发专栏......
  • 基于深度学习的机器人智能控制算法 笔记
    正解/逆解求正解/逆解有现成的库,参考https://github.com/petercorke/robotics-toolbox-python,代码如下:importroboticstoolboxasrtbimportnumpyasnpnp.set_printoptions(precision=6,suppress=True)robot=rtb.models.Panda()qr=np.array([0,-0.3,0,-2.2......
  • Mysql的行锁,改一行锁一行
    目录标题前言行级锁1.共享锁(SharedLock)2.排他锁(ExclusiveLock)行级锁中的死锁(DeadLock)现象行级锁虽好,但有时候会升级成表级锁第一种情况,当未命中索引时,行级锁会升级成表级锁。......
  • 面试官:通过Mysql查询的时候,为什么有时候即使查询一条数据也很慢呢?
    目录标题1.明明现在执行得很快,为什么还是会被慢日志所记录呢?一、flush数据(底层架构讲起)......
  • 一文搞懂JDBC全流程(含MySQL安装和JDK下载)
    前言:1.了解问题1:什么是JDBC?JDBC全称:JavaDatabaseConnectivity,即Java数据库连接JDBC是Java提供的一组独立于任何数据库管理系统的API。Java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现类封装成jar文件,也就是数据库驱动jar包。学习JDBC,充分体现了面向接口......