当前位置: 首页 > news >正文

设计数据库之内部模式:SQL基本操作

Chapter4:设计数据库之内部模式:SQL基本操作

笔记来源:
1.《漫画数据库》—科学出版社
2.SQL | DDL, DQL, DML, DCL and TCL Commands

设计数据库的步骤:
概念模式

概念模式(conceptual schema)是指将现实世界模型化的阶段进而,是确定数据库理论结构的阶段。
概念模式的设计是通过E-R模型把握现实世界,进而规范化表格来实现的。

内部模式

内部模式是从计算机内部看到的数据库,是确定数据库物理构造的阶段。
内部模式的设计通过设计数据库高速检索方法来实现。

外部模式

外部模式是从用户和应用的角度来观察的数据库。
外部模式的设计是通过设计应用程序所必要的数据来实现的。

我们使用SQL能干什么?

使用数据库必须将数据录入并调取必要数据,因此我们要学习SQL,我们使用该语言与数据库进行对话

SQL命令分类
这些命令有些用于数据库本身,有些数据库中的对象,有些二者皆可(例如CREATE既可用于创建数据库又可用于创建表)

数据定义语言(DDL:Data Definition Language)
CREATE:该命令用于创建数据库或其对象(如表、索引、函数、视图、存储过程和触发器)。
DROP:该命令用于删除数据库中的对象。
ALTER:用于修改数据库的结构。
TRUNCATE:用于从表中删除所有记录,包括为这些记录分配的所有空间。
COMMENT:用于向数据字典中添加注释。
RENAME:用于重命名数据库中存在的对象。

数据查询语言(DQL:Data Query Language)
SELECT:用于从数据库中检索数据。

数据操作语言(DML:Data Manipulation Language)
INSERT:用于向表中插入数据。
UPDATE:用于更新表中的现有数据。
DELETE:用于删除数据库表中的记录。
LOCK:表控制并发性。
CALL:调用PL/SQL或JAVA子程序。
EXPLAIN PLAN:描述数据的访问路径。

数据控制语言(DCL:Data Control Language)
GRANT:这个命令赋予用户访问数据库的权限。
REVOKE:该命令撤销使用GRANT命令赋予用户的访问权限。

事务控制语言(TCL:Transaction Control Language)
BEGIN:打开一个事务。
COMMIT:提交事务。
ROLLBACK:在发生任何错误时回滚事务。
SAVEPOINT:在事务中设置保存点。

具体用法查询入口:SQL Tutorial

5.1 Create Database in SQL(关于数据库)

关于数据库的创建、选择、重命名、删除的操作

SQL CREATE DATABASE Statement(创建数据库语句)

CREATE DATABASE database_name;

SQL Drop Database(删除数据库)

DROP DATABASE database_name;

SQL Rename Database(重命名数据库)

Rename database

SQL Select database(选择数据库)

USE DATABASE_NAME;

5.2 Tables in SQL(关于表)

关于表的创建、删除、重命名、清空的操作

SQL CREATE TABLE(创建表)

CREATE TABLE table_name

SQL Drop Table Statement(删除表语句)

DROP TABLE table_name;

SQL DELETE Statement(删除语句)

DELETE FROM table_name WHERE some_condition;
注:Some_condition: condition to choose a particular record.(记录,即一行)

ALTER(RENAME) in SQL(重命名)

ALTER TABLE table_name RENAME COLUMN old_name TO new_name;
注:仅在MySQL, Oracle中适用

DROP and TRUNCATE in SQL(删除和清空表)

DROP TABLE table_name;
TRUNCATE TABLE table_name;

SQL Query to Copy,Duplicate or Backup Table(复制备份表)
通过备份表来追踪数据变换

选择几列来备份
CREATE TABLE Table_Name AS SELECT col_1, col_2, … FROM Source_Table_Name;
Table_Name: The name of the backup table.
AS: Aliasing
col: Required columns from source table

SQL ALTER TABLE-ADD,DROP,MODIFY(添加、删除、修改表)

添加一个记录(一行)
ALTER TABLE table_name ADD (Columnname_1 datatype,Columnname_2 datatype, …Columnname_n datatype);

5.3 SQL Queries(查询)

SQL中的查询语句用于从数据库中检索或获取数据。

SQL SELECT Query(选择查询)
SOL-TOP,LIMIT,FETCH FIRST Clause(限制查询返回的行数)
SQL-SELECT FIRST(只选择第一行)
SQL-SELECT LAST(只选择最后一行)
SQL-SELECT RANDOM(返回任意一行)
SQL-SELECT IN(返回与列表或子查询(嵌套查询)中的值匹配的值)
SQL-SELECT DATE(从与日期相关的表中获取数据)
SQL Query to Insert Multiple Rows(插入多行)
SQL INSERT INTO Statement(插入)
SQL UPDATE Statement(更新)
SQL DELETE Statement(删除)
SQL Query to Delete Duplicate Rows(删除重复行)

