SQL必会知识读后感

  • 笔记主要记载MySQL的使用

1.了解SQL

  • sql是一种语言,Structured Query Language(结构化查询语言),专门用来和数据库沟通的语言。
  • DBMS是数据库管理系统,例如MySQL、Oracle、SQLite等。

2.检索数据

  • sql语言不区分大小写
  • 单行可以不用加“;”结束符
  • 语句中空格被忽略
  • 检索不重复的项可用DISTINCT关键字修饰,DISTINCT关键字会限制所有的列不重复。
  • limit len offset index,表示从index开始,返回len条数据,index是从0开始的,注意:简化的话版本:limit index,len。

3.排序检索数据

  • 按照列名排序:order by 列名
  • 按照列需要排序:order by 1
  • 按照多列排序:order by 列名1,列名2或者列序号
  • 降序关键字DESC,order by 列名 DESC,升序:ASC,默认为升序的
  • 排序字段既有升序和降序:order by 1 DESC,2 ASC。

4.过滤数据

  • where关键字进行过滤。
  • where与order by一起使用的时候,order by应该在where之后。
  • <>和!=表示不等于,!>表示不大于。between表示范围查询。
  • 确定值是否为 NULL,不能简单地检查是否等于 NULL。WHERE 子句
    就是 IS NULL 子句判断是否为空。
  • NULL不等于非匹配,查询过程中,NULL值可能不会被返回。

5.高级过滤数据

  • in和not的使用
  • where配合and一起使用,表示有多个限制条件。
  • where和or一起使用,表示一个条件满足之后,第二个条件就不用比较了
  • in操作符指定范围查询。
  • not用在:where not id = 1;

6.通配符进行过滤

  • like谓词
  • 百分号(%)通配符,%表示任何字符出现任意次数。但是%不会匹配NULL。
  • 下划线(_)通配符,只匹配单个字符

7.创建字段

  • SELECT 语句为测试、检验函数和计算提供了很好的方法。虽然 SELECT通常用于从表中检索数据,但是省略了 FROM 子句后就是简单地访问和处理表达式,例如 SELECT 3 * 2;将返回 6,SELECT Trim(’ abc ');
    将返回 abc,SELECT Curdate();使用 Curdate()函数返回当前日期
    和时间。现在你明白了,可以根据需要使用 SELECT 语句进行检验。

8.使用函数处理数据

  • SUBSTRING()提取字符串的组成部分
  • 数据的类型转换CONVERT()
  • 获取当前日期:CURDATE();
    在这里插入图片描述
    在这里插入图片描述

9.汇总数据

  • SQL 的聚集函数,
    在这里插入图片描述

10.分组数据

group

  • group by支持可以按照多个列进行分组
    group by子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在 SELECT 中使用表达式,则必须在 GROUP BY子句中指定相同的表达式。不能使用别名。
  • 大多数 SQL 实现不允许 GROUP BY 列带有长度可变的数据类型
  • 如果分组列中包含具有 NULL 值的行,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
  • GROUP BY 子句必须出现在 WHERE 子句之后,ORDER BY 子句之前。

HAVING

  • HAVING 字句的出现:WHERE 过滤指定的是行而不是分组。而HAVING 处理的是分组。
  • WHERE 在数据分组前进行过滤,HAVING 在数据分组后进行过滤。
  • HAVING 支持所有 WHERE 操作符
  • 优先级:order by > where > group by > having.

11.使用子查询

  • in关键字
  • 作为子查询的 SELECT 语句只能查询单个列。企图检索多个列将返回
    错误。
  • 子查询的效率不高

12.联结表

  • select where联接、join on联接。
  • where与on之间的区别:where在处理多表联接的时候,先生成临时表在进行过滤,on是在生成联接临时表的时候就在过滤
  • 综合一下, 感觉还是放在on里更有效率, 因为它先于where执行.先笛卡尔积, 然后再on过滤, 如果join是inner的, 就继续往下走, 如果join 是left join, 就把on过滤掉的左主表中的数据再添加回来; 然后再执行where里的过滤;

13. 创建高级联结

  • 自联结(self-join):在一个select查询语句中使用多次相同的表,可以用as进行命别名。
  • 用自联结而不用子查询。
    自然联结(natural join):自然联结排除多次出现,使每一列只返回一次
    外联结(outer join):left join、right join。

14.组合查询

  • UNION 操作符将多条 SELECT 语句组合成一个结
    果集
  • UNION 必须由两条或两条以上的 SELECT 语句组成,语句之间用关键字
    UNION 分隔(因此,如果组合四条 SELECT 语句,将要使用三个 UNION
    关键字)。
  • UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过,
    各个列不需要以相同的次序列出)。
  • UNION ALL保留重复。

15.插入数据

  • insert into 表名(列的属性值) values()

16.更新和删除数据

  • update 表名 set 修改值 where
    delete from 表名 where

17.创建和操纵表

  • create、alter、drop

18.使用视图

  • 视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索
    数据的查询。
  • 视图的优点:重用sql语句、简化基本操作、保护数据。
  • 视图不包含数据,所以每次使用视图时,都必须处理查询执行时
    需要的所有检索。视图不能索引,也不能有关联的触发器或默认值。
  • 视图用 CREATE VIEW 语句来创建。

19.使用存储过程

  • 存储过程是指将一些固定的sql语句进行编译,下次查询直接走编译好的代码。

20.管理事务处理

  • 事务(transaction)指一组 SQL 语句;
    回退(rollback)指撤销指定 SQL 语句的过程;
    提交(commit)指将未存储的 SQL 语句结果写入数据库表;
    保留点(savepoint)指事务处理中设置的临时占位符(placeholder),可以对它发布回退(与回退整个事务处理不同)

21.使用游标

  • 游标(cursor)是一个存储在 DBMS 服务器上的数据库查询,它不是一条 SELECT 语句,而是被该语句检索出来的结果集。

22.高级SQL特性

约束:主键约束、外键约束、用户自定义约束。
索引:为了提高检索效率。
触发器:触发器是特殊的存储过程,它在特定的数据库活动发生时自动执行。

23.资源联接

PDF连接

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿联爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值