SQL知识点合集3

一、创建视图

create view 视图名 as select * from 表名 where 条件

二、触发器

触发器是与表有关的数据库对象,在 insert/update/delete 之前或之后触发并执行触发器中定义的 SQL语句,

有三种触发器类型。

  • 1.insert触发器
  • 2.update触发器
  • 3.delete触发器

三、主键约束和外键约束

假设有两个表:StudentsEnrollments。我们希望在Enrollments表中添加一个外键约束,使其StudentID列引用Students表中的StudentID列。

外键约束:

创建示例表

首先,创建这两个示例表:

CREATE TABLE Students (StudentID INT NOT NULL,Name VARCHAR(50),Age INT,PRIMARY KEY (StudentID)
);CREATE TABLE Enrollments (EnrollmentID INT NOT NULL,StudentID INT,CourseID INT,PRIMARY KEY (EnrollmentID)
);

添加外键约束

现在,我们在Enrollments表中添加一个外键约束,使其StudentID列引用Students表中的StudentID列:

ALTER TABLE Enrollments
ADD CONSTRAINT fk_student
FOREIGN KEY (StudentID) REFERENCES Students(StudentID);

主键约束:

假设我们有以下初始表结构:

CREATE TABLE Students (StudentID INT NOT NULL,Name VARCHAR(50),Age INT
);CREATE TABLE Enrollments (EnrollmentID INT NOT NULL,StudentID INT,CourseID INT
);

我们希望将StudentID设置为Students表的主键,并将EnrollmentID设置为Enrollments表的主键。

-- 添加主键约束到 Students 表
ALTER TABLE Students
ADD PRIMARY KEY (StudentID);-- 添加主键约束到 Enrollments 表
ALTER TABLE Enrollments
ADD PRIMARY KEY (EnrollmentID);

注意事项

  • 列不能为空:主键列必须设置为NOT NULL,因为主键列不允许NULL值。
  • 唯一性:主键列的值必须唯一,以确保每一行记录有唯一标识。

 四、删除表

1. drop是完全删除表,包括表结构

2. delete是删除表数据,保留表的结构,而且可以加where,只删除一行或者多行

3. truncate 只能删除表数据,会保留表结构,而且不能加where
 

五、count()函数

使用count(*)对表中行的数目进行计数,不管表列中包含的是空值(null)还是非空值;

使用count(column)对特定列中具有值得行进行计数,忽略null值。

六、索引

1.可通过索引快速查找数据,减少查询执行时间。

2.数据库索引采用B+树是因为B+树在提高了磁盘IO性能的同时解决了元素遍历效率低下的问题

3.如果WHERE子句中使用的索引包含了ORDER BY中的列,因为索引本身会对列进行排序,所以ORDER BY中不需要再次使用索引排序;如果WHERE子句中使用的索引没有包含ORDER BY中的列,则ORDER BY中的列无法使用索引,因为一个查询只能选择一个索引,这时候排序就进行了filesort,非常费时。综上所述,当WHERE中使用了索引,ORDER BY中不会使用索引。
4.索引会提高查询速度 但不会提高更新表的速度。

七、NULL

CREATE TABLE students (id INT,name VARCHAR(50)
);INSERT INTO students (id, name) VALUES
(1, '张三'),
(2, '李四'),
(3, '王五'),
(4, NULL),
(5, '赵六');

使用<>运算符来选择所有不等于某个特定值的行。例如,以下查询将选择所有name列的值不等于'张三'的行:

SELECT * FROM students
WHERE name <> '张三';

选择所有name列的值不等于'张三'或name列值为空(NULL)的行:

SELECT * FROM students
WHERE name <> '张三' OR name IS NULL;

八、数据库

MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网中,最常见的数据库模型主要是两种,即SQL关系型数据库和NoSQL非关系型数据库。

关系型数据库的代表包括Oracle, Sql Server, Mysql

层次型数据库管理系统是紧随网状数据库而出现的。现实世界中很多事物是按层次组织起来的。层次数据模型的提出,首先是为了模拟这种按层次组织起来的事物。

最著名最典型的层次数据库系统是IBM公司的IMS(Information Management System)

九、数据库授权命令grant...to

GRANT<权限> on 表名(或列名) to 用户

十、count(distinct ...)