5.4 SQL Clauses(条件)

SQL CLAUSE通过为 SQL 查询提供条件来帮助限制结果集。 CLAUSE有助于从整个记录集中过滤行。

SQL WHERE Clause(根据特定条件获取数据)
SQL WITH clause(给子查询块一个名称)
SQL HAVING Clause (基于聚合函数和分组的查询结果过滤)
ORDER BY in SQL(对获取的数据进行排序)
SQL GROUP BY(在一些函数的帮助下,将相同的数据分组)
SQL LIMIT Clause(若有大量元组满足查询条件,一次只查看少数元组)

5.5 SQL Operators(操作符)

提供算术运算符、比较运算符、逻辑运算符、位运算符

算术运算符可对表中数据进行运算
比较运算符可以判断表中的哪些记录是符合条件的。
逻辑运算符用来判断表达式的真假。
位运算符是在二进制数上进行计算的运算符。位运算会先将操作数变成二进制数,进行位运算。然后再将计算结果从二进制数变回十进制数。

SQL IN Operator(基于特定值的列表筛选数据)
SQL NOT Operator(查询时排除)
SQL NOT EQUAL Operator(检查两个表达式是否不同/不相等)
SQL IS NULL Operator(检查列中缺省值)
SQL UNION Operator(查找结果集或两个或多个表的组合)
SQL UNION ALL(合并两个或多个SELECT语句的结果)
SQL Except Clause(第一个SELECT操作返回,而第二个SELECT操作不返回)
SQL Between(测试表达式是否在值范围内)
SQL ALL and ANY(选择select语句的所有元组)
SQL INTERSECT Clause(只返回两个SELECT语句共有的行)
SQL EXISTS(检查相关嵌套查询的结果是否为空(不包含元组))
SQL CASE Statement(根据不同的条件有条件地赋值)

5.6 SQL Aggregate Functions(聚合函数)

聚合函数就是将一组数据进行统一计算

COUNT() 符合指定条件的行数
AVG() 数值列的平均值
SUM()返回所有或不同值的总和
MIN()返回所选列的最小值
MAX()返回所选列的最大值

5.7 SQL Data Constraints(数据约束)

数据约束是用来为表中的某一列或多列设置规则的,以确保数据的完整性和准确性。这些规则确保了数据的一致性、有效性和可靠性。如果尝试插入、更新或删除违反这些规则的数据,数据库系统将抛出错误并拒绝执行这些操作。

SQL NOT NULL Constraint(强制特定的值或记录不应该保留空值)
SQL UNIQUE Constraint(检查子查询的结果中是否有重复的元组)
Primary key constraint in SQL(唯一标识表中的每条记录)
Foreign Key constraint in SQL(防止会破坏表间链接的操作)
Composite Key in SQL(多个主键称为组合键)
SQL-ALTERNATE KEY(候选键)
SQL CHECK Constraint(限制了列在关系中可以包含的值)
SQL DEFAULT Constraint(用默认值和固定值填充列)

5.8 SQL Joining Data(连接数据)

将两个或多个表连接到一个表中

以相同意义的列为媒介,连接成表格,称作同等连接(equi join)
我们称将重复的列整合成一列的连接叫做自然连接(natural join)

仅选择数值相同的行进行连接,我们称之为内部连接(inner join)
全部保留任何一方表格的所有行,将一方中没有的行设置为空值的连接方法称为外部连接(outer join)
两个表格在SQL命令中分左右时,根据保留全部表格行的情况,分为左外部连接(left outer join)和右外部连接(right outer join)

内部连接:两张表取交集
外部连接:表A与表B的并集
右外部连接:表B+表A与B共有部分
左外部连接:表A+表A与B共有部分


SQL Outer Join(左外部连接+右外部连接+全外部连接)
SQL Left Join(左外部连接)
SQL Right Join(右外部连接)
SQL FULL JOIN(全外部连接)

SQL CROSS JOIN(笛卡尔连接)

SQL Self Join(两张表结构和数据内容完全一样的表,在做数据处理的时候,我们通常会给它们分别重命名来加以区分,然后进行关联)
SQL UPDATE with JOIN(使用另一个表和连接条件更新一个表)
SQL DELETE JOIN(允许基于涉及另一个表的条件删除表的行)
Recursive Join in SQL(允许我们查询分层数据)

