数据库系统理论——关系数据库标准语言SQL

文章目录

  • 一、数据定义
    • 1、基本表的定义、删除与修改
    • 2、索引的建立于删除(了解)
  • 二、数据查询(会其中一种)
    • 1、单表查询
      • (1)这里出现重复元组,怎么处理??
      • (2)between。。。。and
      • (3)语法IN
      • (4) 拓展
      • (5)字符
        • like
        • 姓氏 % _ p95
      • (6)关于空值的讨论
      • (7)多重查询
      • (8) order by子句
      • (9)聚集函数
      • (10)group by子句
    • 2、连接查询
    • 3、嵌套查询(exist不考)
  • 三、数据更新
    • 1、插入数据
    • 2、修改数据
    • 3、删除数据
  • 四、空值的处理
  • 五、视图
    • 1、视图的定义

前言:本章正式学习sql语言的语法,学习完本章之后,要能够对基本表进行增删改查,定义视图。

一、数据定义

1、基本表的定义、删除与修改

在这里插入图片描述
在这里插入图片描述
这里需要注意的是列级完整型约束条件与表级完整性约束。
看几个例子:
1、建立student基本表

CREATE TABLE STUDENT
(
SNO CHAR(9) PRIMARY KEY,   //这里是列级完整性约束,说明sno是主码
SNAME CHAR(20) UNIQUE,  //表示SNAME是唯一值
SSEX CHAR(2),
SAGE SMALLINT,
SDEPT CHAR(20)
);

2、建立课程表

CREATE TABLE COURSE
(
CNO CHAR(4) PRIMARY KEY,
CNAME CHAR(40) NOT NULL,
CPNO CHAR(4), 
CCREDIT SMALLINT,
FOREIGN KEY(CPNO) REFERENCES COUESE(CNO)
/*表级完整性约束,CPNO是外码,被参照表是course,被参照列是cno*/ 
);

本例子说明参照表与被参照表可以是一样的。
3、建立学生选课表

CREATE TABLE SC
(
SNO CHAR(10),
CON CHAR(4),
GRADE SMALLINT,
PRIMARY KEY (SNO,CNO),/*主码是由属性组构成,两个属性共同构成主码*/
FOREIGN KEY (SNO) REFERENCES STUDENT(SNO), 
/*sno为外码,student为被参照表*/
FOREIGN KEY (CNO) REFERENCES COURSE (CNO),
/*cno为外码,course是被参照表*/
CHECK(GRADE BETWEEN 0 AND 100)
);

基本表的修改:
定义格式:
在这里插入图片描述
(1)增加基本表的属性

/*ALTER TABLE (表名) ADD (属性名) (属性类型);*/
ALTER TABLE STU ADD BIRTHDAY DATE;

(2)修改基本表某些属性类型

/*ALTER TABLE (表名) ALTER COLUMN (属性名) (属性类型);*/
ALTER TABLE STU ALTER COLUMN SNO INT;

(3)增加基本表某些属性约束条件

/*ALTER TABLE (属性名) ADD (约束条件)(属性名)*/
ALTER TABLE STU ADD UNIQUE(SNO);

基本的删除

DROP TABLE <表名> [RESTRICT|CASCADE];
/*
当用restrict时,视图不会一起删除
当用cascade时,视图会一起被删除
*/

2、索引的建立于删除(了解)

索引是内模式的范畴,而基本表是模式(逻辑模式,概念模式),视图时外模式或子模式的范畴。
书上p88;

二、数据查询(会其中一种)

在这里插入图片描述

1、单表查询

在这里插入图片描述
说明:别名起在原属性后面;
在这里插入图片描述

(1)这里出现重复元组,怎么处理??

SELECT DISTINCT SNO FROM SC;
/*这里在sno属性前面加上了约束项,distinct即为去重重复元组,否则就默认all,显示所有*/

在这里插入图片描述

(2)between。。。。and

在这里插入图片描述
注意:这里查询的where语句,不要和基本表的定义中的cheak()子句搞混!!!
如果要查找不在20~23岁的学生,则按照下面写:

SELECT SNAME,SDEPT,SAGE
FROM STUDENT
WHERE SAGE NOT BETWEEN 20 AND 23;

在前面加上not即可;

(3)语法IN

在这里插入图片描述

SELECT SNAME,SSEX
FROM STUDENT
WHERE SDEPT IN('CS','MA','IS');
/*
要是这里题目是不在这些系里面的学生,只需要把最后一个where子句改了即可
WHERE SDEPT NOT IN('CS','MA','IS');
*/

(4) 拓展

这里说一下,有两个语句的区别,效率哪一高,大家判断一下?

SELECT *
FROM STU;

SELECT SNAME,SAGE
FROM STU;

这里我们认为时第二种效率高一些,无需知道原因,了解即可!

(5)字符

like
/*like与“=”是一样的作用*/
SELECT *
FROM STU
WHERE SNO='21230202';
WHERE SNO LIKE '21230202';

姓氏 % _ p95

(6)关于空值的讨论

在这里插入图片描述

(7)多重查询

在这里插入图片描述

SELECT SNAM
FROM STUDENT
WHERE SDEPT='CS' AND SAGE<20;

在这里插入图片描述
在这里插入图片描述
解释:这里用的是“or”,是指,“或者”的意思,三个系别的学生全部投影出来!

(8) order by子句

在这里插入图片描述
在这里插入图片描述

SELECT SNO,GRADE
FROM SC
WHERE CNO=3ORDER BY GRADE DESC;/*降序:desc,升序:asc,这里升序可不写,因为默认就是升序*/

在这里插入图片描述
在这里插入图片描述

SELECT *
FROM STUDENT
ORDER BY SDEPT,SAGE DESC;
/*
说明:这里出现sdept是升序,sgae是降序,那么他们内部逻辑是什么,是同时起作用还是有先后???
【分析】
当sdept一直时,此时才会看sage
即为,sdept一致的前提下,sage再按照降序来排序。
*/

(9)聚集函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(10)group by子句

group by (属性);

将属性分组,即将相同的属性值放在一起,即一个组;
在这里插入图片描述
说明:按照学号分组,并且having后面加上聚集函数,来约束,寻找选修课程大于等于三的学号。聚集函数是作用在已经分好组的上面!!
在这里插入图片描述
在这里插入图片描述
特别注意:这里需要说明一下,select后面跟着的属性要与group by后面的一致。

2、连接查询

(1)

SELECT <>
FROM<>
WHERE <表名1>.<属性名1>==<表名2>.<属性名2>

这里的where通过如上格式将两个表连接起来,等于号左右是两个表的公共属性;
在这里插入图片描述
(2)
在where子句中也可以连接和查询一起加约束。
在这里插入图片描述

3、嵌套查询(exist不考)

在这里插入图片描述
此查询可以分为两步:
第一步查询刘晨的系名
第二步来用IN
合并为:

SELECT SNAME,SNO,SDEPT
FROM STUDENT
WHERE SDEPT IN(
SELECT SDEPT
FROM STUDENT
WHERE SNAME='刘晨'
);

在这里插入图片描述
这里也可以用连接查询:

select student.sno,sname
from student,course,sc
where student.sno=sc.sno and sc.sno=course.sno and cname='信息系统';

三、数据更新

1、插入数据

INSERT 
INTO()
VALUES()

stu(sname,ssex,sno)
例子:
(1)在stu表里面加入一个学生,姓名,韩,性别,男,学号2123

INSERT 
INTO STU(sname,ssex,sno)/*括号里面可写可不写,因为这里插入的数据与原关系模式属性一致*/
VALUES (‘韩’,‘男’,2123)

(2)在stu表里面加入一个学生,姓名,韩,性别,男

INSERT 
INTO STU(sname,ssex)
VALUES (‘韩’,‘男’)/*这里再第三个属性显示时,会自动补上null*/

