第20讲:SQL语法与关键知识点

1|0什么是SQL


SQL 的全称为 Structured Query Language 结构化查询语言,它是一个数据领域的 DSL,也就是说它是一种特殊的构建语法,可以用来支持对数据领域的各种通用操作

2|0SQL的分类



SQL按照用途的不同可以分为四大类:
1.DDL,DDL 是一种数据定义语句,里面主要包含库表创建的语句;
2.DML,DML 是数据操作的语法,里面包含增删改查的基本操作语句;
3.DCL,DCL 是数据库的控制语句,主要用于对一些权限的设定;
4.TCL,TCL 包含一些关于树的相关处理语句

3|0查询语句


3|1基本查询语句


SELEST *FROM titles;

我们还可以对单独的字段进行查询,比如查询某个title字段的内容,可以通过 selest title 查询,如果有多个字段,你还可以使用逗号进行隔开

select title from titles;

再一个是条件查询,比如 select * from titles,你可以指定条件比如 where title='Engineer',这里注意 where 条件是很关键的

SELECT * FROM `titles` where title='Engineer'

还有就是排序,查询出来的数据可以根据emp_no进行排序,通常可以使用 order 语句,by 后面可以添加排序的字段和升降序(默认是升序)

SELECT * FROM `titles` order by emp_no;

然后是分页,很多网站在查询数据时都涉及分页,分页其实就是使用了一个 limit,我们可以使用 offset 指定分页的偏移量是多少。这里显示的是第5行到第14行的数据

SELECT * FROM `titles` limit 10 OFFSET 5;


最后是去重,如果表中的数据是有重复,就可以使用 distinct 来完成对数据的去重操作,以上便是基本的查询语句

SELECT distinct gender FROM employees;

3|2条件查询语句


在查询出结果之后,有的时候我们就需要在结果中筛选一个特定条件的子集,这个时候就需要使用条件查询,条件查询语句就是在 select 语句之后,甚至是 updata、delete 语句之后,添加上一个至关重要的 where 语句,它可以限定一些你想要的条件,那么条件都包含哪些呢?
比如比较查询的值是大于多少、小于多少等等,或者说我的条件是一个字符串,那么我们可以使用一些通配符对字符串进行通配

SELECT * FROM employees WHERE emp_no > 10001;

除此之外,还可以使用一个范围的限定,比如说筛选某个价格在 10 元到 20 元之间产品,就可以使用 between and 语句来完成。再有一个就是对子集的限定,可以使用 in 结构,将某一个字段包含在一个特定的子集内,子集里面即可以是一个单列的数据项,也可以是另外的一个数据结构

SELECT * FROM employees WHERE emp_no BETWEEN 10002 AND 10006; SELECT * FROM employees WHERE emp_no IN (10002, 10006);

最后就是逻辑关系,当我们需要多个条件匹配到一起的时候,就需要使用 and、or 或者是 not 语句来完成条件的各种复杂的关系判断

SELECT * FROM employees WHERE emp_no IN (10002, 10006) AND gender='M';

3|3聚合查询语句


聚合查询在我们的工作中也非常有用,通常它用来统计一些特定数据,比如说统计员工表中男女员工的人数,你就可以使用 group by 来对某一个字段进行分类,从而计算表中的一些相关数据
在这里举一个简单的例子,我们去查询员工信息表,你可以看到在表中有性别项、我们根据性别统计这家公司里男女员工到底有多少人

SELECT COUNT(gender), gender FROM employees GROUP BY gender;


执行完之后你可以看到这家公司男女员工总共有多少人,当然我们还可以限定一定的条件,这个时候就不能再使用 where了,因为它是限定 group by 的,所以为了区分就有了一个新的关键词 having,having 可以指定到底是哪一个子分类获取数据,以上聚合查询

4|0插入语句


INSERT INTO `employees`(`emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date`) VALUES (999,'1991-03-01','beck','zhai','M','2020-01-01');

5|0更新语句


UPDATE employees SET first_name="li", last_name="ming" WHERE first_name="beck";

6|0删除语句


DELETE FROM employees; #删除整个表 DELETE FROM employees WHERE first_name="li"; #删除表里first_name为"li"的数据

__EOF__

本文作者cnhkzyy
本文链接https://www.cnblogs.com/my_captain/p/12838274.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cnhkzyy  阅读(263)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示