SQL语言初步认识

1. SQL简介

2. 基本的数据定义

2.1 创建基本表

CREATE TABLE <表名>

<列名><数据类型>[<默认值>|<标识列设置>][<该列的完整性约束>]

`完整性约束:

①NOT NULL :该列值不能为空

②NULL :该列值可以为空

③UNIQUE :该列值不能有相同者

2.2 表结构的修改

ALTER TABLE <表名>

        ADD <列名><数据类型>[列的完整性约束]  为表添加一个新列

        ADD <表级完整性约束> 为表添加一个表级完整性约束

        ALTER COLUMN<列名><新的数据类型> 修改表中原有列的数据类型

        DROP COLUNM <列名>  删除表中原有的一个列

        DROP CONSTRAINT<表级完整性约束>  删除原有的表级完整性约束

2.3 删除基本表

DROP TABLE <表名1>[,<表名2>];

2.4 创建索引

CREATE [UNIQUE][CLUSTERED][NONCLUSTERED] INDEX <索引名>

ON <表名|视图名>(<列名清单>)

 <列名清单> 中,每个列名后面都要指定 ASC(升序)、DESC(降序),不指定默认升序

2.5 删除索引

DROP INDEX <索引名1>[,<索引名2>];

3. 基本的数据操纵

3.1 表中增加元组

INSERT INTO <表名>[(<属性名清单>)]

VALUES(<常量清单>);

 <常量清单>中,字符串常量和日期型常量要用单引号(英文符号)括起来

3.2 修改表中数据的基本方法

UPDATE <表名>

SET <列名>=<表达式>,[,<列名>=<表达式>]

[WHERE<条件>];

3.3 删除记录

DELETE FROM <表名>

[WHERE<条件>];

3.4 更新操作与数据库的一致性

4. 数据查询

4.1 无条件单关系查询

SELECT [DISTINCT / ALL] < 目标列表达式 [[AS] 别名] 清单 >

FROM <关系名>

DISTINCT : 每组重复元组只输出一条元组

默认ALL

4.1.1 查询关系中的所有信息

SELECT *

FROM <关系名>; 

4.1.2 指定要查询的列

SELECT Title

FROM Employee;

4.1.3 取消结果集中的重复行 

SELECT DITINCT Title

FROM Employee;

ps: DISTINCT 关键字必须放在列名前

4.1.4 查询经过计算的列

 SELECT Ename , 2024-Age AS [Year of Birth] , Title

FROM Employee;

4.1.5 查询汇总数据
函数功能
COUNT(DISTINCT / ALL]*)统计结果中元组个数
COUNT(DISTINCT / ALL]<列名>)统计结果中某列值的个数
MAX(<列名>)给出一列上的最大值
MIN(<列名>)给出一列上的最小值
SUM(DISTINCT / ALL]<列名>)给出一列上值的总和
AVG(DISTINCT / ALL]<列名>)给出一列上值的平均值

4.2 带条件单关系查询

SELECT [DISTINCT / ALL] < 目标列表达式 [[AS] 别名] 清单 >

FROM <关系名>

WHERE <查询条件表达式>

4.2.1 使用比较运算符

= 、 < 、 >、<=、>=、<>

4.2.2 使用特殊运算符
运算符号含义
IN、NOT IN检查属性值是否属于一组值之一

BETWEEN...AND..、

NOT BETWEEN...AND...

检查属性值是否属于某个范围
IS NULL、IS NOT NULL检查属性值是否为空
LIKE 、NOT LIKE字符串匹配

通配符:%表示任意长度的字符串(长度可以为0 

                _表示任意单个字符

4.2.3 多条件单关系查询

NOT 、 AND 、 OR

4.3 分组查询

SELECT [DISTINCT / ALL] <目标列表达式 [别名] 清单 >

FROM <关系名>

[WHERE<查询条件表达式>]

GROUP BY <列名清单>[HAVING<条件表达式>];

根据GRUOP BY 中的列名清单 的值进行分组

SELECT语句中有 集函数 COUNT、SUM等

HAVING语句条件作用于结果组

4.4 排序查询结果

SELECT [DISTINCT / ALL] <目标列表达式 [别名] 清单 >

FROM <关系名>

[WHERE<查询条件表达式>]

[GROPUP BY <列名清单>[HAVING<条件表达式>]]

ORDER BY < 列名[ASC / DESC ]清单>;

ORDER BY 语句只作用于最终查询结果 

4.5 多关系连接查询

4.5.1 交叉连接

SELECT [DISTINCT / ALL] <目标列表达式 [别名] 清单>

FROM <关系名[别名] 清单>

例如

SELECT e.Ename , e.Title , e.Dno , d.Dno , d.Name

FROM Employee e , Department d;

4.5.2 内部连接

SELECT [DISTINCT / ALL] <目标列表达式 [别名] 清单>

FROM <关系名[别名] 清单>

WHERE <连接条件表达式>

 SELECT e.Ename , e.Title , e.Dno , d.Dno , d.Name

FROM Employee e INNER JOIN Department d

ON e.Dno = d.Dno;

 例如

SELECT e.Ename , e.Title , e.Dno , d.Dno , d.Name

FROM Employee e , Department d

WHERE e.Dno = d.Dno;

上面的语句先将Employee表和Department表做交叉连接,检索出的行数是Employee表的行数乘以Deprtment表的行数,然后WHERE语句将Employee表的Dno列与Department表的Dno列进行匹配,相等的行检索出来予以返回。 

ps:连接的属性名不一定要相同,但是数据类型要兼容

4.5.3 外部连接

1.左外连接:除了返回两表中满足连接条件的元组以外,还返回左侧表中不匹配的元组,右侧表中的空值则以空值(NULL)表示

2.右外连接

3.全外连接

LEFT JOIN、 RIGHT JOIN、 FULL JOIN

4.5.4 自身连接

使用关系的别名

例如,Eno(职工号)、Ename(职工姓名)、Emgr(负责人)

SELECT emp1.Eno ,emp2.Emgr

FROM Employee emp1,Employee emp2

WHERE emp1.Emgr = emp2.Eno

 自身连接,找到间接负责人

4.6 嵌套查询

1.使用IN进行子查询

IN、NOT IN

2.使用比较运算符的嵌套查询

可以和ANY、ALL一起使用

3.使用BETWEEN的嵌套查询

4.相关子查询

例如

SELECT Ename

FROM Employee emp1

WHERE Age > 

        (SELECT AVG(Age)

         FROM Employee emp2

         WHERE emp2.Dno = emp1.Dno);

在相关子查询中,可以使用EXISTS ,测试子查询是否存在返回值

查询参加了项目的职工号、姓名

SELECT Eno,Ename

FROM Employee e

WHERE EXISTS

                (SELECT *

                 FEOM Item_Emp

                 WHERE Eno = e.Eno); 

子查询只返回逻辑值 

4.7 多个SELECT语句的集合操作

集合操作:UNION(并操作、INTERSECT(交操作、EXCEPT(差操作

例如

SELECT *

FROM Item_Emp

WHERE Ino = '201801'

UNION

SELECT *

FROM Item_Emp

WHERE Ino = '202001'

查询项目号为‘201801’和‘202001’项目的职工参与信息

ps:参加UNION的记录结果集必须有相同的列数 

5. 含有子查询的数据更新

5.1 INSERT 与子查询的结合

INSERT INTO Employee_01

SELECT *

FROM Employee

WHERE Dno = '01'

5.2 UPDATE 与子查询的结合

UPDATE Salary

SET Rest = Rest + 200

WHERE Eno IN

                (SELECT Eno

                 FROM Item_Emp

                 WHERE Ino = '201802');

使参加‘201802’项目的职工,工资表中津贴的值都增加200 

5.3 DELETE 与子查询的结合

DELETE FROM Item_Emp

WHERE Eno = 

                (SELECT Eno

                 FROM Employee

                 WHERE Ename = '丁过’);

删除项目参加人中包含‘丁过’的所有元组 

6. 视图

视图是从一个或多个关系(基本表或者已有的视图)导出的关系

视图是虚表,视图不建立索引

6.1 定义视图

CREATE VIEW <视图名>[<列名清单>]

        AS <子查询>

        [WITH CHECK OPTION]

  [WITH CHECK OPTION]:之后对视图进行插入、修改、删除操作,会加上子查询中的条件,如果条件判断成立,则进行插入、修改和删除的操作

6.2 删除试图

DROP VIEW <视图名>

6.3 视图的查询

6.4 视图的更新

不是所有的视图都是可以更新的

6.5 视图的作用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

遍历取后端数据推送到地图上,实现图标点标记地图效果

遍历取后端数据推送到地图上&#xff0c;实现图标点标记地图效果 示例链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 踩坑注意点&#xff1a; 1. id: 1 是地图底图的id 后台也返回之后 id直接会有冲突 此时图标标记之后无法单击 相关代码&#xff1a…

异步 IO 机制 io_uring

一、io_uring 原理 如何解决频繁 copy 的问题 → mmap 内存映射解决。 submit queue 中的节点和 complete queue 中的节点共用一块内存&#xff0c;而不是把 submit queue 中的节点 copy 到 complete queue 中。 如何做到线程安全 → 无锁环形队列解决。 二、io_uring 使用 内…

了解 Python 底层的解释器 CPython 和 Python 的对象模型

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的&#xff0c;因此得名 “CPython”。作为 Python 生态系统的核心&#xff0c;了解 CPython 的工作原理、主要特…

【新版】系统架构设计师 - 知识点 - 结构化开发方法

个人总结&#xff0c;仅供参考&#xff0c;欢迎加好友一起讨论 文章目录 架构 - 知识点 - 结构化开发方法结构化开发方法结构化分析结构化设计 数据流图和数据字典模块内聚类型与耦合类型 架构 - 知识点 - 结构化开发方法 结构化开发方法 分析阶段 工具&#xff1a;数据流图、…

如何实现文件上传到阿里云OSS!!!(结合上传pdf使用)

一、开通阿里云OSS对象存储服务 对象存储 OSS_云存储服务_企业数据管理_存储-阿里云阿里云对象存储 OSS 是一款海量、安全、低成本、高可靠的云存储服务&#xff0c;提供 99.995 % 的服务可用性和多种存储类型&#xff0c;适用于数据湖存储&#xff0c;数据迁移&#xff0c;企…

股票战法课程之主力的痕迹

文章目录 1. 主力的操作痕迹2. 主力的建仓2.1 建仓的三种方式2.2 建仓的五个特点2.3 建仓的迹象2.4 建仓的成交量特征 1. 主力的操作痕迹 序号痕迹原因1不跟随大盘节奏筹码都在主力手中2突发利空消息&#xff0c;股价不跌反涨主力被套&#xff0c;不希望散户抛盘3很小的成交量…

智己汽车数据驱动中心PMO高级经理张晶女士受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 智己汽车科技有限公司数据驱动中心PMO高级经理张晶女士受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾&#xff0c;演讲议题为“规模化敏捷落地实践”。大会将于5月25-26日在北京举办&#xff0c;敬请关注&#xff01; 议题简要&#xff1a; 2…

CSS基础:table的4个标签的样式详解(6000字长文!附案例)

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

【Java】Comparable和Comparator的区别

文章目录 区别Comparable示例Comparator示例参考资料 都可以用于排序。都是接口。 区别 Comparable示例 让被排序的类实现 Comparable 接口&#xff0c;重写 compareTo() 方法。 import java.util.*;public class Main {public static void main(String[] args){TreeSet<…

端点安全时刻影响着网络安全,我们应该如何保护

端点&#xff08;Endpoint&#xff09;是网络通信中的一个重要概念&#xff0c;指的是网络通信中的发送或接收信息的设备或节点。在一个网络中&#xff0c;端点可以是硬件设备&#xff08;如计算机、服务器、手机、路由器等&#xff09;&#xff0c;也可以是软件应用或服务。端…

PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出)

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 PSO-BP和BP多输入多输出回归预测模型 matlab (多输入多输出) 订阅专栏只能获取一份代码 部分源码 %------

ceph osd分组

一、前言 使用分组可以更好的管理osd&#xff0c;将不同类型的磁盘&#xff0c;分到不同的组中&#xff0c;例如hhd类型的osd分配到hhd组&#xff0c;ssd类型的osd分配到ssd组&#xff0c;将io要求不高的分配到hhd组做存储&#xff0c;io要求高的分配到ssd组做存储 二、配置 查…

Linux驱动开发笔记(一)字符驱动

文章目录 前言一、字符设备驱动程序框架二、基本原理1. 设备号的申请与归还2. 保存file_operations接口3. 设备节点的创建和销毁4. 创建文件设备4.1 mknod4.2 init_special_incode( )函数 5. 查找file_operation接口函数速查表 三、程序编写1. 模块初始化及关闭2. 文件操作方式…

墨子web3时事周报

蚂蚁集团Web3研发进展与布局 国内Web3赛道的领军企业——蚂蚁集团&#xff0c;凭借其在前沿科技领域的深耕不辍&#xff0c;已在Web3技术研发疆域缔造了卓越战绩。特别是在引领行业革新的关键时刻&#xff0c;集团于今年四月末震撼推出了颠覆性的Web3全套解决方案&#xff0c…

【Godot4自学手册】第三十八节给游戏添加音效

今天&#xff0c;我的主要任务就是给游戏添加音效。在添加音效前&#xff0c;我们需要了解一个东西&#xff1a;音频总线。这个东西或许有些枯燥&#xff0c;如果你只为添加一个音效没必要了解太多&#xff0c;但如果你以后将要经常与音频播放打交道&#xff0c;还是要了解一下…

ARM学习(26)链接库的依赖查看

笔者今天来聊一下查看链接库的依赖。 通常情况下&#xff0c;运行一个可执行文件的时候&#xff0c;可能会出现找不到依赖库的情况&#xff0c;比如图下这种情况&#xff0c;可以看到是缺少了license.dll或者libtest.so&#xff0c;所以无法运行。怎么知道它到底缺少什么dll呢&…

论婚恋相亲交友软件的市场前景和开发方案H5小程序APP源码

随着移动互联网的快速发展和社交需求的日益增长&#xff0c;婚恋相亲交友软件小程序成为了越来越多单身人士的选择。本文将从市场前景、使用人群、盈利模式以及竞品分析等多个角度&#xff0c;综合论述这一领域的现状与发展趋势。 一、市场前景 在快节奏的现代生活中&#xf…

矩阵混乱度(熵值)代码计算

1、先回顾下熵值的数据公式&#xff1a; 2、jax.numpy代码 注意的点&#xff1a;熵值计算的输入的必须是归一化的正值 import jax.numpy as jnp import jax def _entroy(probs):log_probs jnp.log2(jnp.maximum(1.0e-30, probs))mean_sum_plogp jnp.mean(- jnp.sum(log_pro…

面试题:Redis如何防止缓存穿透 + 布隆过滤器原理

题目来源 招银网络-技术-1面 题目描述 缓存穿透是什么&#xff1f;如何防止缓存穿透布隆过滤器的原理是什么&#xff1f; 我的回答 缓存穿透是什么&#xff1f; 攻击者大量请求缓存和数据库中都不存在的key。如何防止缓存穿透 可以使用布隆过滤器布隆过滤器的原理是什么&a…

mysql数据库连接工具(mysql数据库连接工具怎么备份数据不备份表结构)

MySQLWorkbench连接,导入和导出数据库? 1、导出&#xff1a;使用MySQL Workbench连接到MySQL服务器&#xff0c;选择要导出的数据库&#xff0c;右键单击数据库并选择“导出”。选择要导出的表和数据&#xff0c;将导出文件保存为.sql文件。 2、打开MySQL Workbench&#xf…
最新文章