count(distinct ...) 是 SQL 中用于计算某列中不重复值的数量的函数。它会返回指定列中所有不同值的个数。例如,如果某列中有重复的值,这些值只会被计数一次。

示例:Mysql中表student_table(id,name,birth,sex),id字段值可能重复,分别查询男生、女生的不重复id总数。

select
count(distinct case when sex='男' then id else null end) as man_ids,
count(distinct case when sex='女' then id else null end) as women_ids
from student_table;

case when sex='男' then id else null end 会在 sex'男' 时返回 id,否则返回 null,然后 count(distinct ...) 会计算这些返回值中的不重复 id 的数量。同样地,case when sex='女' then id else null end 会在 sex'女' 时返回 id,然后 count(distinct ...) 计算不重复 id 的数量。

十一、STUFF 函数

STUFF 函数在 SQL 中用于删除指定长度的字符并将新的子字符串插入到指定位置。

STUFF(string, start, length, new_string)
  • string 是原始字符串。
  • start 是开始位置(从 1 开始)。
  • length 是要删除的字符数。
  • new_string 是要插入的字符串。

示例:select stuff('lo ina', 3, 1, 've ch')

  • string'lo ina'
  • start3,表示从第三个字符开始。
  • length1,表示删除一个字符。
  • new_string've ch',表示插入的新字符串。

执行操作如下:

  1. 从第三个字符(即 o)开始删除 1 个字符:'lo ina' 变为 'loina'
  2. 在第三个字符位置插入 've ch':结果为 'love china'

 

十二、ORDER BY

order by默认使用升序排序,即asc。

十三、delete、truncate

1:处理效率:drop>trustcate>delete

2:删除范围:drop删除整个表(结构和数据一起删除);trustcate删除全部记录,但不删除表结构,这意味着表的定义、索引等都会被保留;delete只删除数据

3:高水位线:delete不影响自增ID值,高水线保持原位置不动,高水位标记是表的物理存储特性,自增 ID 通常不会因为删除操作而复用被删除的 ID;trustcate会将高水线复位,自增ID变为1。

因为 TRUNCATE 是一个 DDL(数据定义语言)操作,它通过重新初始化表而不是逐行删除数据来清空表,这使得它比 DELETE(逐行删除)更高效。

十四、SUN 和 COUNT

SUM 用于计算一列数值的总和。它只能用于数值列,计算该列中所有数值的总和。

COUNT 用于计算行的数量。COUNT(column_name) 也会忽略 NULL 值,而 COUNT(*) 会包括所有行,不论列是否为 NULL

十五、常见的 JOIN 类型

  • INNER JOIN:只返回两个表中满足连接条件的行。
  • LEFT JOIN(或 LEFT OUTER JOIN):返回左表中的所有行,即使右表中没有匹配的行,也会返回这些行,并用 NULL 填充右表中的列。
  • RIGHT JOIN(或 RIGHT OUTER JOIN):返回右表中的所有行,即使左表中没有匹配的行,也会返回这些行,并用 NULL 填充左表中的列。
  • FULL JOIN(或 FULL OUTER JOIN):返回两个表中的所有行,当没有匹配时,用 NULL 填充缺失的部分。

 

 INNER JOIN 示例

SELECT students.name, courses.course_name
FROM students
INNER JOIN courses ON students.student_id = courses.student_id;

LEFT JOIN 示例

SELECT students.name, courses.course_name
FROM students
LEFT JOIN courses ON students.student_id = courses.student_id;
  • 左表是 FROM 之后的表,在 LEFT JOIN 之前。
  • 右表是 LEFT JOIN 之后的表。
  • 结果集包括左表的所有行,右表中没有匹配的行会显示 NULL

 

 RIGHT JOIN 示例

SELECT students.name, courses.course_name
FROM students
RIGHT JOIN courses ON students.student_id = courses.student_id;
  • 左表是 FROM 之后的表,在 RIGHT JOIN 之前。
  • 右表是 RIGHT JOIN 之后的表。
  • 结果集包括右表的所有行,左表中没有匹配的行会显示 NULL

 