5.9 SQL Functions(函数)

函数提供许多常用功能

SQL Date functions(NOW() 返回当前日期和时间 )
SQL String functions(对输入字符串执行操作并返回输出字符串)
SQL Numeric Functions(对数字进行操作并返回数字)
SQL-Statistical Functions(对数字数据进行统计计算)
Working With JSON in SQL(存储和传输数据)
Conversion Function in SQL(当您定义表达式和局部变量时,您应该指定将在这些对象中存储什么类型的数据)
SQL Data Types(数据类型)
SQL LTRIM()Function(一个字符串函数,用于从字符串或字符串表达式的左侧删除前导空格)
SQL RTRIM()Function(从字符或字符串右侧删除空格的字符串函数)
SQL UPPER()Function(将表中的所有字符串转换为大写的字符串函数)

5.10 SQL Views(视图)

当用户对数据库中的一张或者多张表的某些字段的组合感兴趣,而又不想每次键入这些查询时,用户就可以定义一个视图,以便解决这个问题。视图中列可以来自于表里的不同列,这些列都是用户所感兴趣的数据列

视图与表不同,它在物理上不是真实存在的,而是一个虚表。
在数据库里仅存放视图的定义,而不存放视图对应的数据。
视图中的这些数据存放在其对应的表中,如果表中的数据发生了变化,从视图中查询出的数据也会随之发生改变。从这个意义来看,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。—引自:数据库中的视图有什么用,我们为什么要用视图?

CREATE VIEW view_name AS
SELECT column1, column2…
FROM table_name
WHERE condition;
备注:view_name: Name for the View
table_name: Name of the table
condition: Condition to select rows

5.11 SQL Indexes(索引)

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。
更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。—引自:sql数据库中什么情况该加索引index?

SQL CREATE INDEX Statement(创建索引)
SQL DROP INDEX Statement(删除索引)
Difference Between Clustered and Non-Clustered Index(聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。 这些键值是索引定义中包含的列。 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。 如果表具有聚集索引,则该表称为聚集表。 如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中)

相关文章:

设计数据库之内部模式:SQL基本操作

Chapter4:设计数据库之内部模式:SQL基本操作 笔记来源: 1.《漫画数据库》—科学出版社 2.SQL | DDL, DQL, DML, DCL and TCL Commands 设计数据库的步骤: 概念模式 概念模式(conceptual schema)是指将现实世界模型化的阶段进而&…...

Git浅谈配置文件和免密登录

一、文章内容 简述git三种配置ssh免密登录以及遇见的问题git可忽略文件git remote 相关操作 二、Git三种配置 项目配置文件(局部):项目路径/.git/config 文件 git config --local user.name name git config --local user.email 123qq.cc全局配置文(所有用户): …...

【好玩的经典游戏】Docker环境下部署RPG网页小游戏

【好玩的经典游戏】Docker环境下部署RPG网页小游戏 一、react-tetris小游戏介绍1.1 react-tetris小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose…...

前端逻辑错误或UI崩溃解决问题