INSERT 
INTO STU(sname,ssex,sno)/*如果这里是关系里面全部属性,而学号还不知道,则在插入时加上null*/
VALUES (‘韩’,‘男’,null)

2、修改数据

update <table>
set 
where

例子1:修改一个名为张三的学生的学号

UPDATE STU
SET SNO='2222'
WHERE SNAME=张三;

例子2:将所有同学分数加10分

UPDATE SC
SET SGRADE=SGRADE + 10;

3、删除数据

DELETE FROM <TABLE>
WHERE

例子:删除张三的信息

DELETE FROM STU
WHERE SNAME=ZHANGSAN;

DELETE FROM STU;/*删除所有学生*/

四、空值的处理

在这里插入图片描述

五、视图

1、视图的定义

CREATE VIEW
AS  <子查询>

注意:子查询一般用于连接查询,因为只要from后面跟着两个或两个以上的表,就要用连接查询,把他们的公共属性连接起来。

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

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

相关文章

39-5 入侵检测系统(IDS)- 安装配置IDS(第三天安装成功)

官网:Snort Rules and IDS Software Download 参考: (这位大佬分享了安装包下载链接):https://www.cnblogs.com/taoyuanming/p/12722263.html (安装过程参考这位大佬):Snort 安装与配置(CentOS 7)_centos 7 snort-CSDN博客一、安装 IDS(我这里在 CentOS 7 虚拟机中安…

关于一致性,你该知道的事儿(下)

关于一致性&#xff0c;你该知道的事儿&#xff08;下&#xff09; 前言一、并发修改单个对象1.1 原子写操作1.2 显示加锁1.3 原子的TestAndSet1.4 版本号机制 二、 多个相关对象的一致性2.1 最大努力实现2.2 2PC && TCCC2.3.基于可靠消息的一致性方案2.4.Saga事务 三、…

Flink container exit 143 问题排查

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

centos7.9系统安全加固

1、限制用户登陆 vim /etc/hosts.deny&#xff0c;若禁止192.168.0.158对服务器进行ssh的登陆&#xff0c;添加如下内容 sshd : 192.168.0.158 添加完毕后就生效了&#xff0c;直接用192.168.0.158访问主机&#xff0c;就无法连接了&#xff0c;显示 Connection closing...Soc…

【密评】 | 商用密码应用安全性评估从业人员考核题库(9/58)

Hill密码是重要古典密码之一&#xff0c;其加密的核心思想的是&#xff08;&#xff09;。 A.线性变换 B.非线性变换 C.循环移位 D.移位 著名的Kerckhoff原则是指&#xff08;&#xff09;。 A.系统的保密性不但依赖于对加密体制或算法的保密&#xff0c;而且依赖于密钥 B.系统…

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果&#xff1f; monitorenter&#xff1a; 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象&#xff0c;将锁记录位状态改为10 monitorexit&#xff1a; 将锁对象对象头中Mark Word进行重置&#xff0c;重新恢…

Open CASCADE 教程 – AIS:自定义呈现

