SQL语句 Select语句 学习

竖着的这些东西 叫做字段(列)  横着的叫做记录(行)。

主要的几种SQL操作语言

SQL(Structured Query Language)是一种标准化的语言,用于在关系数据库管理系统(RDBMS)中进行数据管理和操作。SQL 语句不仅用于查询数据,还包括以下几种主要类型的操作:

1. **查询(SELECT)**:检索数据。
   - `SELECT` 用于从数据库表中选择数据。

2. **插入(INSERT)**:向表中添加新数据。
   - `INSERT INTO` 用于向表中添加新的行。

3. **更新(UPDATE)**:修改表中的现有数据。
   - `UPDATE` 用于修改表中的行数据。

4. **删除(DELETE)**:从表中删除数据。
   - `DELETE` 用于从表中删除行。

5. **创建(CREATE)**:创建新的数据库对象。
   - `CREATE TABLE` 用于创建新表。
   - `CREATE DATABASE` 用于创建新数据库。
   - `CREATE INDEX` 用于创建索引以优化查询性能。

6. **修改(ALTER)**:修改现有数据库对象的结构。
   - `ALTER TABLE` 用于修改表的结构,如添加、删除列或修改列的数据类型。

7. **授权(GRANT)**:为用户设置数据库权限。
   - `GRANT` 用于授予用户对数据库对象的特定权限。

8. **撤销(REVOKE)**:撤销用户的数据库权限。
   - `REVOKE` 用于撤销之前授予用户的权限。

9. **事务控制(Transaction Control)**:管理数据库事务。
   - `BEGIN TRANSACTION` 或 `START TRANSACTION` 用于开始一个新的事务。
   - `COMMIT` 用于提交当前事务,使更改永久生效。
   - `ROLLBACK` 用于回滚当前事务,撤销所有更改。

10. **锁定(Locking)**:控制对数据库资源的访问。
    - `LOCK TABLES` 用于锁定表,防止其他用户访问。
    - `UNLOCK TABLES` 用于解锁表,允许其他用户访问。

11. **注释(Comment)**:向 SQL 语句添加注释。
    - 使用 `--` 或 `/* ... */` 来添加注释,以提高代码的可读性。

12. **设置(SET)**:设置会话级别的变量。
    - `SET` 用于设置会话级别的变量或配置。

这些是 SQL 中最常用的操作类型,它们共同构成了 SQL 语言的核心功能,使得用户能够全面地管理和操作数据库。这里先只学习掌握Select语句。

SELECT查询语句↓

前两个(Select 和 from)是必须的结构,后四个是根据要求可能会用到

where是对行hang进行选择,比如写 where 性别=‘女’        

order by默认是升序(asc),降序的话要输入(desc)

having一定要配合group by一起使用,不能单独使用,group by是对设置分组的条件

AS(起别名)

运算符>,<,=,<=……

Where

In & Not In

Between

like(模糊查询)

例题1:查询“某一种类”字段的所有信息语句

尝试解答:

        select from xscj where 性别=男

正确逻辑: 

        select学号,姓名,性别,出生日期,专业成绩 from xscj where 性别=“男”

或者

        select * from xscj where 性别=“男” # * 代表所有列

例题2:查询“某一种类”字段的要求信息语句

标点要用英文的

例题3:order语句

        select * from xscj where 性别=“男” order by 专业成绩 #默认升序 asc

         select * from xscj where 性别=“男” order by 专业成绩 #如果是降序 就要输入 desc

例题4:into语句

例题5:group by 语句

        select 性别,avg(专业成绩) as 平均专业成绩 from  xscj group by 性别

        这里的group by 就是按照什么进行分类分组 avg就是一个函数计算。

例题6:having语句

        这里的having就相当于是筛选,having必须搭配 group by(分组)来使用

        WHERE 子句在数据分组前对每条记录进行过滤,而 HAVING 子句则是在数据分组后对形成的分组进行过滤。

例题7:修改更新 update 语句

        格式:update 表名 set 字段=表达式 【where 条件】

        update xscj set 姓名=“孙韬” where 学号=20170105

