数据库基础知识汇总(一)

article/2025/10/22 0:53:45

五个基本的关系代数操作

  • 并、差、笛卡尔积、选择、投影

数据库语言四大类

  • DQL(Data Query Language):数据库查询语言。

  • DDL(Data Definition Language):数据库定义语言。定义关系模式、删除关系、修改关系模式。

    • 关系、属性
  • DML(Data Manipulation Language):数据库操纵语言。插入元组、删除元组、修改元组。

    • 元组
  • DCL(Data Control Language):数据库控制语言。用来授权或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果。

    • GRANT、revoke
    • commit / rollback work

完整性

  • 实体完整性:要求每个关系(表)有且仅有一个主键,每一个主键值必须唯一,而且不允许为“空”(NULL)或重复。

    • 主键
  • 参照完整性:对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一,就会影响数据的完整性。如删除父表的某记录后,子表的相应记录未删除,致使这些记录称为孤立记录。对于更新、插入或删除表间数据的完整性。

    • 外键
  • 自定义完整性

基础操作

  • 创建关系
create table instructor2(id char(5) not null,name varchar(20) not null,dept_name varchar(20) not null,salary numeric(8,2),primary key(id)
);

结果如图。可看出对属性进行了相关定义。

这里写图片描述

  • 插入元组

    • insert into 关系名 values(每个属性对应的值);
insert into instructor2 values(00001,'ai','math',2500.37);
insert into instructor2 values(00002,'la','math',3700.89);
insert into instructor2 values(00003,'bi','math',5400.45);
insert into instructor2 values(00004,'ma','english',1450.23);
insert into instructor2 values(00005,'ye','english',3421.34);
insert into instructor2 values(00006,'er','technology',10000.65);

结果如图

这里写图片描述

  • 删除所有元组

    • delete from 关系名;
      • 删除了元组,但关系和属性还存在。
        这里写图片描述
  • 删除关系

    • drop table 关系名;
      • 删除了关系,进行select查询时会出现关系名无效的错误。
        这里写图片描述
  • 属性操作

    • alter table 关系名 add 新属性 数据类型,新属性 数据类型,

      • 例:alter table instructor2 add firstname varchar(20),lastname varchar(20);
        这里写图片描述
    • alter table 关系名 drop 属性,

      • 例:alter table instructor2 drop firstname ,lastname ;
  • 查询语句基础结构

    • select对应投影 Π Π
    • from对应笛卡尔积
    • where对应选择 σ σ
    • 含义
      • (1).为from子句列出的关系产生笛卡尔积。
      • (2).在(1)的结果上应用where子句中指定的谓词(条件)。
      • (3).对于(2)中的元组,输出select子句中指定的属性。
select *(属性1,属性2...)
from 关系名1,关系名2...
where 条件1 and 条件2 and ...;

select id,name,salary
from instructor2
where salary>4000;

结果如下

这里写图片描述

  • 去重操作(distinct)

    • 对于一些属性来说,在某些元组中存在相同的值,有时我们需要对结果去重,得到正确答案。
select distinct 属性名
from 关系名
where 条件

例如:当我们想要查看系名时,多个老师可能位于同一个系,不去重将产生下列结果:

这里写图片描述

显然这不是我们想要的答案。我们只需要知道存在哪些系,而无需知道个数:

这里写图片描述

  • 更名操作(as)

    • 优点
      • 方便:长名字变短名字,便于书写语句。
      • 同一关系笛卡尔积:区分属性。
    • 对属性:
    • 对关系:
select 属性 as 属性别名
from 关系名
where 条件
select 属性
from 关系名 as 关系别名
where 条件

例:属性别名

select name as instructor_name,salary
from instructor2
where salary>3500;

结果如下


这里写图片描述

例:关系别名

select i1.id,i2.name
from instructor2 as i1,instructor2 as i2
where i1.id=i2.id and i2.salary>3500;

结果如下

这里写图片描述

  • 字符串运算(like)

    • SQL使用一对单引号来标示字符串,例‘math’。
    • 百分号(%):匹配任意子串
    • 下划线(_):匹配任意一个字符
select 属性
from 关系名
where 属性 like '字符形式';

