数据库(三)超详细SQL语句入门 | SQL增删改查,重命名,字符操作,联合操作,聚合函数,嵌套子查询

文章目录

  • 1 SQL表内类型
  • 2 SQL增删改语句
    • 2.1 创建表
    • 2.2 删除表
    • 2.3 表中添加属性
    • 2.4 添加新的元组信息
    • 2.5 删除表所有元组
    • 2.6 元组
  • 3 查询语句
  • 4 重命名
    • 4.1 为什么用
  • 5 字符操作
    • 5.1 寻找
  • 6 生序降序
  • 7 联合操作
    • 7.1 并集Union
    • 7.2 交集 INTERSECT
    • 7.3 差集 EXCEPT
    • 7.4 对于空值补充
  • 8 聚合函数
    • 8.1 group by
    • 8.2 having
  • 9 Nested Subqueries 嵌套子查询
    • 9.1 Set Membership
    • 9.2 Set Comparison
    • 9.3 exist or not exists
    • 9.4 with as

1 SQL表内类型

char(n) 固定长度n的字符

varchar(n) 最大长度n的字符

int 整形

smallint 小整形

numeric(p,d ) 固定小数点位数,特定精度 如 numeric(3,1) 支持 44.5

float

double

2 SQL增删改语句

2.1 创建表

语法

注意不要丢掉分号

示例:

create table department(dept_name varchar(20),building varchar(15),budget numeric (12,2),primary key(dept_name)
);

指定主键

primary key(dept_name)

指定非空属性

dept_name varchar(20) not null

制定外键

foreign key (name) references instructor

2.2 删除表

drop table r;

2.3 表中添加属性

alter table r add A D;

为表添加A D属性

2.4 添加新的元组信息

insert into instructors values("10211","Simith","Biology")

2.5 删除表所有元组

delete from instructor

2.6 元组

示例:给收入低于 70000 的教师加薪 5%

update instructor
set salary = salary * 1.05
where salary < 70000;

3 查询语句

查询结构

select 属性

from 表

where 谓词条件

多个表的时候,需要加表名.属性区分

select name, instructor.dept_name, building
from instructor, department
where instructor.dept_name= department.dept_name;

注意

1 SQL语句大小写不敏感 name=NAME

2 选择结果可能会包含重复的结果

使用distinct去除重复

select distinct dept_name
from instructor;

3 使用*查询全部

select * from instructor;

4 选择中可以包括运算表达式

select ID, name, salary/12 as monthly_salary  
from instructor;

表示选择工资除以12后选择出来

5 where谓词

select name
from instructor
where dept_name = 'Comp. Sci.'  and salary > 70000;select name, instructor.dept_name, building
from instructor, department
where instructor.dept_name = department.dept_name;

4 重命名

4.1 为什么用

as

1 在相同的关系中比较元组

示例:查找 Comp.Sci 部门中薪水高于至少一名讲师的所有讲师的姓名。

select distinct T.name
from instructor as T, instructor as S
where T.salary > S.salary and S.dept_name = 'Comp. Sci';

2 将长的名字改短

select T.name, S.course_id
from instructor as T, teaches as S
where T.ID= S.ID;

3 结果属性修改名称

select T.name as instructor_name, S.course_id
from instructor as T, teaches as S
where T.ID= S.ID;

5 字符操作

5.1 寻找

like

% 子字符串匹配

__ 匹配任何字符串

举例

'Intro%' matches any string beginning with “Intro”.
'%Comp%' matches any string containing “Comp” as a substring.
'_ _ _' matches any string of exactly three characters.
'_ _ _ %' matches any string of at least three characters.

注意

1 大小写敏感

2 转义字符区分%

Match the string “100%”
like ‘100 %’

6 生序降序

order关键字

desc 降序

asc升序

示例1:按字母顺序列出物理系的所有教师

select name
from instructor
where dept_name = 'Physics'
order by name;

示例2:按薪水和姓名列出讲师

select *
from instructor
order by salary desc, name asc;

between

select name 
from instructor
where salary between 90000 and 100000

等价于

select name
from instructor
where salary <= 100000 and salary >= 90000;

7 联合操作

7.1 并集Union

可以直接自动消除重复,不像选择子句。

例子1 :查找 2017 年秋季或 2018 年春季开设的课程

select course_id  from sectionwhere semester = 'Fall' and year = 2017union
select course_id  from sectionwhere semester = 'Spring' and year = 2018;

如果我们想要保留所有重复值

用union all

select course_id  from sectionwhere semester = 'Fall' and year = 2017union all 
select course_id  from sectionwhere semester = 'Spring' and year = 2018;

7.2 交集 INTERSECT

select course_id  from sectionwhere semester = 'Fall' and year = 2017
intersect
select course_id  from sectionwhere semester = 'Spring' and year = 2018;

7.3 差集 EXCEPT

select course_id  from sectionwhere semester = 'Fall' and year = 2017
except
select course_id  from sectionwhere semester = 'Spring' and year = 2018;

