设计数据库之内部模式: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(聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。 这些键值是索引定义中包含的列。 每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。 只有当表包含聚集索引时,表中的数据行才按排序顺序存储。 如果表具有聚集索引,则该表称为聚集表。 如果表没有聚集索引,则其数据行存储在一个称为堆的无序结构中)

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

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

相关文章

【网站项目】295商业辅助决策系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

opencv 傅里叶变换(低通滤波 + 高通滤波)

文章目录 1、傅里叶变换2、通过numpy实现3、高通滤波器5、通过opencv实现傅里叶变换6、低通滤波器7、C实现傅里叶变换 1、傅里叶变换 时域分析:以时间作为参照物,世间万物都是随着时间变化而变化,并且不会停止 频域分析:认为世间万…

使用PDFBox调整PDF每页格式

目录 一、内容没有图片 二、内容有图片 maven依赖&#xff0c;这里使用的是pdfbox的2.0.30版本 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version></dependency>…

【Android】【Bluetooth Stack】蓝牙电话协议分析(超详细)

1. 精讲蓝牙协议栈&#xff08;Bluetooth Stack&#xff09;&#xff1a;SPP/A2DP/AVRCP/HFP/PBAP/IAP2/HID/MAP/OPP/PAN/GATTC/GATTS/HOGP等协议理论 2. 欢迎大家关注和订阅&#xff0c;【蓝牙协议栈】和【Android Bluetooth Stack】专栏会持续更新中.....敬请期待&#xff01…

VS Code 跳板机登录服务器(手打密码+秘钥登录)

目录 0.为什么要用跳班机登陆服务器&#xff1f; 1.VS Code插件安装及ssh安装 2.密码链接方式 1&#xff09;添加ssh设置&#xff0c;设置主机 2)设置跳板机 Tips:可以直接通过窗口连接文件管理 3.密钥连接方式&#xff08;更安全更方便&#xff09; 1&#xff09;mac版…

C# 对App.config、Web.config的appSettings节点数据进行加密

appSettings加密原因&#xff0c;就是因为容易暴露服务器账号和密码&#xff0c;而且客户也不允许 使用ASP.NET提供的命令工具aspnet_regiis来创建加密命令&#xff1b;aspnet_regiis是提供了直接对配置文件加密的功能的&#xff1b;并且使用aspnet_regiis加密的配置节点在读取…

部署Zabbix Agents添加使能监测服务器_Linux平台_Yum源/Archive多模式

Linux平台 一、从yum源脚本安装部署Zabbix-Agent,添加Linux Servers/PC 概述 Zabbix 主要有以下几个组件组成: Zabbix Server:Zabbix 服务端,Zabbix的核心组件,它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库中。 Zabbix Agent:Zabbix客户端,部署在被监…

使用C语言采用概率分析与随机算法求解特征序列长度下界-以抛硬币问题为例

使用C语言采用概率分析与随机算法求解特征序列长度下界 总结 在概率论与随机算法的研究中&#xff0c;我们经常遇到需要求解某类特定事件发生的概率问题。特别是在处理大量独立随机试验时&#xff0c;如何准确评估某类特殊事件&#xff08;如连续正面特征序列&#xff09;出现的…

asp.net mvc 重新引导视图路径,改变视图路径

asp.net mvc 重新引导视图路径&#xff0c;改变视图路径 使用指定的控制器上下文和母版视图名称来查找指定的视图 通过本文学习&#xff0c;你可以根据该技法&#xff0c;去实现&#xff0c;站点自定义皮肤&#xff0c;手机站和电脑站&#xff0c;其他设备站点&#xff0c;在不…

Python核心编程 --- 高级数据类型

Python核心编程 — 高级数据类型 字符串 列表 元组 字典 1.序列 序列&#xff1a;一组按顺序排列的数据集合。 在Python中存在三种内置的序列类型&#xff1a;字符串、列表、元组 优点&#xff1a;可支持索引和切片操作 特点&#xff1a;第一个正索引为0&#xff0c;指…

基于python+vue学生作业管理系统flask-django-nodejs-php

快速发展的社会中&#xff0c;人们的生活水平都在提高&#xff0c;生活节奏也在逐渐加快。为了节省时间和提高工作效率&#xff0c;越来越多的人选择利用互联网进行线上打理各种事务&#xff0c;然后线上管理系统也就相继涌现。与此同时&#xff0c;人们开始接受方便的生活方式…

【深度学习】基于机器学习的无机钙钛矿材料形成能预测,预测形成能,神经网络,回归问题

文章目录 任务分析数据处理处理离散数值处理缺失值处理不同范围的数据其他注意事项 我们的数据处理模型训练网页web代码、指导 任务分析 简单来说&#xff0c;就是一行就是一个样本&#xff0c;要用绿色的9个数值&#xff0c;预测出红色的那1个数值。 数据处理 在进行深度数…

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

为什么要写这么一篇介绍ArcGis的文章呢&#xff1f;因为大部分人也包括ArcGisdada&#xff0c;在使用ArcMap应用程序创建工程时总以为我们就是使用了ArcGis这个软件的所有。其实不然&#xff0c;在后期的接触和使用中慢慢发现原来ArcMap只是ArcGis这个综合平台的一部分&#xf…

现在阿里云云服务器租用多少钱?一张表,报价单

2024年阿里云服务器优惠价格表&#xff0c;一张表整理阿里云服务器最新报价&#xff0c;阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单&#xff0c;大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

<c语言学习>结构体

结构体类型 为什么要有结构体 我们用c语言描述年龄时候&#xff0c;可以定义一个整形类型来实现&#xff1a; int age; age 18; printf("年龄为%d",age); (c语言描述年龄) 由于年龄这一属性比较单一&#xff0c;类似性别、某游戏角色攻击力、血量都可以用c语言内置…

string类详解及重要函数实现

&#x1fa90;&#x1fa90;&#x1fa90;欢迎来到程序员餐厅&#x1f4ab;&#x1f4ab;&#x1f4ab; 今日主菜&#xff1a;string类 主厨&#xff1a;邪王真眼 所属专栏&#xff1a;c专栏 主厨的主页&#xff1a;Chef‘s blog 前言&#xff1a; 咱们之前也是…

第十三届蓝桥杯物联网试题(省赛)

做后感悟&#xff1a; OLED显示函数需要一直显示&#xff0c;所以在主函数中要一直循环&#xff0c;为了确保这个检错功能error只输出一次&#xff0c;最好用中断串口进行接收数据&#xff0c;数据收完后自动进入中断函数中&#xff0c;做一次数据检查就好了&#xff0c;该开灯…

银行数字人民币系统应用架构设计

2019年10月&#xff0c;01区块链联合数字资产研究院发布了《人民币3.0&#xff1a;中国央行数字货币运行框架与技术解析》&#xff0c;从数字货币界定和人民币发展历程出发&#xff0c;区分了央行数字货币与比特币、移动支付等的区别&#xff0c;全面介绍了央行数字货币的发展历…

Linux设备驱动开发 - 三色LED呼吸灯分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…

代码+视频,R语言logistic回归交互项(交互作用)的可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技&#xff0c;几乎在高分的SCI中必出现&#xff0c;因为把人群分为亚组后再进行统计可以增强文章结果的可靠性&#xff0c;不仅如此&#xff0c;交互作用还可以使用来进行数据挖掘。在既往文章中&#xff0c;我们已…