SQL关键字详解

news2024/11/27 16:44:48

当前市场中,数据库在互联网整个技术链中的重要性是亘古不变的,站在实现业务功能的角度来说我们最常用的就是与数据库和缓存进行交互,而最终持久化存储最常见的依旧是关系型数据库。数据库中我们做常用的就是SQL基本查询语言,甚至有些人认为数据库就是SQL,SQL就是数据库。虽然这种观点是错误的,但是也确实从一个方面体现了这种面向结果的查询语言的重要性。

SQL语言:DDL、DML、DQL、DCL

  • 数据定义语言(DDL)

DDL全称是Data Definition Language,即数据定义语言,定义语言就是定义关系模式、删除关系、修改关系模式以及创建数据库中的各种对象,比如表、聚簇、索引、视图、函数、存储过程和触发器等等。

数据定义语言是由SQL语言集中负责数据结构定义与数据库对象定义的语言,并且由CREATE、ALTER、DROP和TRUNCATE四个语法组成。

  • 数据操纵语言(DML)

数据操纵语言全称是Data Manipulation Language,主要是进行插入元组、删除元组、修改元组的操作。主要有insert、update、delete语法组成。

  • 数据查询语言(DQL)

数据查询语言全称是Data Query Language,所以是用来进行数据库中数据的查询的,即最常用的select语句

  • 数据控制语言(DCL)

数据控制语言:Data Control Language。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,能够对数据库进行监视。

比如常见的授权、取消授权、回滚、提交等等操作。

SQL语言的基本定义

(1)基本数据类型:

类型含义

char(n)

存放固定长度的字符串,用户指定长度为n。如果没有使用n个长度则会在末尾添加空格。

varchar(n)

可变长度的字符串,用户指定最大长度n。char的改进版,大多数情况下我们最好使用varchar。

int

整数类型

smallint

小整数类型

numeric(p,d)

定点数,精度由用户指定。这个数有p位数字(包括一个符号位)d位在小数点右边。

real ,double precision

浮点数和双精度浮点数。

float(n)

精度至少位n位的浮点数

(2)特殊关键字:

类型

含义

示例

primary key

主键,后面括号中是作为主键的属性

primary key(student_id)

foreign key references

外键,括号中为外键,references后为外键的表

foreign key(course_id) references Course

not null

不为空,前面为属性的定义

name varchar(10) not null

(3)SQL插入:

类型

含义

create table

创建一张表

insert into…values

向表中插入一条信息

delete from

从表中删除一条信息

update…set…where

在where的位置,更新内容为set的值

drop table

删除表

alter table…add

向表中添加某个属性

alter table…drop

将表中的某个属性删除

SQL查询:(SQL中最重要的就是查询)

(1)单关系查询:(只一张表中的内容查询有关信息,不涉及其他的表)

类型

含义

select

表示要查找出的表所含有的属性

from

表示要操作的表

where

判断条件,根据该判断条件选择信息

distinct

在select后加入关键字distinct表示将结果去重

all

在select后加入关键字all表示不去重(默认)

and

在where中使用and表示将判断条件连接起来

or

在where中使用or表示判断条件多选一

not

在where中使用not表示判断条件取反

