【数据库】SQL语句

news2024/12/18 18:54:14

第三章 SQL

SQL(structured Query Language)

SQL概述

SQL特点

  1. 综合统一。
  2. 高度非过程化。
  3. 面向集合的操作方式。
  4. 以同一种语法结构提供多种使用方式。
  5. 语言简洁易学易用。

主要版本

  • SQL-89
  • SQL-92 ,SQL2
  • SQL-99 ,SQL3

数据库结构

SQL语言是集DDL、DML和DCL于一体的数据库语言

在这里插入图片描述

基本表是独立存在的表,一个关系对应一个表

存储文件由一个或多个基本表和表的一个或若干索引组成,它的逻辑结构组成了关系数据库的内模式,物理结构对用户是屏蔽的

视图是虚表,真实的数据仍存放在基表中,数据库只存放视图的定义

分号问题

关于SQL语句句末加不加分号的问题_

  • 在sql标准中是加分号
    * 在程序中不加分号
    * 在SQL Server中可以加,也可以不加

数据类型

常用的数据类型:

  • varchar(n) 可变长度的字符串
  • char(n) 固定长度的字符串
  • int 整型数字,也可以写作integer

视图View

在这里插入图片描述

视图就是基本表的一个虚拟子表

创建视图

在这里插入图片描述

-- 创建一个男生视图
Create View Male as (select * from Student where Ssex='男');
--
select * from Male;

在这里插入图片描述

视图的更新

本质是更新基本表

SQL视图更新的可执行性

  • 如果视图的select目标列包含聚集函数,则不能更新
  • 如果视图的select子句使用了unique或distinct,则不能更新
  • 如果视图中包括了groupby子句,则不能更新
  • 如果视图中包括经算术表达式计算出来的列,则不能更新
  • 如果视图是由单个表的列构成,但并没有包括主键,则不能更新

也就是说,如果当前更新视图的操作与更新基本表的操作有冲突则不能更新

对于由单一Table子集构成的视图,即如果视图是从单个基本表使用选 择、投影操作导出的,并且包含了基本表的主键,则可以更新

DDL语句

引导词:

  • Create(建立)
  • Alter(修改)
  • Drop(撤消)

模式的定义和删除,包括定义Database,Table,View,Index,完整性约束 条件等,也包括定义对象(RowType行对象,Type列对象)

DDL通常由DBA来使用,也有经DBA授权后,由应用程序员来使用

在这里插入图片描述

创建Create table

创建数据库
create database 数据库名;

数据库中的Schema和database区别是什么?_

取决于数据库供应商

(1)MySQL的文档中指出,在物理上,模式与数据库是同义的,所以模式和数据库是一回事。

(2)但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。