例题8:insert 插入记录语句

        格式:insert into 表名 (字段名表) values (内容列表)#就是在哪一个表里插入什么内容

        insert into xscj (学号,性别,出生日期,专业成绩) values ("20170106",”女“,#2000/09/13#,95)

        文本就加双引号,日期就加#号

        因为是所有的 所以可以省略

例题9:删除delete语句

        格式:delete from 表名 【where条件】

        这里的意思是 只要 学号=20170101 就会把所有的 可能是多个 学号=20170101的行信息全部删除

例题10:Join语句

JOIN 语句用于根据两个或多个表之间的相关列,将这些表中的数据结合起来。常见的 JOIN 类型包括:INNER JOINLEFT JOINRIGHT JOINFULL JOIN

1.inner join

2.left join

3.right join

RIGHT JOIN 可以用于查找在右表中有但在左表中没有的记录。例如:

  • 查找订单记录中有但是客户表中没有匹配客户的订单。
  • 查找右表中有数据,但左表中没有关联数据的情况,帮助识别数据不一致的问题

4.full join

5.self join

自连接(SELF JOIN)是将一个表与其自身进行连接。自连接主要用于表中的行之间的比较或基于表中的数据生成关系。它通常用来处理层级数据、查找重复记录、或在同一表的不同行之间建立关联。

应用场景

1. 查找层级结构(例如,组织结构图)

自连接特别适用于管理层级结构的数据,例如公司中的员工和经理关系、文件系统中的文件和文件夹关系等。

2. 查找重复记录

如果我们要查找表中重复的记录,可以使用自连接来比较表中的行。

例题:

        select 学号,课程号,学分 into 课程表 from 成绩表 where 课程号="C1"

一些辨析

* 与column_name(具体列的区别)

group by语句和where语句的不同

        `GROUP BY` 和 `WHERE` 子句在 SQL 中确实都用于筛选数据,但它们的目的和使用场景是不同的。下面是它们的主要区别:

WHERE 子句:
1. **过滤记录**:`WHERE` 子句用于在数据分组前对表中的记录进行过滤。它决定了哪些记录将被包含在查询结果中。
2. **作用于行**:`WHERE` 子句作用于表中的单个行,对每一行数据进行条件判断。
3. **在分组前**:在数据被送往 `GROUP BY` 子句之前,`WHERE` 子句已经完成了过滤工作。
4. **简单条件**:通常用于简单的条件判断,如比较操作符(`=`, `<`, `>`, `!=`, `IN`, `LIKE` 等)。

GROUP BY 子句:
1. **数据分组**:`GROUP BY` 子句用于将结果集按照一个或多个列的值进行分组。它不是用来过滤记录,而是用来组织数据。
2. **作用于列**:`GROUP BY` 子句作用于列,它根据列的值将数据分组。
3. **在过滤后**:数据首先通过 `WHERE` 子句(如果有的话)进行过滤,然后 `GROUP BY` 对过滤后的数据进行分组。
4. **聚合函数**:通常与聚合函数(如 `SUM()`, `AVG()`, `COUNT()` 等)一起使用,对每个分组执行计算。

HAVING 子句:
- `HAVING` 子句与 `WHERE` 类似,但它是用于过滤分组后的结果。`HAVING` 子句可以在聚合函数计算后,根据聚合结果来过滤分组。

示例说明区别:
假设有一个 `Orders` 表,包含 `OrderID`, `CustomerID`, 和 `Amount` 列。

- 使用 `WHERE` 来筛选:
  ```sql
  SELECT * FROM Orders WHERE Amount > 100;
  ```
  这条语句将返回所有 `Amount` 大于 100 的订单记录。

- 使用 `GROUP BY` 和 `WHERE`:
  ```sql
  SELECT CustomerID, COUNT(OrderID) AS NumberOfOrders
  FROM Orders
  WHERE Amount > 100
  GROUP BY CustomerID;
  ```
  这条语句首先使用 `WHERE` 筛选出 `Amount` 大于 100 的订单,然后 `GROUP BY` 按照 `CustomerID` 对这些筛选后的订单进行分组,并计算每个客户的订单数量。

- 使用 `HAVING` 来进一步筛选分组:
  ```sql
  SELECT CustomerID, COUNT(OrderID) AS NumberOfOrders
  FROM Orders
  GROUP BY CustomerID
  HAVING COUNT(OrderID) > 1;
  ```
  这条语句首先按 `CustomerID` 对所有订单进行分组,并计算每个客户的订单数量,然后 `HAVING` 子句过滤出那些订单数量大于 1 的客户。

总结来说,`WHERE` 用于在分组前过滤原始数据,而 `GROUP BY` 用于组织数据,通常与聚合函数一起使用,`HAVING` 则用于在分组和聚合计算后对结果进行进一步的过滤。

        select 姓名,年龄 from 学生表 where 院系 in (“网络工程系”,“信息工程系”,“计算机系”)

update语句(字段内容更新)

格式:update 表名 set 字段=表达式 【where 条件】

insert语句(插入记录)

格式:insert into 表名 (字段名表) values (内容列表)#就是在哪一个表里插入什么内容

DELETE语句(删除记录)

格式:delete from 表名 【where条件】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值