文章目录 开始 (Getting Started)呈现构建器 (Presentation builders)基元数组 (Primitive arrays)基元外观 (Primitive aspects)二次构建器 (Quadric builders)计算选择 (Computing selection)突出显示选择所有者 (Highlighting selection owner)突出显示的方法 (Highlighting…

【网站项目】SpringBoot796水产养殖系统

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

vi\vim编辑器

root用户&#xff08;超级管理员&#xff09; 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中&#xff0c;拥有最大权限的账户名为&#xff1a;root&#xff08;超级管理员&#xff09; root用户拥有最大的系统操作权限&#xff0c;而普通…

改进YOLOv5,YOLOv5+CBAM注意力机制

目录 1. 目标检测模型 2. YOLOv5s 3. YOLOv5s融合注意力机制 4. 修改yolov5.yaml文件 5. ChannelAttentionModule.py 6. 修改yolo.py 1. 目标检测模型 目标检测算法现在已经在实际中广泛应用&#xff0c;其目的是找出图像中感兴趣的对象&#xff0c;并确定对象的类别和位…

牛客NC343 和大于等于K的最短子数组【困难 前缀和 Java/Go】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/3e1fd3d19fb0479d94652d49c7e1ead1 思路 本答案利用前缀和解答&#xff0c;Java&#xff0c;Go答案通过&#xff0c;但是同样的代码用PHP的话有一个测试用例超时 应该还有更优秀的答案&#xff0c;后面找到更优…

如何远程操作服务器中的Python编译器并将运行结果返回到Pycharm

文章目录 一、前期准备1. 检查IDE版本是否支持2. 服务器需要开通SSH服务 二、Pycharm本地链接服务器测试1. 配置服务器python解释器 三、使用内网穿透实现异地链接服务器开发1. 服务器安装Cpolar2. 创建远程连接公网地址 四、使用固定TCP地址远程开发 本文主要介绍如何使用Pych…

分布式与一致性协议之PBFT算法(一)

PBFT算法 概述 前面提到了拜占庭将军问题之后&#xff0c;有人可能会感到困惑:口信消息型拜占庭问题直接在实际项目中是如何落地的呢&#xff1f;事实上&#xff0c;它很难在实际项目中落地&#xff0c;因为口信消息型拜占庭问题之解是一个非常理论化的算法&#xff0c;没有与…

C++类的概念以及用法

目录 面向过程和面向对象初步认识类的引入类的定义类的两种定义方式声明和定义全部放在类体中 声名定义分离 类的作用域成员变量命名规则建议访问限定符 类的封装类的实例化类对象模型类的对象大小的计算扩展 结构体内存对齐规则 感谢各位大佬对我的支持,如果我的文章对你有用,…

《Fundamentals of Power Electronics》——转换器的传递函数

转换器的工程设计过程主要由以下几个主要步骤组成&#xff1a; 1. 定义了规范和其他设计目标。 2. 提出了一种电路。这是一个创造性的过程&#xff0c;利用了工程师的物理洞察力和经验。 3. 对电路进行了建模。组件和系统的其他部分适当建模&#xff0c;通常使用供应商提供的…

祝天下母亲节快乐!虚无!——早读(逆天打工人爬取热门微信文章解读)

练功加精力哦 引言Python 代码第一篇 人民日报【夜读】人与人之间最好的关系&#xff1a;遇事靠谱&#xff0c;懂得感恩第二篇 冯站长之家 三分钟新闻早餐结尾 感恩与善行 是人生旅途中的灯塔 怀感恩之心 行小善之事 它们将指引我们走向光明 引言 今天是母亲节 祝天下的所有母…

三星硬盘格式化后怎么恢复数据

在数字化时代&#xff0c;硬盘作为数据存储的核心部件&#xff0c;承载着我们的重要文件、照片、视频等资料。然而&#xff0c;不慎的格式化操作可能使我们失去宝贵的数据。面对这样的困境&#xff0c;许多用户可能会感到无助和焦虑。本文旨在为三星硬盘用户提供格式化后的数据…

【CMU 15-445】Proj4 Concurrency Control

Concurrency Control 通关记录Task1 TimestampsTask2 Storage Format and Sequential ScanTask3 MVCC ExecutorsTask3.1 Insert ExecutorTask3.2 CommitTask3.3 Update and Delete ExecutorTask3.4 Stop-the-world Garbage Collection Task4 Primary Key IndexTask4.0 Index Sc…

vue3 element plus el-date-picker组件在日期上做标识

1.先看效果图,带红点的就是我要做标识的日期 2.直接把代码拿出来就可以用 (1)html部分 <el-date-pickerv-model"startTime"type"datetime"placeholder"选择开始日期"format"YYYY-MM-DD HH:mm"value-format"YYYY-MM-DD HH:mm…

基于ChatGLM+Langchain离线搭建本地知识库(免费)

目录 简介 服务部署 实现本地知识库 测试 番外 简介 ChatGLM-6B是清华大学发布的一个开源的中英双语对话机器人。基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费级的显卡上进行本地部署&#xff08;INT…