7.4 对于空值补充

1 任何包含Null的表达式返回为Null

例:

5 + null  returns null

2 任何包含Null的比较返回的值是未知的

 5 < null  or  null <> null   or   null = null  returns unknown

3 对于布尔运算

and : (true and unknown)  = unknown,  (false and unknown) = false,(unknown and unknown) = unknown
or: (unknown or true)   = true,unknown or false)  = unknown(unknown or unknown) = unknown

空值,未知检测

示例:查找工资为空的所有教师。

select name
from instructor
where salary is null/ unknown

都是用is的,注意不能用=来替代is 在null的情况下

8 聚合函数

Average: avg
Minimum: min
Maximum: max
Total: sum
Count: count

示例:查找计算机科学系教师的平均工资

select avg (salary) as avg_salary
from instructor
where dept_name = 'Comp. Sci.';

8.1 group by

group by是一个限定函数,意味着在这种情况下,限定在哪里的一个范围内进行比较寻找

比如下面的例子,要找到每一个部门的平均值

示例:查找每个部门讲师的平均工资

select dept_name, avg (salary) as avg_salary
from instructor
group by dept_name;

8.2 having

示例:查找平均工资大于42000的所有部门的名称和平均工资

having相当于就是给Group加一个条件,比如在这个范围内大于42000的

select dept_name, avg (salary) as avg_salary
from instructor
group by dept_name
having avg (salary) > 42000;

9 Nested Subqueries 嵌套子查询

9.1 Set Membership

in 和not in

示例: 查找所有姓名为“莫扎特”或“爱因斯坦”的教师

select distinct name
from instructor
where name in("Mozart","Einstein")

示例:查找已参加 ID 为 10101 的教师教授的课程部分的(不同)学生总数

select count (distinct ID)
from takes
where (course_id, sec_id, semester, year) in                                 (select course_id, sec_id, semester, yearfrom teacheswhere teaches.ID= 10101);

9.2 Set Comparison

SQL also allows < some, <= some, >= some, = some, and <> some
定义: y < some (X) : y小于X中任一元素,则结果为true

比较

some 只要一个满足即可

在这里插入图片描述

all 所有满足

在这里插入图片描述

9.3 exist or not exists

示例: 查找学过生物系所有课程的学生(ID、姓名)。

select S.ID, S.name
from student as S
where not exists ( (select course_idfrom coursewhere dept_name = 'Biology')except(select T.course_idfrom takes as Twhere S.ID = T.ID));

9.4 with as

临时的关系,一会儿的查询用到

示例: 查找预算最高的所有部门

with max_budget (value) as       (select max(budget)from department)
select department.name
from department, max_budget
where department.budget = max_budget.value;

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

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

相关文章

掀起全新的互联网直播风潮

随着科技的不断进步和智能手机的普及&#xff0c;无人直播作为一种全新的互联网直播方式&#xff0c;在近些年迅速崛起&#xff0c;并引起了广泛关注。本文将围绕手机无人直播展开探讨&#xff0c;探究其背后的原因以及对社会生活带来的影响。 首先&#xff0c;我们需要明确什…

[Angular] 笔记 5:ngClass

Angular 中的 ngClass 是什么&#xff1f; chatgpt 回答&#xff1a; 在Angular中&#xff0c;ngClass 是一个内置的指令&#xff0c;用于动态地添加或移除 HTML 元素的 CSS 类。它允许你根据条件设置一个或多个 CSS 类&#xff0c;可以是对象、数组或字符串。 使用方式&#…

一篇文章带你进阶CTF命令执行

以下的命令是为了方便以后做题时方便各位读者直接来这里复制使用&#xff0c;刚开始还请先看完这篇文章后才会懂得下面的命令 ?ceval($_GET[shy]);&shypassthru(cat flag.php); #逃逸过滤 ?cinclude%09$_GET[shy]?>&shyphp://filter/readconvert.base64-…

mysql:查看服务端没有睡眠的线程数量

使用命令show global status like Threads_running;可以查看服务端没有睡眠的线程数量。 例如&#xff1a;

玩转Spring状态机

说起Spring状态机&#xff0c;大家很容易联想到这个状态机和设计模式中状态模式的区别是啥呢&#xff1f;没错&#xff0c;Spring状态机就是状态模式的一种实现&#xff0c;在介绍Spring状态机之前&#xff0c;让我们来看看设计模式中的状态模式。 1. 状态模式 状态模式的定义如…

[Encryptedd@mailfence.com].faust 勒索病毒肆虐:如何恢复被加密的数据文件?

导言&#xff1a; 在网络安全的战场上&#xff0c;[backupsairmail.cc].faust [Deciphermailfence.com].faust[Encrypteddmailfence.com].faust[support2022cock.li].faust [tsai.shenmailfence.com].faust勒索病毒是一种极具破坏性的恶意软件。本文91数据恢复将深入介绍该病毒…