select *
from instructor2
where salary like '%0_.%';

结果如下

这里写图片描述

  • 显示次序(order by)

    • 默认升序:asc
    • 降序:desc
select 属性
from 关系名
where 条件
order by 属性 升序/降序;

select *
from instructor2
order by salary desc;

结果如下

这里写图片描述

  • between and

    • 属性值介于某个范围内
select *
from instructor2
where 属性名 between ... and ... ;

select *
from instructor2
where salary between 3000 and 6000;

结果如下

这里写图片描述

  • 分组聚集(group by)

    • 聚集函数:平均值(avg)、最小值(min)、最大值(max)、总和(sum)、计数(count)。
    • 出现在select语句中但没有被聚集的属性只能是出现在group by子句中的属性
    • 错误查询
select dept_name,id,avg(salary)
from instructor2
group by dept_name;

结果如下

这里写图片描述

  • having子句(出现group by时使用)

    • 有group by时,select 和 having子句中出现的属性有所限制
    • 任何出现在having子句中,但没有被聚集的属性必须出现在group by子句中。
    • 正确查询
select dept_name,avg(salary) as avg_salary
from instructor2
group by dept_name
having avg(salary)>3000

结果如下

这里写图片描述

  • 集合成员资格

    • in:测试元组是否是集合的成员
    • not in:测试元组是否不是集合的成员
    • in和 not in 操作符用于枚举集合
select *
from instructor2
where name not in('ai','ye','er');

结果如下

这里写图片描述

例: 注意内层查询语句的select对应的属性应与外层查询语句的where对应的属相同

select *
from instructor2
where name in (select namefrom instructor2where salary>3000);

过程:相当于两层for循环

这里写图片描述
结果如下
这里写图片描述

  • 集合的比较

    • > > some:至少比某一个要大
    • >all:比所有的都大。
    • > > some、<some、 >= >= some、 <= <= <script type="math/tex" id="MathJax-Element-47"><=</script>some、 <> <> <script type="math/tex" id="MathJax-Element-48"><></script>some
    • > > all、<all、 >= >= all、 < < <script type="math/tex" id="MathJax-Element-52"><</script>all、 < < <script type="math/tex" id="MathJax-Element-53"><</script>all
    • = = some等价于in,<>some并不等价于not in
    • <> <> <script type="math/tex" id="MathJax-Element-56"><></script>all等价于not in, = = all不等价于in

例:查询工资大于3000的教师姓名

select *
from instructor2
where name =some(select namefrom instructor2where salary>3000);

结果如下

这里写图片描述

例:查询工资小于等于3000的教师姓名

select *
from instructor2
where name <>all(select namefrom instructor2where salary>3000);

结果如下

这里写图片描述

错误查询实例
例:查询工资小于等于3000的教师姓名

select *
from instructor2
where name <>some(select namefrom instructor2where salary>3000);

结果如下(分析:内层查询中只要有一条元组的salary>3000并且name和外层查询name值不相等即可)

这里写图片描述

例:查询工资大于3000的教师姓名

select *
from instructor2
where name =all(select namefrom instructor2where salary>3000);

结果如下(分析:内层查询中满足salary>3000的所有元组的name都和外层查询name值相等才可以)

这里写图片描述

  • 空关系测试(exists)

    • 存在exists是相对于某一条元组,因而子查询中是select *

例:查询在2009年秋季学期和2010年春季学期同时开课的所有课程

select course_id
from section as S
where semester='Fall' and year=2009 and exists(select *from section as Twhere semester='Spring' and year=2010and S.course_id=T.course_id);
  • 删除某些元组

例:从instructor关系中删除与‘math’系教师有关的所有元组

delete from instructor
where dept_name='math';
  • 删除所有元组
delete from instructor;
  • 删除的特殊情况

    • 内层语句只有一条元组。

例:删除工资低于大学平均工资的教师记录。

delete from instructor2
where salary < (select avg(salary)from instructor2);select *
from instructor2;

结果如下

这里写图片描述

  • 插入一些元组

    • insert into 关系名 values();一次只能插入一条元组。
      • insert into 关系名 selec查询语句可一次性插入多条。