(2)多关系查询:(多个表中通过一些操作查找出希望的信息

A,B

在from后面通过逗号连接多张表,表示将这些表进行笛卡儿积运算

natural join

将natural join关键字前后的两张表进行自然连接运算

A join B using(c)

将A和B通过c属性自然连接

A inner join B on内连接,只返回符合条件的行
A left join B on左连接,包含左边所有行,如果左边某行在右边无匹配,则结果为空(null)
A right join B on右连接,包含右边所有行,如果右边某行在左边无匹配,则结果为空(null)
A full join B on全外连接,包含full join左右两表中所有的行,如果左边某行在右边无匹配,则结果为空(null),如果右边某行在左边无匹配,则结果为空(null)
A cross join B on交叉连接,没有where子句的交叉连接将产生连接所涉及的表的笛卡尔积(笛卡尔积是第一个表行数乘以第二个表行数积的大小)

外连接(左连接、右连接、完全外连接)| outer join(left join、right join、full join)

内连接 | inner join

交叉连接 | cross join

(补充:笛卡尔积)

 

下面举例说明多关系表连接案例:

Student表                      course表

                      

 (1)A left join B on

select * from student left join course on student.ID=course.ID

 

(2)A right join B on

select * from student right join course on student.ID=course.ID

 

(3) A full join B on

select * from student full join course on student.ID=course.ID

(4) A inner join B on

select * from student inner join course on student.ID=course.ID

(5) A cross join B on

select * from student inner join course on student.ID=course.ID

(3)附加运算查询

类型

含义

as

将as前的关系起一个别名,在此语句中,可以用别名来代指这个表

*

在select中通过: “表名.*” 来表示查找出这个表中所有的属性

order by

让查询结果中的信息按照给定的属性排序(默认升序,上小下大)

desc

在order by之后的属性后使用,表示采用降序排序

asc

在order by之后的属性后使用,表示采用升序排序(默认)

between

在where中使用between表示一个数在两个数值之间取值

not between

between的反义词,在两个数之外取值

union/union all

将两个SQL语句做并运算,并且自动去重,添加all表示不去重

intersect/intersect all

将两个SQL语句做交运算,并且自动去重,添加all表示不去重

except/except all

将两个SQL语句做差运算,并且自动去重,添加all表示不去重

is null

在where中使用is null表示这个值是空值

is not null

在where中使用is not null表示这个值不是空值

(4)聚集函数运算查询

类型

含义

avg

平均值

min

最小值

max

最大值

sum

总和

count

计数

distinct

表示将distinct后的属性去重

group by

将在group by上取值相同的信息分在一个组里

having

对group by产生的分组进行筛选,可以使用聚集函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/42181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

临近期末,这些题不来看看吗?(上)

目录 1、在屏幕上输入9*9乘法表 2、输入一个值,打印对应的乘法口诀表 3、求十个整数的最大值 4、分数求和:计算1/1 - 1/2 1/3 - 1/4 1/5 ... 1/99 - 1/100(3种方法) 5、编写程序数一下,1到100的所有整数中出现多…

ggrcs 包2.4绘图实际操作演示(1)

ggrcs 包2.4版本已经发布一段时间了,大概几个月了吧,收到不少好评, 没听说太大的问题,最主要的问题有两个: 1.是说变量不是数字变量。 2.是说数据超过10万,无法处理 第一个问题非常好处理,这…

【精品】k8s的存储PV与PVC详解

概述 PV(Persistent Volume)一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。 PVC(Persistent Volume Claim)是用户对于存储需求的一种声明。换句话说,PVC其实就是用户向kubernetes系统发出的一种资源需…

vscode开发maven的javaweb项目,并部署到tomcat及配置

1、安装并配置JAVA环境 我的是用的jdk1.8.0_181(安装自行解决,直接可以下载免安装配置环境) 配置JAVA_HOME,设置路径为C:\Program Files\Java\jdk1.8.0_181, 添加bin到path环境变量: 2、安装Maven 1)官网…

垃圾分类小程序系统毕业设计,垃圾分类小程序系统设计与实现,垃圾分类系统毕设参考

功能清单 【管理员功能】 会员管理:查看网站所有注册会员信息,支持删除 资讯录入:录入资讯标题、时间、资讯内容等 管理资讯:查看现有资讯列表,支持修改和删除功能 留言管理:查看小程序留言列表&#xff0…

Azide PEG2 Pyrene|2135330-58-2|Pyrene标记的PEG连接物

Pyrene-PEG2-azide是一种含有叠氮化物基团的Pyrene标记的PEG连接物,它可以用任何含炔分子进行点击化学标记,从而将任何分子转化为含Pyrene的探针。亲水性PEG连接剂可以增加水溶液中生物分子的溶解度并促进其附着。 西安凯新生物科技有限公司azide系列产品…