十六、 数据库备份类型

  • 完整数据库备份 (Full Backup)

    • 备份整个数据库,包括所有的数据和对象。
    • 它是一个数据库的完整副本,可以用来恢复数据库到备份时的状态。
  • 差异数据库备份 (Differential Backup)

    • 仅备份自最近一次完整数据库备份以来发生改变的数据。
    • 每次差异备份都会包含从上次完整备份以来的所有变化。
    • 优点是比完整备份小且恢复速度快,但需要依赖最近一次完整备份。
  • 事务日志备份 (Transaction Log Backup)

    • 备份自上次事务日志备份以来所有的事务日志记录。
    • 用于在灾难恢复时恢复到某个特定的时间点。
    • 可以在不进行完整备份的情况下连续进行。
  • 文件和文件组备份 (File and Filegroup Backup)

    • 备份数据库中的一个或多个文件或文件组。
    • 适用于大型数据库,可以逐个文件或文件组进行备份和恢复,节省时间和空间。

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

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

相关文章

WebRTC音视频-环境搭建

目录 期望效果 1:虚拟机和系统安装 2:WebRTC客户端环境搭建 2.1&#xff1a;VScode安装 2.2&#xff1a;MobaXterm安装 3:WebRTC服务器环境搭建 3.1&#xff1a;安装openssh服务器 3.2&#xff1a;安装Node.js 3.3&#xff1a;coturn穿透和转发服务器 3.3.1&a…

数据容易泄露,有什么软件可以加密吗

1. 金刚钻信息网站 特点&#xff1a;以其独特的透明加密技术和强大的权限管控功能著称&#xff0c;支持多种加密算法&#xff08;如AES、RSA&#xff09;&#xff0c;提供详细的审计日志&#xff0c;记录所有加密文件的访问、修改和删除操作。适用于企业用户&#xff0c;可以有…

C++仓库管理系统

功能 代码在效果图后面 1.添加物品 2.删除物品 3.更新物品数量 4.查询物品 5.列出所有物品 6.保存并退出 注意事项&#xff1a;退出要输入“6”退出才能保存数据&#xff0c;不要直接按X关掉窗口&#xff08;不会保存数据&#xff09;。 效果图 源代码 编…

七款好用的CAD图纸加密软件推荐|2024最新排行榜

在2024年的今天&#xff0c;随着数字化转型的深化&#xff0c;企业对保护知识产权和商业机密的需求愈发迫切。特别是在依赖计算机辅助设计&#xff08;CAD&#xff09;的行业中&#xff0c;图纸加密软件成为了关键的工具&#xff0c;用于维护设计图纸的安全。以下是根据市场反馈…

<数据集>蛋壳裂缝检测数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2520张 标注数量(xml文件个数)&#xff1a;2520 标注数量(txt文件个数)&#xff1a;2520 标注类别数&#xff1a;2 标注类别名称&#xff1a;[crack, egg] 序号类别名称图片数框数1crack245128352egg25142514 使…

RHCSA —— 第七节 (文件、 目录)

FHS FHS --- filesystem hirearchy standard 文件系统层级标准&#xff0c;定义了在类Unix系统中的目录结构和目录内容&#xff0c;即用户知道已安装的软件放在哪个目录下 Linux 目录结构的特点 1.使用树形目录结构来组织和管理结构 2.整个系统只有一个根目录&#xff08;…

卸载linux 磁盘的内容,磁盘占满

Linux清理磁盘 https://www.cnblogs.com/siyunianhua/p/17981758 当前文件夹下&#xff0c;数量 ls -l | grep "^-" | wc -l ls -lR | grep "^-" | wc -l 找超过100M的大文件 find / -type f -size 100M -exec ls -lh {} \; df -Th /var/lib/docker 查找…

记录vivado自带IP iBert眼图近端回环

记录利用vivado自带IP核工具测试信号质量 ibert是测试眼图的工具&#xff0c;在使用的时候并不用改太多的内容&#xff0c;只需要注意参考时钟及所需要的引脚即可。由于条件的限制&#xff0c;并没有使用光纤和电缆进行连接进行外部回环&#xff0c;仅使用内部回环做测试&…

P4-AI产品经理-九五小庞

从0开始做AI产品的完整工作方法 项目启动 项目实施 样本测试模型推荐引擎 构建DMP&#xff08;数据管理平台&#xff09; 项目上线

用户体验优化的关键:掌握原型设计思路提升产品质量