insert into instructor2select id,name,dept_name,18000from studentwhere dept_name='math';
  • 更新元组
update 关系名
set 语句
where 条件;

例:只给工资低于7000元的教师涨工资。

update instructor2
set salary=salary*1.05;
where salary<7000;

例:给工资低的教师涨5%,大于7000的涨3%

update instructor2
set salary=casewhen salary<=7000 then salary*1.05else salary*1.03end

http://chatgpt.dhexx.cn/article/mh9c564g.shtml

相关文章

【MySQL】数据库基础知识

文章目录 一. 什么是数据库二. 为什么要有数据库三. 数据库分类四. 数据库的基本使用1. MySQL安装2. 检查MySQL后端服务器是否启动3. 连接MySQL服务器4. 服务器&#xff0c;数据库&#xff0c;表关系5. 数据存储逻辑 五. MySQL体系结构六. SQL语句分类七. 存储引擎 一. 什么是数…

【数据库系列】数据库基本知识点整理

文章目录 一.基本概念1.数据模型2.主键与外键3.事务4.索引5.视图 二.SQL语句1.数据定义1&#xff09;CREATE TABLE2&#xff09;ALTER TABLE3&#xff09;DROP TABLE 2.数据查询1&#xff09;SELECT2&#xff09;WHERE3&#xff09;ORDER BY4&#xff09;LIMIT5&#xff09;聚集…

数据库存储过程(全网最全)

一、存储过程的概念 存储过程是定义在服务器上的一段子程序代码&#xff0c;存储过程时数据库对象之一。 存储过程在服务器端运行&#xff0c;需要时调用&#xff0c;执行速度快&#xff0c;方便使用确保数据库的安全&#xff0c;存储过程可以完成所有的数据库操作降低网络负…

手把手教你轻松学会数据库存储数据类型(数据库入门必看)

数据库存储数据类型 目录 数据类型 1 numeric数字类型 2 string 字符串 3 date、time、datetime日期相关类型 4 enum set 复合类型 5 bit 布尔 6 json 7 binary 二进制 1 numeric数字类型 整数&#xff1a; tinyint smallint mediumint int bigint 小数&#xff1a; …

数据库服务器硬件运行环境,数据库存储服务器必须要满足的五大基本要求你知道几个?...

原标题&#xff1a;数据库存储服务器必须要满足的五大基本要求你知道几个&#xff1f; 说到这么多数据库的重要性&#xff0c;如何选择一个可靠稳定的数据库存储服务器呢&#xff1f;我们从五个方面入手&#xff0c;帮助您了解数据库服务器的服务器硬件需求。 选择数据库服务器…

数据库的存储过程

在数据库中建立存储过程主要是能更直观对数据库的表进行一系列操作&#xff0c;如增、删、查、改等。首先在创建的数据库中找到可编程性下的存储过程&#xff0c;右键新建存储过程&#xff1a; 将PROCEDURE后面的全部去除接[dbo].[存储名称]&#xff1a; 然后接as&#xff0c;a…

带你了解数据库的存储过程

目录 一. 存储过程概述 1.1.什么是存储过程 1.2.存储过程的优缺点 二. 存储过程语法 2.1.创建存储过程 2.2.调用存储过程 2.3.删除存储过程 2.4.查看存储过程 三. 存储过程实例 四. 数据库专栏 一. 存储过程概述 1.1.什么是存储过程 存储过程&#xff08;Stored P…

postgreSql 数据库存储目录

我的PostgreSql安装目录为&#xff1a;G:\Apps\PostgreSQL 数据库文件存储在&#xff1a;G:\Apps\PostgreSQL\14\data\base 执行sql查看数据库信息&#xff1a; select oid, datname from pg_database ; --pg_database表存储关于可用数据库的信息 结果如下&#xff1a;oid对应…

Mysql数据库存储emoji表情

一、起源 我想让我的新闻评论内容能更加丰富~话不多说。 &#xff08;1&#xff09;改变Navicat中的字段的字符集 然后发现还是没办法存进去正确的emoji表情嘞。&#xff08;失败了&#xff09; &#xff08;2&#xff09;找到mysql数据库配置文件 my.ini 增加&#xff…