(3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

创建表
CREATE TABLE <表名>
      (<列名> <数据类型>[ <列级完整性约束条件> ]
      [,<列名> <数据类型>[ <列级完整性约束条件>] ][,<表级完整性约束条件> ] );

<表级完整性约束条件>:涉及一个或多个属性列的完整性约束条件

如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

修正alter table

在这里插入图片描述

撤销表 drop table

drop table tablename #撤销表
drop database 数据库名

数据库的指定与关闭

指定当前数据库
use 数据库名
关闭档期那数据库
close 数据库名

DML语句

引导词:

  • Insert

  • Delete

  • Update

  • Select

    各种方式的更新与检索操作,如直接输入记录,从其他Table(由SubQuery 建立)输入

    各种复杂条件的检索,如连接查找,模糊查找,分组查找,嵌套查找等

    各种聚集操作,求平均、求和、…等,分组聚集,分组过滤等 

查询Select from

在这里插入图片描述

逻辑运算符用 and , or, not 来表示,

结果去重Distinct

在关系模型中要求元组不重复,但现实可以重复,也可以不重复

在Table中要求无重复元组是通过定义Primary key或Unique来保证的;

而在 检索结果中要求无重复元组, 是通过DISTINCT保留字的使用来实现的。

select distinct Cnum from SC;

结果排序order by

在这里插入图片描述

默认升序asc

select  Score from SC order by Score desc;

结果计算

在这里插入图片描述

表达式

-- 查询非同龄人的年龄差
select S1.Sname as S1N , S2.Sname as S2N,S1.Sage-S2.Sage as '年龄差 '
from Student S1 ,Student S2 where S1.Sage>S2.Sage;
聚集函数

在这里插入图片描述

select count(*) from Student;
select max(Sage) from Student;

模糊查询 like

在这里插入图片描述

select * from Student where Sname like '%张%';
select * from Student where Sname like '张_';

多表联合查询 ,

在这里插入图片描述

如果重名可以用as来设置别名,as可省略

Select Select 列名 as 列别名 [ [, 列名 as 列别名]] From 表名1 as 表别名1, 表名2 as 表别名2,Where Where 检索条件 ;

子查询

在这里插入图片描述

  • 相关查询:主查询的表不影响子查询
  • 非相关查询:主查询的表影响子查询
in

在这里插入图片描述

select * From Student Where Sname in ('张三','李宁');
Select Snum, Sname From Student 
  Where Snum in ( Select Snum From SC Where Cnum = '001' ) ;
some all

在这里插入图片描述

-- 找出年纪最大的
Select Sname,Sage from Student where Sage >= all(Select Sage from Student);
-- 找出年纪不是最小的
Select Sname,Sage from Student where Sage > some(Select Sage from Student);

在这里插入图片描述
在这里插入图片描述

exists

存在返回true,在找到行后立即终止查询处理,因此,可以利用EXISTS运算符的此功能来提高查询性能。

在这里插入图片描述

对于主表中的每一行,子查询检查其他表中是否存在对应的行,如果有返回true

-- 找出学过数据库课程的同学的名字
select Sname from Student where exists(
select * from Course,SC where Course.Cnum=SC.Cnum and Course.Cname='数据库' and Student.Snum=SC.Snum
);

分组查询

在这里插入图片描述

-- 求每个学生的平均成绩
select SC.Snum,Avg(Score) as '平均分' from Student,SC where Student.Snum=SC.Snum 
   Group by SC.Snum;

没有包含在聚合函数或 GROUP BY 子句中的属性不能查询或在having中使用

分组过滤

在这里插入图片描述

   select SC.Snum,Avg(Score) as '平均分' from Student,SC where Student.Snum=SC.Snum 
   Group by SC.Snum having avg(SC.Score)>60;

select into

SELECT *
INTO Persons_backup
FROM Person

添加insert into

在这里插入图片描述

删除delete from

Delete From 表名 [ Where 条件表达式] ;

更新update

在这里插入图片描述

DCL语句

引导词:

  • Grant
  • Revoke

安全性控制:授权和撤消授权

关系代数

交并差

有的DBMS不支持

在这里插入图片描述

-- 求学过002 或003 的学号,默认去重
select Snum from SC where Cnum='002'
UNION 
select Snum from SC where Cnum='003';

select Snum from SC where Cnum='002'
UNION all
select Snum from SC where Cnum='003';

-- 求学过002和003 的学号
select Snum from SC where Cnum='002'
INTERSECT 
select Snum from SC where Cnum='003';

-- 求没学过002学生的学号
select distinct Snum from SC 
except
select Snum from SC where Cnum='002';

空值

空值的处理

在这里插入图片描述

现行DBMS的空值处理小结

  • 除is[not]null之外,空值不满足任何查找条件
  • 如果null参与算术运算,则该算术表达式的值为null
  • 如果null参与比较运算,则结果可视为false。在SQL-92中可看成 unknown
  • 如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null

连接

在这里插入图片描述

连接类型(四选一)

  • inner join 内连接
    • 即关系代数中的θ-连接
  • left outer join 左外连接
    • 保留左表的全部元组
  • right outer join 右外连接
  • full outer join 全连接

连接条件(三选一)

  • natural
    • 所有的公共属性相等
  • on <连接条件>
    • 所有的公共属性满足一定的条件
  • using (Col1,Col2,···Coln)
    • 部分属性
select * from Student left outer join SC on Student.Snum=SC.Snum;

select总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

网安入门,这篇文章足够了(内含海量资料)

随着新一轮科技和产业变革加速演进&#xff0c;人工智能、物联网、大数据、5G等新兴技术在成为经济社会发展的助推器的同时&#xff0c;也让网络空间变得更加复杂。全球范围内网络安全事件日益增加&#xff0c;网络安全的重要性日渐凸显。 “我国网络空间安全人才年培养规模在…

STM32——窗口看门狗

什么是窗口看门狗&#xff1f; 窗口看门狗用于监测单片机程序运行时效是否精准&#xff0c;主要检测软件异常&#xff0c;一般用于需要精准检测 程序运行时间的场合。 窗口看门狗的本质是一个能产生系统复位信号和提前唤醒中断的6位计数器。 产生复位条件&#xff1a; 当递减…

CLion开发图书管理系统项目 (c++ + MySQL实现)

项目仓库 &#xff1a;传送门 需求分析 当下市场日益激烈的竞争迫使图书企业采用一种新的管理方式来加快图书管理操作&#xff0c;而计算机技术的发展为图书管理注入了新的生机。通过调查市场&#xff0c;一款合格的图书管理系统必须具备以下三个特点&#xff1a; 能够对图书…

注解原理剖析与实战

一、注解及其原理 1.注解的基本概念 注解&#xff0c;可以看作是对 一个类/方法的一个扩展的模版&#xff0c;每个类/方法按照注解类中的规则&#xff0c;来为类/方法注解不同的参数&#xff0c;在用到的地方可以得到不同的类/方法中注解的各种参数与值。 从JDK5开始&#xff…

【必学】最流行的云原生监控解决方案:Prometheus+Grafana

文章目录一、Prometheus和Grafana简介1.1、Prometheus是最受欢迎的云原生监控方案之一1.2、Grafana是最流行的开源可视化平台二、Prometheus的优势三、Prometheus架构原理四、Prometheus和Grafana安装部署一、Prometheus和Grafana简介 1.1、Prometheus是最受欢迎的云原生监控方…

如何进行单元测试

前言单元测试是指对软件中最小可测单元进行检查和验证&#xff1b;c语言中单元指一个函数&#xff0c;java中指一个类。图形化软件中可以指一个窗口或者一个菜单。总的来说&#xff0c;单元就是认为规定最小的被测试模块。1.1单元测试对我们开发程序有什么好处首先是一个前端单…

react: input 输入框 中文onChange事件异常问题 对input输入进行防抖处理

当我们使用Input时&#xff0c;我们可能会遇到一个问题&#xff0c;比如需要对用户输入的内容进行搜索时&#xff0c;当用户处于中文输入时&#xff0c;明明没有对内容进行确认&#xff0c;为什么会触发了onChange事件呢&#xff1f;比如以下场景&#xff0c;中文一边输入另外一…

机器学习知识总结 —— 20.使用朴素贝叶斯进行数据分类

文章目录准备基础数据计算先验概率计算条件概率预测分布验证结果作为一种监督学习分类方法&#xff0c;在上一章中我们已经介绍过它的数理原理。现在我们开始来实现一个简单的朴素贝叶斯分类的算法&#xff0c;这样我们能更好的理解它是怎么运作的。 准备基础数据 首先还是有…

加密流量专栏总览

文章目录加密流量专栏1. 原理篇2. 模型篇3. 文章分类总结3.1 研究方向3.2 特征提取3.3 机器学习模型改进3.4 深度学习模型改进3.5 其他模型改进3.7 实时检测3.8 概念漂移检索论文的方法加密流量专栏 1. 原理篇 原理&#xff1a; 会话、流、数据包之间的关系。 流&#xff1a;…

【离线数仓-4-数据仓库设计-分层规划构建流程】

离线数仓-4-数据仓库设计-分层规划&构建流程离线数仓-4-数据仓库设计-分层规划&构建流程1.数据仓库分层规划2.数据仓库构建流程1.数据调研1.业务调研2.需求分析3.总结2.明确数据域3.构建业务总线矩阵&维度模型设计4.明确统计指标1.指标体系相关概念1.原子指标2.派生…

【渝偲医药】DSPE-PEG-RGD;磷脂聚乙二醇多肽试剂级简介

DSPE-PEG-RGD、 二硬脂酰基磷脂酰乙醇胺-聚乙二醇-多肽、磷脂PEG多肽 英文名称: 1,2-Distearoyl-sn-Glycero-3-Phosphoethanolamine-PEG- RGD 溶剂:可溶解在水中和大多数有机溶剂中 外观:白色粉末 用途:用于链接带有链霉亲和素或其他的基团的分子 分子量(PEG ):2000、3400、…

那些开发过程中需要遵守的开发规范

入职公司三天&#xff0c;没干啥其他活&#xff0c;基本在配置本地环境和阅读相关文档。技术方面公司基本用的是主流的技术体系&#xff0c;入职后需要先阅读阿里的开发规范和其他的一些产研文档。今天整理一些平时需要关注的阿里规约和数据库开发规范&#xff0c;方便今后在开…

TatukGIS Developer Kernel for .NET

TatukGIS Developer Kernel for .NET 用于.NET的TatukGIS开发人员内核的强大功能&#xff1a; 打开、创建、编辑、保存和导出矢量、图片和网格的过程&#xff0c;包括类似于数据库的格式。 扩展属性、北箭头、比例和其他视觉控制也从TatukGIS编辑器/查看器商品中显示给用户开发…

Java基础系列(五): final关键字用法

一. 概述 final关键字代表最终,不可改变的. 常见有5种用法,我们来归纳总结一下: 1. 用来修饰一个类 2. 用来修饰一个方法 3. 用来修饰成员变量 4. 用来修饰局部变量 5. 用来修饰方法参数 二. final饰修类 如果声明一个类为final类, 那么这个类就是最终类,不能被继承 …

7 Python文件、文件夹、word及excel操作

0 建议学时和要求 4学时 掌握os和os.path模块对文件和文件夹操作的函数 掌握shutil模块对文件和文件夹操作的函数 掌握扩展库openpyxl对Excel文件的操作 1 文件的高级操作 1.1 文件的概念及分类 文本文件 文本文件可以使用记事本、gedit、ultraedit等字处理软件直接进行显…

ESP32设备驱动-DS1264数字温度传感器驱动

DS1264数字温度传感器驱动 1、DS1264介绍 DS1624 由两个独立的功能单元组成:一个 256 字节非易失性 E2 存储器和一个直接数字温度传感器。 非易失性存储器由 256 字节的 E2 存储器组成。 该存储器可用于存储用户希望的任何类型的信息。 这些内存位置通过 2 线串行总线访问。…

007永磁电机控制方式:别张嘴就FOC,其他常规控制方式也是伺服人的基本功

在读本篇文&#xff0c;我想做个小调查。到目前为止&#xff0c;你掌握的或者是你了解到的控制永磁同步电机的方式都有哪些&#xff1f;我想&#xff0c;你大概张口就说FOC控制吧。没错&#xff0c;FOC控制是我们日常生活中所见到的最普遍的永磁同步电机的控制方式。当然在本专…

微信电脑版字体模糊(或文字太小)怎么调整

文章目录第一步&#xff1a;设置屏幕缩放125%第二步&#xff1a;文本大小设置为125%第三步&#xff1a;微信设置--通用--勾选“适配系统缩放比例”第四步&#xff1a;微信高DPI缩放行为设置&#xff08;关键&#xff09;ClearType勾选&#xff08;可选&#xff09;笔者遇到这个…

【模板】线段树 2

题目描述 如题&#xff0c;已知一个数列&#xff0c;你需要进行下面三种操作&#xff1a; 将某区间每一个数乘上 xxx 将某区间每一个数加上 xxx 求出某区间每一个数的和 输入格式 第一行包含三个整数 n,m,pn,m,pn,m,p&#xff0c;分别表示该数列数字的个数、操作的总个数…

计算机网络笔记(复试准备)第一章

计算机网络笔记&#xff08;复试准备&#xff09; 第一章 网络&#xff0c;互联网与因特网 网络由若干个结点和连接这些结点的链路组成 多个网络通过路由器连接起来这也就形成了一个更大的网络即是我们熟知的互联网也就是“网络的网络” 因特网是世界上最大的网络 问&#xf…