全屏错误覆盖层或UI崩溃 VueReact(错误边界) Vue Vue的全屏错误覆盖层解决,其实只需要配置Error就好,在开发服务器的client.overlay中设置关闭全屏覆盖层 module.exports {devServer: {client: {overlay: {warnings: false,error…...

python爬取QQ音乐评论信息

python爬取QQ音乐评论信息 python爬取QQ音乐评论信息1.随便选个音乐python爬取QQ音乐评论信息 1.随便选个音乐 https://y.qq.com/n/yqq/song/0039MnYb0qxYhV.html 当前的后台调试页面显示如下: 找到评论的数据接口: https://c.y.qq.com/base/fcgi-bin/fcg_global_comme…...

Unity构建详解(1)——SBP介绍

【前言】 Unity的资源工作流程分为导入、创建、构建、分发、加载。我们说的是其中的构建步骤。 构建是指将项目工程中的资源文件和代码整合程可执行文件的过程,构建的结果是生成可执行文件,在win平台上是exe,在Android平台上是apk&#xff…...

贪心算法(算法竞赛、蓝桥杯)--奶牛晒衣服

1、B站视频链接&#xff1a;A28 贪心算法 P1843 奶牛晒衣服_哔哩哔哩_bilibili 题目链接&#xff1a;奶牛晒衣服 - 洛谷 #include <bits/stdc.h> using namespace std; priority_queue<int> q;//用大根堆维护湿度的最大值 int n,a,b; int tim,maxn;int main(){s…...

Redis列表:高效消息通信与实时数据处理的利器

Redis是一个强大的开源内存数据库&#xff0c;被广泛应用于缓存、会话存储、队列等各种场景中。在Redis中&#xff0c;列表&#xff08;List&#xff09;是一种非常重要的数据结构&#xff0c;它提供了存储、获取、操作有序元素集合的功能。本文将深入探讨Redis列表的特性、使用…...

Redis中的缓存雪崩

缓存雪崩 &#x1f914;现象分析 缓存雪崩是指在同一时段大量的缓存key同时失效或者缓存服务(Redis等)宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 &#x1f44a; 解决方案 利用Redis集群提高服务的可用性&#xff0c;避免缓存服务宕机给缓存业务添…...

使用远程工具连接Mysql

&#xff08;若想要远程连接Mysql需要下面解决四个问题&#xff09; 1、目标地址 直接查询 2、端口号 3306 3、防火墙关闭 [rootlocalhost date]# systemctl stop firewalld.service 4、授权mysql数据库root用户权限&#xff08;因为mysql开始不允许其他IP访问&#xff0…...

2024不起眼的“致富”野路子,不想打工了,做做这些暴利创业项目。2024个人创业做什么项目好;最适合白手起家的创业项目

经济大环境差&#xff0c;并不代表就没有机会。相反&#xff0c;主流经济不好正是另一些人所看重的千载难逢的机会。就像股票市场一样&#xff0c;有人靠做多赚钱&#xff0c;有人靠做空赚钱。下面我们就来分析一下哪些行业会在这个时候崛起。 首先二手行业会迅速崛起&#xff…...

从后端获取文件数据并导出

导出文件的公共方法 export const download (res, tools) > {const { message, hide } tools;const fileReader: any new FileReader();console.log(fileReader-res>>>, res);fileReader.onload (e) > {if (res?.data?.type application/json) {try {co…...

哲♂学家带你深♂入了♂解结构体及结构体内存大小问题

目录 概要 一、结构体的声明 二、结构体变量的创建和初始化 三、结构体的特殊声明 四、结构体内存对齐 1、对齐原则 2、例一 对齐数 计算方法 3、例二 总结 概要 结构体是我们日常编程中经常要用到的一种自定义类型&#xff0c;使用起来也是十分的方便。接下来就由…...

基于SSM的土家风景文化管理平台(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的土家风景文化管理平台&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spri…...

2024年03月CCF-GESP编程能力等级认证C++编程一级真题解析

本文收录于专栏《C++等级认证CCF-GESP真题解析》,专栏总目录:点这里。订阅后可阅读专栏内所有文章。 一、单选题(每题 2 分,共 30 分) 第 1 题 C++表达式 (3 - 2) * 3 + 5 的值是( )。 A. -13 B. 8 C. 2 D. 0 答案:B 第 2 题 C++语句 cout << “5%2=” <&l…...

[Linux]条件变量:实现线程同步(什么是条件变量、为什么需要条件变量,怎么使用条件变量(接口)、例子,代码演示(生产者消费者模式))

目录 一、条件变量 1.什么是条件变量 故事说明 2、为什么需要使用条件变量 竞态条件 3.什么是同步 饥饿问题 二、条件变量的接口 1.pthread_cond_t 2.初始化&#xff08;pthread_cond_init&#xff09; 3.销毁&#xff08;pthread_cond_destroy&#xff09; 4.等待&…...

从Java到json:探索 Jackson 的魔力

引言 Jackson简介 Jackson是一个用于处理JSON数据的开源Java库。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,同时也易于计算机解析和生成。在Java领域,Jackson已经成为处理JSON数据的事实标准库。它提供了丰富的功能,包括将Java对象转…...

Docker之docker compose!!!!

一、概述 是 Docker 官方提供的一款开源工具&#xff0c;主要用于简化在单个主机上定义和运行多容器 Docker 应用的过程。它的核心作用是容器编排&#xff0c;使得开发者能够在一个统一的环境中以声明式的方式管理多容器应用的服务及其依赖关系。 也就是说Docker Compose是一个…...

shardingsphere+达梦+jpa项目改造适配中遇到的一些问题与解决

问题一&#xff1a;shardingsphere.dialect.exception.syntax.database.UnknownDatabaseException 解决&#xff1a; jdbcTemplate 类注入有问题&#xff0c;如&#xff1a; 1&#xff09;如果使用Resource注解引入该类时&#xff0c;变量名需要与初始化时Bean修饰的方法名相…...

YOLOV9训练自己的数据集

1.代码下载地址GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 2.准备自己的数据集 这里数据集我以SAR数据集为例 具体的下载链接如下所示&#xff1a; 链接&#xff1a;https:/…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...