Python人工智能学习路线(万字长文)

前言 随着全球市场的饱和,以及模式创新的用尽,传统的互联网产业已经进入成熟阶段,不会再有突飞猛进的发展。 (文末送读者福利) 接下来,是人工智能和大数据展露锋芒的时候了,它们在未来 10 年…

欧拉公式-上帝创造的公式

欧拉公式: (1)分式里的欧拉公式:   a^r/(a-b)(a-c)b^r/(b-c)(b-a)c^r/(c-a)(c-b)   当r0,1时式子的值为0   当r2时值为1   当r3时值为abc   (2)复变函数论里的…

firefly3399专题1-uboot2022.10的移植

硬件信息: friefly3399一块,2GB内存/16Gemmc。 软件信息: ubuntu18.04虚拟机,内部有firefly的SDK包。 参考资料:[ROC-RK3399-PC Pro] 手把手教你移植主线U-Boot(基于v2022.04-rc5版本)_Neution…

数据库变更管理:Liquibase or Flyway

《从零打造项目》系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 SpringBoot集成MybatisPlus项目实操 SpringBoot集成Spring Data JPA项目实操 数据库变更管理 数据库变更管理:Li…

ZMQ/ZeroMQ的三种消息模式

一、 Reuqest-Reply(请求-应答模式) 1、使用Request-Reply模式,需要遵循一定的规律。 2、客户端必要先发送消息,在接收消息;服务端必须先进行接收客户端发送过来的消息,在发送应答给客户端,如此循环 3、服务端和客户端…

RabbitMQ(基于AMQP的开源消息代理软件)

一、AMQP高级消息队列协议 (1)介绍 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客…

图神经网络关系抽取论文阅读笔记(四)

1 GDPNet:用于关系提取的潜在多视图图的精炼(GDPNet: Refining Latent Multi-View Graph for Relation Extraction) 论文:GDPNet: Refining Latent Multi-View Graph for Relation Extraction,2021 1.1 引言 由于基于 BERT 等序列模型与基于图模型算法是…

模块首页UX交互升级,接口测试支持禁用本地执行,MeterSphere开源持续测试平台v2.4.0发布

2022年11月28日,MeterSphere一站式开源持续测试平台正式发布v2.4.0版本。 在这一版本中,MeterSphere在测试跟踪和接口测试模块中对首页进行了UX交互升级,将部分指标进行了饼图、柱状图的展示优化,同时根据社区用户的实际使用反馈…

计算机毕业设计【HTML+CSS+JavaScript服装购物商城】毕业论文源码

常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A…

JS进阶第二篇:函数参数按值传递

文章目录函数参数按值传递按值传递引用传递?应用函数参数按值传递 按值传递 在 JavaScript 中,我们有函数以及传递给这些函数的参数。但是 JavaScript 对如何处理你传递的内容并不总是很清楚。当你开始进入面向对象开发的时候,你可能会发现…

【Hack The Box】Linux练习-- Shibboleth

HTB 学习笔记 【Hack The Box】Linux练习-- Shibboleth 🔥系列专栏:Hack The Box 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 &#…

3.8 如何在小红书上蹭热点,这里有8个方法【玩赚小红书】

在小红书究竟能不能蹭到热点?有哪些热点可以蹭?怎么蹭?是很多小红书运营者关心的问题。在我看下,小红书热点分为官方热点、事件热点和账号热点三类,用好这8个方法,让笔记获得更多流量。 ​ ​ 一、官方热点 官方热点是小红书推出&#x…

RocketMQ 消费端如何监听消息?

前言 RocketMQ消息消费者是如何启动的,有一个步骤是非常重要的,就是启动消息的监听,通过不断的拉取消息,来实现消息的监听, 那具体怎么做,让我们我们跟着源码来学习一下~ 流程地图 源码跟踪 这一块的代…

ipv6地址概述——配置ipv6

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。个人爱好: 编程,打篮球,计算机知识个人名言:海不辞水,故能成其大;山不辞石…