原型设计是产品的缩影。在产品推出之前&#xff0c;原型设计承载着UI设计和交互测试的大部分工作&#xff0c;可以帮助产品经理和UX设计师以最低的成本测试产品的逻辑框架、交互体验、创造性表达等&#xff0c;这不仅节省了时间和成本&#xff0c;而且缩短了各部门之间的沟通成…

[PM]产品运营

生命周期 运营阶段 主要工作 拉新 新用户的定义 冷启动 拉新方式 促活 用户活跃的原因 量化活跃度 运营社区化/内容化 留存 用户流失 培养用户习惯 用户挽回 变现 变现方式 付费模式 广告模式 数据变现 变现指标 传播 营销 认识营销 电商营销中心 拼团活动 1.需求整理 2.…

独立游戏《星尘异变》UE5 C++程序开发日志5——实现物流系统

目录 一、进出口清单 二、路径计算 三、包裹 1.包裹的数据结构 2.包裹在场景中的运动 四、道路 1.道路的数据结构 2.道路的建造 3.道路的销毁 4.某个有道路连接的建筑被删除 作为一个工厂类模拟经营游戏&#xff0c;各个工厂之间的运输必不可少&#xff0c;本游戏采用的…

Apache SeaTunnel——OLAP 引擎的数据动脉

导读本文将分享如何利用 Apache SeaTunnel 将各个业务系统的数据同步到 OLAP 引擎。 主要内容包括以下六大部分&#xff1a; 1. Apache SeaTunnel 项目介绍 2. Apache SeaTunnel 核心功能 3.SeaTunnel 在 OLAP 场景下的应用 4. 社区近期计划 5. WhaleTunnel 产品特性 6. …

《Winodws API每日一练》11.3 工具栏控件

本节将讲述工具栏控件的创建和使用。 本节必须掌握的知识点&#xff1a; 工具栏控件 第72练&#xff1a;工具栏控件 11.3.1 工具栏控件 工具栏控件&#xff08;Toolbar Control&#xff09;是Windows操作系统提供的一种用户界面元素&#xff0c;用于显示常用的命令按钮、工具…

PostgreSQL创建表和自增序列

一、创建表&#xff1a; 注意&#xff1a; 1、在mysql没有序列的概念&#xff0c;id自增通过auto_increment实现&#xff1b; 2、pgsql没有auto_increment的概念&#xff0c;如何实现id自增&#xff1f;有两种方式&#xff1a; 方式一&#xff1a;创建序列&#xff0c;绑定…

MYSQL调优详解:案例解析(第40天)

系列文章目录 一、数据库设计优化 二、查询优化 三、架构优化 四、其他优化策略 五、优化案例解析 文章目录 系列文章目录前言一、数据库设计优化二、查询优化三、架构优化四、其他优化策略五、优化案例解析案例一&#xff1a;优化SELECT查询案例二&#xff1a;使用索引案例三…

springboot系列十: 自定义转换器,处理JSON,内容协商

文章目录 自定义转换器基本介绍应用实例查看源码注意事项和细节 处理JSON需求说明应用实例 内容协商基本介绍应用实例debug源码优先返回xml注意事项和细节 ⬅️ 上一篇: springboot系列九: 接收参数相关注解 &#x1f389; 欢迎来到 springboot系列十: 自定义转换器&#xff0c…

ELK日志收集

一、什么是ELK ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体&#xff0c;ELK 是 elastic 公司研发的一套完整的日志收集、分析和展示的企业级解决方案。 ELK 的好处&#xff1a; ELK 组件在大数据运维系统中&#xff0c;主要可解决的问题如下&…

MDK5没有DeviceName

遇到的问题是Jlink驱动问题 不是引脚接反 使用国产GD单片机不同的工程&#xff0c;有的有Device Name,有的没有Device Name&#xff08;下图是弄好的情况&#xff0c;有Device Name&#xff09; 硬件链接&#xff0c;和设备都没有问题&#xff1a;无法仿真&#xff0c;无法下…

ARM体系结构和接口技术(四)LED灯实验---②

文章目录 一、特殊功能控制寄存器&#xff08;一&#xff09;GPIOx_MODER寄存器&#xff08;二&#xff09;GPIOx_OTYPER寄存器&#xff08;三&#xff09;GPIOx_OSPEEDR寄存器&#xff08;四&#xff09;GPIOx_PUPDR寄存器&#xff08;五&#xff09;GPIOx_IDR寄存器&#xff…