【krita】实时绘画 入门到精通 海报+电商+装修+人物

安装插件 首先打开comfyUI&#xff0c;再打开krita&#xff0c;出现问题提示&#xff0c; 打开 cd custom_nodes 输入命令 安装控件 git clone https://github.com/Acly/comfyui-tooling-nodes.git krita基础设置 设置模型 设置lora &#xff08;可设置lora强度 增加更多…

◢Django md5加密与中间件middleware

utils文件夹是重新建立的&#xff08;与migrations同级&#xff09;&#xff0c;该文件夹下主要存放工具&#xff0c;就像static文件夹下只存放静态文件一样 加密 在utils文件夹下建立encrypt.py文件 from django.conf import settings import hashlib def md5(data_string)…

Airtest1.2.7新增断言API介绍

1. 前言 1.2.7版本的Airtest中&#xff0c;一个很重要的功能是 新增了非常丰富的断言API &#xff0c;今天我们就来详细看一下Airtest都给我们提供了哪些断言语句。 2. 旧版Airtest提供的断言语句 先回顾下&#xff0c;旧版Airtest一直以来&#xff0c;都只给我们提供了2种断言…

Samtec信号完整性 这家连接器的设计很优秀!

【Samtec技术研发&#xff1a;信号完整性设计】 1. 什么是信号完整性&#xff1f; 信号完整性需要在整个系统和组件设计过程中加以考虑。与过去不同的是&#xff0c;互连不再是事后考虑的问题。随着上升时间的缩短和时钟频率的提高&#xff0c;曾经被认为是电气透明的连接器和…

阿里云经济型、通用算力型、计算型、通用型、内存型云服务器最新活动报价

阿里云作为国内领先的云计算服务提供商&#xff0c;提供了多种规格的云服务器供用户选择。为了满足不同用户的需求&#xff0c;阿里云推出了经济型、通用算力型、计算型、通用型和内存型等不同类型的云服务器。下面将详细介绍这些云服务器的最新活动报价。 一、阿里云特惠云服…

机器学习数据的清洗,转化,汇总及建模完整步骤(基于Titanic数据集)

目录 介绍&#xff1a; 一、数据 二、检查数据缺失 三、数据分析 四、数据清洗 五、数据类别转化 六、数据汇总和整理 七、建模 介绍&#xff1a; 线性回归是一种常用的机器学习方法&#xff0c;用于建立一个输入变量与输出变量之间线性关系的预测模型。线性回归的目标…

工业4.0|工业物联平台有多重要?IoTopo 深度解析

随着时代的发展&#xff0c;科学技术日新月异&#xff0c;人们进入了信息化的时代。现今&#xff0c;在物联网的逐渐普及下&#xff0c;物联网技术应用于工业中&#xff0c;也显得尤为重要&#xff1b;在工业网络和移动计算持续影响着制造业和工业环境的大环境中&#xff0c;这…

计算机毕业设计 基于SpringBoot的大学生平时成绩量化管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Python---TCP服务端程序开发

1. 开发 TCP 服务端程序开发步骤回顾 创建服务端端套接字对象绑定端口号设置监听等待接受客户端的连接请求接收数据发送数据关闭套接字 2. socket 类的介绍 导入 socket 模块import socket 创建服务端 socket 对象socket.socket(AddressFamily, Type) 参数说明: AddressF…

SpringMVC:执行原理详解、配置文件和注解开发实现 SpringMVC

文章目录 SpringMVC - 01一、概述二、SpringMVC 执行原理三、使用配置文件实现 SpringMVC四、使用注解开发实现 SpringMVC1. 步骤2. 实现 五、总结注意&#xff1a; SpringMVC - 01 一、概述 SpringMVC 官方文档&#xff1a;点此进入 有关 MVC 架构模式的内容见之前的笔记&a…

【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)

球面谐波&#xff08;SH&#xff09;因为其良好的性质活跃在NeRF、Plenoxels、3DGS等显隐式场景表示的方法中。 问&#xff1a;球面谐波是什么&#xff1f; 答&#xff1a;一组基函数。可以理解为傅里叶分解的一种特殊形式&#xff0c;即“任何函数都可以用这组基的算术组合来近…

记录 | gdb调试的基本命令

r (run) 运行程序 b (breakpoint) 打断点&#xff0c;比如 b func(打到函数) b 5(打到第5行)(当前文件) b main.cpp:5(main.cpp的第5行) b MyClass::func() (打到类的成员函数func()、在类内可以 p this 打印、p *this、p this->name) tb (temporary breakpoint) 临时断…

ctfshow(web190-web200)

目录 web190 web191 web192 web193 web194 web195 web196 web197 web198 web199 web200 web190 为什么要有admin呢 这也是试出来的 这个admin必须是数据库中存在的 这样才能使用布尔注入 因为这个时候登录 有两种返回结果 一种密码错误 一种就是用户名错误 admin an…

前端性能监控和错误监控

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…