达梦数据库存储过程

达梦数据库简单存储过程 文章目录 达梦数据库简单存储过程一、存储过程概述语法 二、达梦数据库简单存储过程编写 一、存储过程概述 存储过程数据库系统中&#xff0c;一组为了完成特定功能的SQL 语句集&#xff0c;它存储在数据库中&#xff0c;一次编译后永久有效&#xff0…

【学习笔记】25、关系数据库存储

关系数据库存储 一、关系数据库介绍 关系型数据库&#xff0c;是指采用了关系模型来组织数据的数据库&#xff0c;其以行和列的形式存储数据&#xff0c;以便于用户理解&#xff0c;关系型数据库这一系列的行和列被称为表&#xff0c;一组表组成了数据库。用户通过查询来检索数…

数据库存储图片路径并显示到前端

数据库存储图片路径并显示到前端 -为啥不直接存图片&#xff1a;因为图片本身太大了&#xff0c;虽然存取方便了程序员&#xff0c;但对数据库不友好。所以采取存取路径&#xff0c;再根据路径解析的方法。 一、数据库表设计&#xff1a; 从以上思想出发&#xff0c;需要存图…

SQL Server数据库基础知识——数据库存储过程怎么写

SQL Server数据库基础知识 存储过程概述 什么是存储过程&#xff1f; 存储过程的种类 如何创建、修改、删除、调用存储过程&#xff1f; 存储过程的优缺点 存储过程和触发器的区别? 存储过程和函数的区别? 存储过程的使用 1. 什么是存储过程&#xff1f; 存储过程是…

GaussDB数据库存储过程介绍

文章目录 一、前言二、GaussDB中的定义三、存储过程的使用场景四、存储过程的使用优缺点五、存储过程的示例及示例解析1、GaussDB存储过程语法格式2、GaussDB存储过程语法示例3、存储过程的调用方法 七、总结 一、前言 华为云数据库GaussDB是一款高性能、高安全性的云原生数据…

查看当前数据库存储引擎

一&#xff1a;查看当前数据库支持的存储引擎 show ENGINES; 二:查看指定数据库所有表使用的存储引擎 使用 show table status from dbname;命令&#xff0c;可以查看指定数据库所有表使用的存储引擎&#xff0c;其中“dbname”为数据库名。 show table status from 库名; 三…

数据库储存Excel表信息

目录 目标 实验背景 原理 具体实现 目标 以Java程序为中介&#xff0c;将Excel表中的信息储存到Mysql数据库中 实验背景 先需要将一张包含学生和老师信息的Excel表中的数据存储到Mysql数据库中 原理 先通过相关jar包的类从Excel表中读取到信息&#xff0c;接着对这些信息…

数据库之存储

无论是什么数据库&#xff0c;其本质还是以数据的形式存储在计算机的物理介质上的&#xff0c;所以&#xff0c;我们先来看看什么是物理存储介质。 物理存储介质:高速缓冲存储器->主存储器->快闪存储器->磁盘->光盘->磁带,从左到右性能由高到低&#xff0c;价格…

数据库存储介绍

数据存储在存储设备中&#xff0c;在实际应用中&#xff0c;有多种存储设备&#xff0c;下面我们一一介绍。同时在保存数据时&#xff0c;有特定的组织方式&#xff0c;在下面我也做简单介绍。 一 存储设备介绍 1.1 高速缓存 Cache&#xff0c;计算机拥有1M或跟多的高速…

Excel|给某一列添加同一个字

如图所示给新型冠状病毒肺炎数据中“武汉”这一列都加上“市”字&#xff1a; 先在D列打两行&#xff1a;“武汉市”、“孝感市” 然后在D3按CtrlE&#xff0c;即可全部填充 ps:如果删除某列同一个字的话用替换即可

鼠标单击就选中一个字的解决办法

有时候我们想在两个字中间插入一个字&#xff0c;点击鼠标时却总是选中一个字。 解决办法&#xff1a; 按一下键盘的Insert键就好了。 造成这种情况的原因&#xff1a;极大可能是因为我们删除文字时不小心碰到了Insert键。 看完如果对你有帮助&#xff0c;感谢点赞支持&…